mirror of
https://github.com/davatorium/rofi.git
synced 2024-11-18 13:54:36 -05:00
Add -Wshadow to build system. (#2042)
* Add -Wshadow to build system. Issue: #2036 * Take out unintended change * [Icon] Add more descriptive variable name.
This commit is contained in:
parent
df7d8b65f0
commit
9d785b5ce1
13 changed files with 528 additions and 548 deletions
|
@ -59,9 +59,9 @@ icon *icon_create(widget *parent, const char *name);
|
|||
void icon_set_size(widget *icon, const int size);
|
||||
|
||||
/**
|
||||
* @param icon The icon widget handle.
|
||||
* @param icon_widget The icon widget handle.
|
||||
* @param surf The surface to display.
|
||||
*/
|
||||
void icon_set_surface(icon *icon, cairo_surface_t *surf);
|
||||
void icon_set_surface(icon *icon_widget, cairo_surface_t *surf);
|
||||
/**@}*/
|
||||
#endif // ROFI_ICON_H
|
||||
|
|
|
@ -85,7 +85,7 @@ typedef enum {
|
|||
} WidgetTriggerActionResult;
|
||||
|
||||
/**
|
||||
* @param widget The container widget itself
|
||||
* @param wid The container widget itself
|
||||
* @param type The widget type searched for
|
||||
* @param x The X coordination of the mouse event relative to #widget
|
||||
* @param y The Y coordination of the mouse event relative to #widget
|
||||
|
@ -95,11 +95,11 @@ typedef enum {
|
|||
*
|
||||
* @returns A child widget if found, NULL otherwise
|
||||
*/
|
||||
typedef widget *(*widget_find_mouse_target_cb)(widget *widget, WidgetType type,
|
||||
typedef widget *(*widget_find_mouse_target_cb)(widget *wid, WidgetType type,
|
||||
gint x, gint y);
|
||||
|
||||
/**
|
||||
* @param widget The target widget
|
||||
* @param wid The target widget
|
||||
* @param action The action value (which enum it is depends on the widget type)
|
||||
* @param x The X coordination of the mouse event relative to #widget
|
||||
* @param y The Y coordination of the mouse event relative to #widget
|
||||
|
@ -110,7 +110,7 @@ typedef widget *(*widget_find_mouse_target_cb)(widget *widget, WidgetType type,
|
|||
*
|
||||
* @returns Whether the action was handled or not, see enum values for details
|
||||
*/
|
||||
typedef WidgetTriggerActionResult (*widget_trigger_action_cb)(widget *widget,
|
||||
typedef WidgetTriggerActionResult (*widget_trigger_action_cb)(widget *wid,
|
||||
guint action,
|
||||
gint x, gint y,
|
||||
void *user_data);
|
||||
|
@ -119,7 +119,7 @@ typedef WidgetTriggerActionResult (*widget_trigger_action_cb)(widget *widget,
|
|||
#define WIDGET(a) ((widget *)(a))
|
||||
|
||||
/**
|
||||
* @param widget The widget to check
|
||||
* @param wid The widget to check
|
||||
* @param x The X position relative to parent window
|
||||
* @param y the Y position relative to parent window
|
||||
*
|
||||
|
@ -127,65 +127,63 @@ typedef WidgetTriggerActionResult (*widget_trigger_action_cb)(widget *widget,
|
|||
*
|
||||
* @return TRUE if x,y falls within the widget
|
||||
*/
|
||||
int widget_intersect(const widget *widget, int x, int y);
|
||||
int widget_intersect(const widget *wid, int x, int y);
|
||||
|
||||
/**
|
||||
* @param widget The widget to move
|
||||
* @param wid The widget to move
|
||||
* @param x The new X position relative to parent window
|
||||
* @param y The new Y position relative to parent window
|
||||
*
|
||||
* Moves the widget.
|
||||
*/
|
||||
void widget_move(widget *widget, short x, short y);
|
||||
void widget_move(widget *wid, short x, short y);
|
||||
|
||||
/**
|
||||
* @param widget Handle to widget
|
||||
* @param wid Handle to widget
|
||||
* @param type The widget type.
|
||||
*
|
||||
* Set the widget type.
|
||||
*/
|
||||
void widget_set_type(widget *widget, WidgetType type);
|
||||
void widget_set_type(widget *wid, WidgetType type);
|
||||
|
||||
/**
|
||||
* @param widget Handle to widget
|
||||
* @param wid Handle to widget
|
||||
*
|
||||
* Check if widget is enabled.
|
||||
* @returns TRUE when widget is enabled.
|
||||
*/
|
||||
gboolean widget_enabled(widget *widget);
|
||||
gboolean widget_enabled(widget *wid);
|
||||
|
||||
/**
|
||||
* @param widget Handle to widget
|
||||
* @param wid Handle to widget
|
||||
* @param enabled The new state
|
||||
*
|
||||
* Disable the widget.
|
||||
*/
|
||||
void widget_set_enabled(widget *widget, gboolean enabled);
|
||||
void widget_set_enabled(widget *wid, gboolean enabled);
|
||||
|
||||
/**
|
||||
* @param widget Handle to widget
|
||||
* @param wid Handle to widget
|
||||
*
|
||||
* Disable the widget.
|
||||
*/
|
||||
static inline void widget_disable(widget *widget) {
|
||||
widget_set_enabled(widget, FALSE);
|
||||
static inline void widget_disable(widget *wid) {
|
||||
widget_set_enabled(wid, FALSE);
|
||||
}
|
||||
/**
|
||||
* @param widget Handle to widget
|
||||
* @param wid Handle to widget
|
||||
*
|
||||
* Enable the widget.
|
||||
*/
|
||||
static inline void widget_enable(widget *widget) {
|
||||
widget_set_enabled(widget, TRUE);
|
||||
}
|
||||
static inline void widget_enable(widget *wid) { widget_set_enabled(wid, TRUE); }
|
||||
|
||||
/**
|
||||
* @param widget widget Handle to the widget
|
||||
* @param wid widget Handle to the widget
|
||||
* @param d The cairo object used to draw itself.
|
||||
*
|
||||
* Render the textbox.
|
||||
*/
|
||||
void widget_draw(widget *widget, cairo_t *d);
|
||||
void widget_draw(widget *wid, cairo_t *d);
|
||||
|
||||
/**
|
||||
* @param wid Handle to the widget
|
||||
|
@ -195,58 +193,58 @@ void widget_draw(widget *widget, cairo_t *d);
|
|||
void widget_free(widget *wid);
|
||||
|
||||
/**
|
||||
* @param widget The widget toresize
|
||||
* @param wid The widget toresize
|
||||
* @param w The new width
|
||||
* @param h The new height
|
||||
*
|
||||
* Resizes the widget.
|
||||
*/
|
||||
void widget_resize(widget *widget, short w, short h);
|
||||
void widget_resize(widget *wid, short w, short h);
|
||||
|
||||
/**
|
||||
* @param widget The widget handle
|
||||
* @param wid The widget handle
|
||||
*
|
||||
* @returns the height of the widget.
|
||||
*/
|
||||
int widget_get_height(widget *widget);
|
||||
int widget_get_height(widget *wid);
|
||||
|
||||
/**
|
||||
* @param widget The widget handle
|
||||
* @param wid The widget handle
|
||||
*
|
||||
* @returns the width of the widget.
|
||||
*/
|
||||
int widget_get_width(widget *widget);
|
||||
int widget_get_width(widget *wid);
|
||||
|
||||
/**
|
||||
* @param widget The widget handle
|
||||
* @param wid The widget handle
|
||||
*
|
||||
* @returns the y position of the widget relative to its parent.
|
||||
*/
|
||||
int widget_get_y_pos(widget *widget);
|
||||
int widget_get_y_pos(widget *wid);
|
||||
|
||||
/**
|
||||
* @param widget The widget handle
|
||||
* @param wid The widget handle
|
||||
*
|
||||
* @returns the x position of the widget relative to its parent.
|
||||
*/
|
||||
int widget_get_x_pos(widget *widget);
|
||||
int widget_get_x_pos(widget *wid);
|
||||
|
||||
/**
|
||||
* @param widget The widget handle
|
||||
* @param wid The widget handle
|
||||
* @param x A pointer to the absolute X coordinates
|
||||
* @param y A pointer to the absolute Y coordinates
|
||||
*
|
||||
* Will modify param x and param y to make them relative to param widget .
|
||||
* Will modify param x and param y to make them relative to param wid .
|
||||
*/
|
||||
void widget_xy_to_relative(widget *widget, gint *x, gint *y);
|
||||
void widget_xy_to_relative(widget *wid, gint *x, gint *y);
|
||||
|
||||
/**
|
||||
* @param widget The widget handle
|
||||
* @param wid The widget handle
|
||||
*
|
||||
* Update the widget, and its parent recursively.
|
||||
* This should be called when size of widget changes.
|
||||
*/
|
||||
void widget_update(widget *widget);
|
||||
void widget_update(widget *wid);
|
||||
/**
|
||||
* @param wid The widget handle
|
||||
*
|
||||
|
|
|
@ -362,13 +362,13 @@ t_entry_list T_CONFIGURATION T_BOPEN t_config_property_list_optional T_BCLOSE {
|
|||
| t_entry_list t_name_prefix_optional t_entry_name_path_selectors T_BOPEN t_property_list_optional T_BCLOSE
|
||||
{
|
||||
for ( GList *liter = g_list_first ( $3); liter; liter = g_list_next ( liter ) ) {
|
||||
ThemeWidget *widget = $1;
|
||||
for ( GList *iter = g_list_first ( (GList*)liter->data ); widget && iter ; iter = g_list_next ( iter ) ) {
|
||||
widget = rofi_theme_find_or_create_name ( widget, iter->data );
|
||||
ThemeWidget *wid = $1;
|
||||
for ( GList *iter = g_list_first ( (GList*)liter->data ); wid && iter ; iter = g_list_next ( iter ) ) {
|
||||
wid = rofi_theme_find_or_create_name ( wid, iter->data );
|
||||
}
|
||||
g_list_free_full ( (GList*)liter->data, g_free );
|
||||
widget->set = TRUE;
|
||||
rofi_theme_widget_add_properties ( widget, $5);
|
||||
wid->set = TRUE;
|
||||
rofi_theme_widget_add_properties ( wid, $5);
|
||||
}
|
||||
if ( $5 ) {
|
||||
g_hash_table_destroy ( $5 );
|
||||
|
@ -376,78 +376,78 @@ t_entry_list T_CONFIGURATION T_BOPEN t_config_property_list_optional T_BCLOSE {
|
|||
g_list_free ( $3 );
|
||||
}
|
||||
| t_entry_list T_PDEFAULTS T_BOPEN t_property_list_optional T_BCLOSE {
|
||||
ThemeWidget *widget = rofi_theme_find_or_create_name ( $1, "*" );
|
||||
rofi_theme_widget_add_properties (widget, $4);
|
||||
ThemeWidget *wid = rofi_theme_find_or_create_name ( $1, "*" );
|
||||
rofi_theme_widget_add_properties (wid, $4);
|
||||
if ( $4 ) {
|
||||
g_hash_table_destroy ( $4 );
|
||||
}
|
||||
}
|
||||
| t_entry_list T_MEDIA T_PARENT_LEFT T_MEDIA_TYPE T_PSEP t_property_number T_PARENT_RIGHT T_BOPEN t_entry_list T_BCLOSE {
|
||||
gchar *name = g_strdup_printf("@media ( %s: %f )",$4, $6);
|
||||
ThemeWidget *widget = rofi_theme_find_or_create_name ( $1, name );
|
||||
widget->set = TRUE;
|
||||
widget->media = g_slice_new0(ThemeMedia);
|
||||
widget->media->type = rofi_theme_parse_media_type ( $4 );
|
||||
widget->media->value = $6;
|
||||
ThemeWidget *wid = rofi_theme_find_or_create_name ( $1, name );
|
||||
wid->set = TRUE;
|
||||
wid->media = g_slice_new0(ThemeMedia);
|
||||
wid->media->type = rofi_theme_parse_media_type ( $4 );
|
||||
wid->media->value = $6;
|
||||
for ( unsigned int i = 0; i < $9->num_widgets; i++ ) {
|
||||
ThemeWidget *d = $9->widgets[i];
|
||||
rofi_theme_parse_merge_widgets(widget, d);
|
||||
rofi_theme_parse_merge_widgets(wid, d);
|
||||
}
|
||||
g_free ( $4 );
|
||||
g_free ( name );
|
||||
}
|
||||
| t_entry_list T_MEDIA T_PARENT_LEFT T_MEDIA_TYPE T_PSEP T_INT T_UNIT_PX T_PARENT_RIGHT T_BOPEN t_entry_list T_BCLOSE {
|
||||
gchar *name = g_strdup_printf("@media ( %s: %d px )",$4, $6);
|
||||
ThemeWidget *widget = rofi_theme_find_or_create_name ( $1, name );
|
||||
widget->set = TRUE;
|
||||
widget->media = g_slice_new0(ThemeMedia);
|
||||
widget->media->type = rofi_theme_parse_media_type ( $4 );
|
||||
widget->media->value = (double)$6;
|
||||
ThemeWidget *wid = rofi_theme_find_or_create_name ( $1, name );
|
||||
wid->set = TRUE;
|
||||
wid->media = g_slice_new0(ThemeMedia);
|
||||
wid->media->type = rofi_theme_parse_media_type ( $4 );
|
||||
wid->media->value = (double)$6;
|
||||
for ( unsigned int i = 0; i < $10->num_widgets; i++ ) {
|
||||
ThemeWidget *d = $10->widgets[i];
|
||||
rofi_theme_parse_merge_widgets(widget, d);
|
||||
rofi_theme_parse_merge_widgets(wid, d);
|
||||
}
|
||||
g_free ( $4 );
|
||||
g_free ( name );
|
||||
}
|
||||
| t_entry_list T_MEDIA T_PARENT_LEFT T_MEDIA_TYPE T_PSEP T_BOOLEAN T_PARENT_RIGHT T_BOPEN t_entry_list T_BCLOSE {
|
||||
gchar *name = g_strdup_printf("@media ( %s: %s )",$4, $6?"true":"false");
|
||||
ThemeWidget *widget = rofi_theme_find_or_create_name ( $1, name );
|
||||
widget->set = TRUE;
|
||||
widget->media = g_slice_new0(ThemeMedia);
|
||||
widget->media->type = rofi_theme_parse_media_type ( $4 );
|
||||
widget->media->boolv = $6;
|
||||
ThemeWidget *wid = rofi_theme_find_or_create_name ( $1, name );
|
||||
wid->set = TRUE;
|
||||
wid->media = g_slice_new0(ThemeMedia);
|
||||
wid->media->type = rofi_theme_parse_media_type ( $4 );
|
||||
wid->media->boolv = $6;
|
||||
for ( unsigned int i = 0; i < $9->num_widgets; i++ ) {
|
||||
ThemeWidget *d = $9->widgets[i];
|
||||
rofi_theme_parse_merge_widgets(widget, d);
|
||||
rofi_theme_parse_merge_widgets(wid, d);
|
||||
}
|
||||
g_free ( $4 );
|
||||
g_free ( name );
|
||||
}
|
||||
| t_entry_list T_MEDIA T_PARENT_LEFT T_MEDIA_TYPE T_PSEP T_ENV_START T_PARENT_LEFT T_BOOLEAN T_COMMA T_BOOLEAN T_PARENT_RIGHT T_PARENT_RIGHT T_BOPEN t_entry_list T_BCLOSE {
|
||||
gchar *name = g_strdup_printf("@media ( %s: %s )",$4, $8?"true":"false");
|
||||
ThemeWidget *widget = rofi_theme_find_or_create_name ( $1, name );
|
||||
widget->set = TRUE;
|
||||
widget->media = g_slice_new0(ThemeMedia);
|
||||
widget->media->type = rofi_theme_parse_media_type ( $4 );
|
||||
widget->media->boolv = $8;
|
||||
ThemeWidget *wid = rofi_theme_find_or_create_name ( $1, name );
|
||||
wid->set = TRUE;
|
||||
wid->media = g_slice_new0(ThemeMedia);
|
||||
wid->media->type = rofi_theme_parse_media_type ( $4 );
|
||||
wid->media->boolv = $8;
|
||||
for ( unsigned int i = 0; i < $14->num_widgets; i++ ) {
|
||||
ThemeWidget *d = $14->widgets[i];
|
||||
rofi_theme_parse_merge_widgets(widget, d);
|
||||
rofi_theme_parse_merge_widgets(wid, d);
|
||||
}
|
||||
g_free ( $4 );
|
||||
g_free ( name );
|
||||
}
|
||||
| t_entry_list T_MEDIA T_PARENT_LEFT T_MEDIA_TYPE T_PSEP T_ENV_START T_PARENT_LEFT T_COMMA T_BOOLEAN T_PARENT_RIGHT T_PARENT_RIGHT T_BOPEN t_entry_list T_BCLOSE {
|
||||
gchar *name = g_strdup_printf("@media ( %s: %s )",$4, $9?"true":"false");
|
||||
ThemeWidget *widget = rofi_theme_find_or_create_name ( $1, name );
|
||||
widget->set = TRUE;
|
||||
widget->media = g_slice_new0(ThemeMedia);
|
||||
widget->media->type = rofi_theme_parse_media_type ( $4 );
|
||||
widget->media->boolv = $9;
|
||||
ThemeWidget *wid = rofi_theme_find_or_create_name ( $1, name );
|
||||
wid->set = TRUE;
|
||||
wid->media = g_slice_new0(ThemeMedia);
|
||||
wid->media->type = rofi_theme_parse_media_type ( $4 );
|
||||
wid->media->boolv = $9;
|
||||
for ( unsigned int i = 0; i < $13->num_widgets; i++ ) {
|
||||
ThemeWidget *d = $13->widgets[i];
|
||||
rofi_theme_parse_merge_widgets(widget, d);
|
||||
rofi_theme_parse_merge_widgets(wid, d);
|
||||
}
|
||||
g_free ( $4 );
|
||||
g_free ( name );
|
||||
|
@ -487,10 +487,10 @@ t_config_property
|
|||
{
|
||||
|
||||
for ( GList *iter = g_list_first( $1) ; iter; iter = g_list_next(iter)){
|
||||
ThemeWidget *widget = rofi_configuration;
|
||||
widget = rofi_theme_find_or_create_name ( widget, iter->data );
|
||||
widget->set = TRUE;
|
||||
rofi_theme_widget_add_properties ( widget, $3);
|
||||
ThemeWidget *wid = rofi_configuration;
|
||||
wid = rofi_theme_find_or_create_name ( wid, iter->data );
|
||||
wid->set = TRUE;
|
||||
rofi_theme_widget_add_properties ( wid, $3);
|
||||
}
|
||||
if ( $3 ) {
|
||||
g_hash_table_destroy ( $3 );
|
||||
|
|
|
@ -25,7 +25,8 @@ flags = [
|
|||
'-Wunreachable-code',
|
||||
'-Werror=missing-prototypes',
|
||||
'-Wno-overlength-strings',
|
||||
'-Wno-inline' # A bit too noisy with Bison…
|
||||
'-Wno-inline', # A bit too noisy with Bison…
|
||||
'-Wshadow'
|
||||
]
|
||||
foreach f : flags
|
||||
if c_compiler.has_argument(f)
|
||||
|
|
|
@ -574,14 +574,13 @@ static int dmenu_mode_init(Mode *sw) {
|
|||
Property *p = rofi_theme_property_create(P_INTEGER);
|
||||
p->name = g_strdup("lines");
|
||||
p->value.i = lines;
|
||||
ThemeWidget *widget =
|
||||
rofi_theme_find_or_create_name(rofi_theme, "listview");
|
||||
ThemeWidget *wid = rofi_theme_find_or_create_name(rofi_theme, "listview");
|
||||
GHashTable *table =
|
||||
g_hash_table_new_full(g_str_hash, g_str_equal, NULL,
|
||||
(GDestroyNotify)rofi_theme_property_free);
|
||||
|
||||
g_hash_table_replace(table, p->name, p);
|
||||
rofi_theme_widget_add_properties(widget, table);
|
||||
rofi_theme_widget_add_properties(wid, table);
|
||||
g_hash_table_destroy(table);
|
||||
}
|
||||
|
||||
|
|
|
@ -328,7 +328,8 @@ static void print_main_application_options(int is_term) {
|
|||
"Behave as a normal window. (experimental)", NULL, is_term);
|
||||
print_help_msg("-transient-window", "",
|
||||
"Behave as a modal dialog that is transient to the currently "
|
||||
"focused window. (experimental)", NULL, is_term);
|
||||
"focused window. (experimental)",
|
||||
NULL, is_term);
|
||||
print_help_msg("-show", "[mode]",
|
||||
"Show the mode 'mode' and exit. The mode has to be enabled.",
|
||||
NULL, is_term);
|
||||
|
|
526
source/theme.c
526
source/theme.c
File diff suppressed because it is too large
Load diff
|
@ -572,9 +572,9 @@ static void rofi_view_set_user_timeout(G_GNUC_UNUSED gpointer data) {
|
|||
CacheState.user_timeout =
|
||||
g_timeout_add(delay * 1000, rofi_view_user_timeout, NULL);
|
||||
} else {
|
||||
Property *p = rofi_theme_find_property(wid, P_DOUBLE, "delay", TRUE);
|
||||
if (p != NULL && p->type == P_DOUBLE && p->value.f > 0.01) {
|
||||
double delay = p->value.f;
|
||||
Property *prop = rofi_theme_find_property(wid, P_DOUBLE, "delay", TRUE);
|
||||
if (prop != NULL && prop->type == P_DOUBLE && prop->value.f > 0.01) {
|
||||
double delay = prop->value.f;
|
||||
CacheState.user_timeout =
|
||||
g_timeout_add(delay * 1000, rofi_view_user_timeout, NULL);
|
||||
}
|
||||
|
@ -1305,9 +1305,9 @@ static void selection_changed_callback(G_GNUC_UNUSED listview *lv,
|
|||
int icon_height =
|
||||
widget_get_desired_height(WIDGET(state->icon_current_entry),
|
||||
WIDGET(state->icon_current_entry)->w);
|
||||
cairo_surface_t *icon =
|
||||
cairo_surface_t *surf_icon =
|
||||
mode_get_icon(state->sw, state->line_map[index], icon_height);
|
||||
icon_set_surface(state->icon_current_entry, icon);
|
||||
icon_set_surface(state->icon_current_entry, surf_icon);
|
||||
} else {
|
||||
icon_set_surface(state->icon_current_entry, NULL);
|
||||
}
|
||||
|
@ -1325,9 +1325,9 @@ static void update_callback(textbox *t, icon *ico, unsigned int index,
|
|||
|
||||
if (ico) {
|
||||
int icon_height = widget_get_desired_height(WIDGET(ico), WIDGET(ico)->w);
|
||||
cairo_surface_t *icon =
|
||||
cairo_surface_t *surf_icon =
|
||||
mode_get_icon(state->sw, state->line_map[index], icon_height);
|
||||
icon_set_surface(ico, icon);
|
||||
icon_set_surface(ico, surf_icon);
|
||||
}
|
||||
if (t) {
|
||||
// TODO needed for markup.
|
||||
|
@ -2578,14 +2578,14 @@ int rofi_view_error_dialog(const char *msg, int markup) {
|
|||
state->finalize = process_result;
|
||||
|
||||
state->main_window = box_create(NULL, "window", ROFI_ORIENTATION_VERTICAL);
|
||||
box *box = box_create(WIDGET(state->main_window), "error-message",
|
||||
ROFI_ORIENTATION_VERTICAL);
|
||||
box_add(state->main_window, WIDGET(box), TRUE);
|
||||
box *new_box = box_create(WIDGET(state->main_window), "error-message",
|
||||
ROFI_ORIENTATION_VERTICAL);
|
||||
box_add(state->main_window, WIDGET(new_box), TRUE);
|
||||
state->text =
|
||||
textbox_create(WIDGET(box), WIDGET_TYPE_TEXTBOX_TEXT, "textbox",
|
||||
textbox_create(WIDGET(new_box), WIDGET_TYPE_TEXTBOX_TEXT, "textbox",
|
||||
(TB_AUTOHEIGHT | TB_WRAP) + ((markup) ? TB_MARKUP : 0),
|
||||
NORMAL, (msg != NULL) ? msg : "", 0, 0);
|
||||
box_add(box, WIDGET(state->text), TRUE);
|
||||
box_add(new_box, WIDGET(state->text), TRUE);
|
||||
|
||||
// Make sure we enable fixed num lines when in normal window mode.
|
||||
if ((CacheState.flags & MENU_NORMAL_WINDOW) == MENU_NORMAL_WINDOW) {
|
||||
|
|
|
@ -284,34 +284,34 @@ static void box_free(widget *wid) {
|
|||
g_free(b);
|
||||
}
|
||||
|
||||
void box_add(box *box, widget *child, gboolean expand) {
|
||||
if (box == NULL) {
|
||||
void box_add(box *wid, widget *child, gboolean expand) {
|
||||
if (wid == NULL) {
|
||||
return;
|
||||
}
|
||||
// Make sure box is width/heigh enough.
|
||||
if (box->type == ROFI_ORIENTATION_VERTICAL) {
|
||||
int width = box->widget.w;
|
||||
if (wid->type == ROFI_ORIENTATION_VERTICAL) {
|
||||
int width = wid->widget.w;
|
||||
width =
|
||||
MAX(width, child->w + widget_padding_get_padding_width(WIDGET(box)));
|
||||
box->widget.w = width;
|
||||
MAX(width, child->w + widget_padding_get_padding_width(WIDGET(wid)));
|
||||
wid->widget.w = width;
|
||||
} else {
|
||||
int height = box->widget.h;
|
||||
int height = wid->widget.h;
|
||||
height =
|
||||
MAX(height, child->h + widget_padding_get_padding_height(WIDGET(box)));
|
||||
box->widget.h = height;
|
||||
MAX(height, child->h + widget_padding_get_padding_height(WIDGET(wid)));
|
||||
wid->widget.h = height;
|
||||
}
|
||||
child->expand = rofi_theme_get_boolean(child, "expand", expand);
|
||||
g_assert(child->parent == WIDGET(box));
|
||||
box->children = g_list_append(box->children, (void *)child);
|
||||
widget_update(WIDGET(box));
|
||||
g_assert(child->parent == WIDGET(wid));
|
||||
wid->children = g_list_append(wid->children, (void *)child);
|
||||
widget_update(WIDGET(wid));
|
||||
}
|
||||
|
||||
static void box_resize(widget *widget, short w, short h) {
|
||||
box *b = (box *)widget;
|
||||
static void box_resize(widget *wid, short w, short h) {
|
||||
box *b = (box *)wid;
|
||||
if (b->widget.w != w || b->widget.h != h) {
|
||||
b->widget.w = w;
|
||||
b->widget.h = h;
|
||||
widget_update(widget);
|
||||
widget_update(wid);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -42,13 +42,13 @@ struct _container {
|
|||
|
||||
static void container_update(widget *wid);
|
||||
|
||||
static int container_get_desired_height(widget *widget, const int width) {
|
||||
container *b = (container *)widget;
|
||||
static int container_get_desired_height(widget *wid, const int width) {
|
||||
container *b = (container *)wid;
|
||||
int height = 0;
|
||||
if (b->child) {
|
||||
height += widget_get_desired_height(b->child, width);
|
||||
}
|
||||
height += widget_padding_get_padding_height(widget);
|
||||
height += widget_padding_get_padding_height(wid);
|
||||
return height;
|
||||
}
|
||||
|
||||
|
@ -65,21 +65,21 @@ static void container_free(widget *wid) {
|
|||
g_free(b);
|
||||
}
|
||||
|
||||
void container_add(container *container, widget *child) {
|
||||
if (container == NULL) {
|
||||
void container_add(container *cont, widget *child) {
|
||||
if (cont == NULL) {
|
||||
return;
|
||||
}
|
||||
container->child = child;
|
||||
g_assert(child->parent == WIDGET(container));
|
||||
widget_update(WIDGET(container));
|
||||
cont->child = child;
|
||||
g_assert(child->parent == WIDGET(cont));
|
||||
widget_update(WIDGET(cont));
|
||||
}
|
||||
|
||||
static void container_resize(widget *widget, short w, short h) {
|
||||
container *b = (container *)widget;
|
||||
static void container_resize(widget *wid, short w, short h) {
|
||||
container *b = (container *)wid;
|
||||
if (b->widget.w != w || b->widget.h != h) {
|
||||
b->widget.w = w;
|
||||
b->widget.h = h;
|
||||
widget_update(widget);
|
||||
widget_update(wid);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -53,9 +53,8 @@ struct _icon {
|
|||
cairo_surface_t *icon;
|
||||
};
|
||||
|
||||
static int icon_get_desired_height(widget *widget,
|
||||
G_GNUC_UNUSED const int width) {
|
||||
icon *b = (icon *)widget;
|
||||
static int icon_get_desired_height(widget *wid, G_GNUC_UNUSED const int width) {
|
||||
icon *b = (icon *)wid;
|
||||
int height = b->size;
|
||||
if (b->squared == FALSE) {
|
||||
if (b->icon) {
|
||||
|
@ -66,12 +65,11 @@ static int icon_get_desired_height(widget *widget,
|
|||
height = iconh * scale;
|
||||
}
|
||||
}
|
||||
height += widget_padding_get_padding_height(widget);
|
||||
height += widget_padding_get_padding_height(wid);
|
||||
return height;
|
||||
}
|
||||
static int icon_get_desired_width(widget *widget,
|
||||
G_GNUC_UNUSED const int height) {
|
||||
icon *b = (icon *)widget;
|
||||
static int icon_get_desired_width(widget *wid, G_GNUC_UNUSED const int height) {
|
||||
icon *b = (icon *)wid;
|
||||
int width = b->size;
|
||||
if (b->squared == FALSE) {
|
||||
if (b->icon) {
|
||||
|
@ -82,7 +80,7 @@ static int icon_get_desired_width(widget *widget,
|
|||
width = iconw * scale;
|
||||
}
|
||||
}
|
||||
width += widget_padding_get_padding_width(widget);
|
||||
width += widget_padding_get_padding_width(wid);
|
||||
return width;
|
||||
}
|
||||
|
||||
|
@ -129,26 +127,26 @@ static void icon_free(widget *wid) {
|
|||
g_free(b);
|
||||
}
|
||||
|
||||
static void icon_resize(widget *widget, short w, short h) {
|
||||
icon *b = (icon *)widget;
|
||||
static void icon_resize(widget *wid, short w, short h) {
|
||||
icon *b = (icon *)wid;
|
||||
if (b->widget.w != w || b->widget.h != h) {
|
||||
b->widget.w = w;
|
||||
b->widget.h = h;
|
||||
widget_update(widget);
|
||||
widget_update(wid);
|
||||
}
|
||||
}
|
||||
|
||||
void icon_set_surface(icon *icon, cairo_surface_t *surf) {
|
||||
icon->icon_fetch_id = 0;
|
||||
if (icon->icon) {
|
||||
cairo_surface_destroy(icon->icon);
|
||||
icon->icon = NULL;
|
||||
void icon_set_surface(icon *icon_widget, cairo_surface_t *surf) {
|
||||
icon_widget->icon_fetch_id = 0;
|
||||
if (icon_widget->icon) {
|
||||
cairo_surface_destroy(icon_widget->icon);
|
||||
icon_widget->icon = NULL;
|
||||
}
|
||||
if (surf) {
|
||||
cairo_surface_reference(surf);
|
||||
icon->icon = surf;
|
||||
icon_widget->icon = surf;
|
||||
}
|
||||
widget_queue_redraw(WIDGET(icon));
|
||||
widget_queue_redraw(WIDGET(icon_widget));
|
||||
}
|
||||
|
||||
icon *icon_create(widget *parent, const char *name) {
|
||||
|
|
|
@ -55,126 +55,125 @@ void widget_init(widget *wid, widget *parent, WidgetType type,
|
|||
wid->enabled = rofi_theme_get_boolean(wid, "enabled", TRUE);
|
||||
}
|
||||
|
||||
void widget_set_state(widget *widget, const char *state) {
|
||||
if (widget == NULL) {
|
||||
void widget_set_state(widget *wid, const char *state) {
|
||||
if (wid == NULL) {
|
||||
return;
|
||||
}
|
||||
if (g_strcmp0(widget->state, state)) {
|
||||
widget->state = state;
|
||||
if (g_strcmp0(wid->state, state)) {
|
||||
wid->state = state;
|
||||
// Update border.
|
||||
widget->border =
|
||||
rofi_theme_get_padding(widget, "border", widget->def_border);
|
||||
widget->border_radius = rofi_theme_get_padding(widget, "border-radius",
|
||||
widget->def_border_radius);
|
||||
if (widget->set_state != NULL) {
|
||||
widget->set_state(widget, state);
|
||||
wid->border = rofi_theme_get_padding(wid, "border", wid->def_border);
|
||||
wid->border_radius =
|
||||
rofi_theme_get_padding(wid, "border-radius", wid->def_border_radius);
|
||||
if (wid->set_state != NULL) {
|
||||
wid->set_state(wid, state);
|
||||
}
|
||||
widget_queue_redraw(widget);
|
||||
widget_queue_redraw(wid);
|
||||
}
|
||||
}
|
||||
|
||||
int widget_intersect(const widget *widget, int x, int y) {
|
||||
if (widget == NULL) {
|
||||
int widget_intersect(const widget *wid, int x, int y) {
|
||||
if (wid == NULL) {
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
if (x >= (widget->x) && x < (widget->x + widget->w) && y >= (widget->y) &&
|
||||
y < (widget->y + widget->h)) {
|
||||
if (x >= (wid->x) && x < (wid->x + wid->w) && y >= (wid->y) &&
|
||||
y < (wid->y + wid->h)) {
|
||||
return TRUE;
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
void widget_resize(widget *widget, short w, short h) {
|
||||
if (widget == NULL) {
|
||||
void widget_resize(widget *wid, short w, short h) {
|
||||
if (wid == NULL) {
|
||||
return;
|
||||
}
|
||||
if (widget->resize != NULL) {
|
||||
if (widget->w != w || widget->h != h) {
|
||||
widget->resize(widget, w, h);
|
||||
if (wid->resize != NULL) {
|
||||
if (wid->w != w || wid->h != h) {
|
||||
wid->resize(wid, w, h);
|
||||
}
|
||||
} else {
|
||||
widget->w = w;
|
||||
widget->h = h;
|
||||
wid->w = w;
|
||||
wid->h = h;
|
||||
}
|
||||
// On a resize we always want to update.
|
||||
widget_queue_redraw(widget);
|
||||
widget_queue_redraw(wid);
|
||||
}
|
||||
void widget_move(widget *widget, short x, short y) {
|
||||
if (widget == NULL) {
|
||||
void widget_move(widget *wid, short x, short y) {
|
||||
if (wid == NULL) {
|
||||
return;
|
||||
}
|
||||
widget->x = x;
|
||||
widget->y = y;
|
||||
wid->x = x;
|
||||
wid->y = y;
|
||||
}
|
||||
void widget_set_type(widget *widget, WidgetType type) {
|
||||
if (widget == NULL) {
|
||||
void widget_set_type(widget *wid, WidgetType type) {
|
||||
if (wid == NULL) {
|
||||
return;
|
||||
}
|
||||
widget->type = type;
|
||||
wid->type = type;
|
||||
}
|
||||
|
||||
gboolean widget_enabled(widget *widget) {
|
||||
if (widget == NULL) {
|
||||
gboolean widget_enabled(widget *wid) {
|
||||
if (wid == NULL) {
|
||||
return FALSE;
|
||||
}
|
||||
return widget->enabled;
|
||||
return wid->enabled;
|
||||
}
|
||||
|
||||
void widget_set_enabled(widget *widget, gboolean enabled) {
|
||||
if (widget == NULL) {
|
||||
void widget_set_enabled(widget *wid, gboolean enabled) {
|
||||
if (wid == NULL) {
|
||||
return;
|
||||
}
|
||||
if (widget->enabled != enabled) {
|
||||
widget->enabled = enabled;
|
||||
widget_update(widget);
|
||||
widget_update(widget->parent);
|
||||
widget_queue_redraw(widget);
|
||||
if (wid->enabled != enabled) {
|
||||
wid->enabled = enabled;
|
||||
widget_update(wid);
|
||||
widget_update(wid->parent);
|
||||
widget_queue_redraw(wid);
|
||||
}
|
||||
}
|
||||
|
||||
void widget_draw(widget *widget, cairo_t *d) {
|
||||
if (widget == NULL) {
|
||||
void widget_draw(widget *wid, cairo_t *d) {
|
||||
if (wid == NULL) {
|
||||
return;
|
||||
}
|
||||
// Check if enabled and if draw is implemented.
|
||||
if (widget->enabled && widget->draw) {
|
||||
if (wid->enabled && wid->draw) {
|
||||
// Don't draw if there is no space.
|
||||
if (widget->h < 1 || widget->w < 1) {
|
||||
widget->need_redraw = FALSE;
|
||||
if (wid->h < 1 || wid->w < 1) {
|
||||
wid->need_redraw = FALSE;
|
||||
return;
|
||||
}
|
||||
// Store current state.
|
||||
cairo_save(d);
|
||||
const int margin_left =
|
||||
distance_get_pixel(widget->margin.left, ROFI_ORIENTATION_HORIZONTAL);
|
||||
distance_get_pixel(wid->margin.left, ROFI_ORIENTATION_HORIZONTAL);
|
||||
const int margin_top =
|
||||
distance_get_pixel(widget->margin.top, ROFI_ORIENTATION_VERTICAL);
|
||||
distance_get_pixel(wid->margin.top, ROFI_ORIENTATION_VERTICAL);
|
||||
const int margin_right =
|
||||
distance_get_pixel(widget->margin.right, ROFI_ORIENTATION_HORIZONTAL);
|
||||
distance_get_pixel(wid->margin.right, ROFI_ORIENTATION_HORIZONTAL);
|
||||
const int margin_bottom =
|
||||
distance_get_pixel(widget->margin.bottom, ROFI_ORIENTATION_VERTICAL);
|
||||
distance_get_pixel(wid->margin.bottom, ROFI_ORIENTATION_VERTICAL);
|
||||
const int left =
|
||||
distance_get_pixel(widget->border.left, ROFI_ORIENTATION_HORIZONTAL);
|
||||
distance_get_pixel(wid->border.left, ROFI_ORIENTATION_HORIZONTAL);
|
||||
const int right =
|
||||
distance_get_pixel(widget->border.right, ROFI_ORIENTATION_HORIZONTAL);
|
||||
distance_get_pixel(wid->border.right, ROFI_ORIENTATION_HORIZONTAL);
|
||||
const int top =
|
||||
distance_get_pixel(widget->border.top, ROFI_ORIENTATION_VERTICAL);
|
||||
distance_get_pixel(wid->border.top, ROFI_ORIENTATION_VERTICAL);
|
||||
const int bottom =
|
||||
distance_get_pixel(widget->border.bottom, ROFI_ORIENTATION_VERTICAL);
|
||||
int radius_bl = distance_get_pixel(widget->border_radius.left,
|
||||
distance_get_pixel(wid->border.bottom, ROFI_ORIENTATION_VERTICAL);
|
||||
int radius_bl = distance_get_pixel(wid->border_radius.left,
|
||||
ROFI_ORIENTATION_HORIZONTAL);
|
||||
int radius_tr = distance_get_pixel(widget->border_radius.right,
|
||||
int radius_tr = distance_get_pixel(wid->border_radius.right,
|
||||
ROFI_ORIENTATION_HORIZONTAL);
|
||||
int radius_tl = distance_get_pixel(widget->border_radius.top,
|
||||
ROFI_ORIENTATION_VERTICAL);
|
||||
int radius_br = distance_get_pixel(widget->border_radius.bottom,
|
||||
int radius_tl =
|
||||
distance_get_pixel(wid->border_radius.top, ROFI_ORIENTATION_VERTICAL);
|
||||
int radius_br = distance_get_pixel(wid->border_radius.bottom,
|
||||
ROFI_ORIENTATION_VERTICAL);
|
||||
|
||||
double vspace =
|
||||
widget->h - margin_top - margin_bottom - top / 2.0 - bottom / 2.0;
|
||||
wid->h - margin_top - margin_bottom - top / 2.0 - bottom / 2.0;
|
||||
double hspace =
|
||||
widget->w - margin_left - margin_right - left / 2.0 - right / 2.0;
|
||||
wid->w - margin_left - margin_right - left / 2.0 - right / 2.0;
|
||||
if ((radius_bl + radius_tl) > (vspace)) {
|
||||
int j = ((vspace) / 2.0);
|
||||
radius_bl = MIN(radius_bl, j);
|
||||
|
@ -198,14 +197,14 @@ void widget_draw(widget *widget, cairo_t *d) {
|
|||
|
||||
// Background painting.
|
||||
// Set new x/y position.
|
||||
cairo_translate(d, widget->x, widget->y);
|
||||
cairo_translate(d, wid->x, wid->y);
|
||||
cairo_set_line_width(d, 0);
|
||||
|
||||
// Outer outline outlines
|
||||
double x1, y1, x2, y2;
|
||||
x1 = margin_left + left / 2.0, y1 = margin_top + top / 2.0,
|
||||
x2 = widget->w - margin_right - right / 2.0,
|
||||
y2 = widget->h - margin_bottom - bottom / 2.0;
|
||||
x2 = wid->w - margin_right - right / 2.0,
|
||||
y2 = wid->h - margin_bottom - bottom / 2.0;
|
||||
|
||||
if (radius_tl > 0) {
|
||||
cairo_move_to(d, x1, y1 + radius_tl);
|
||||
|
@ -238,15 +237,15 @@ void widget_draw(widget *widget, cairo_t *d) {
|
|||
cairo_close_path(d);
|
||||
|
||||
cairo_set_source_rgba(d, 1.0, 1.0, 1.0, 1.0);
|
||||
rofi_theme_get_color(widget, "background-color", d);
|
||||
rofi_theme_get_color(wid, "background-color", d);
|
||||
cairo_fill_preserve(d);
|
||||
if (rofi_theme_get_image(widget, "background-image", d)) {
|
||||
if (rofi_theme_get_image(wid, "background-image", d)) {
|
||||
cairo_fill_preserve(d);
|
||||
}
|
||||
cairo_clip(d);
|
||||
|
||||
widget->draw(widget, d);
|
||||
widget->need_redraw = FALSE;
|
||||
wid->draw(wid, d);
|
||||
wid->need_redraw = FALSE;
|
||||
|
||||
cairo_restore(d);
|
||||
|
||||
|
@ -255,9 +254,9 @@ void widget_draw(widget *widget, cairo_t *d) {
|
|||
// thus no need for these.
|
||||
cairo_push_group(d);
|
||||
cairo_set_operator(d, CAIRO_OPERATOR_ADD);
|
||||
cairo_translate(d, widget->x, widget->y);
|
||||
cairo_translate(d, wid->x, wid->y);
|
||||
cairo_new_path(d);
|
||||
rofi_theme_get_color(widget, "border-color", d);
|
||||
rofi_theme_get_color(wid, "border-color", d);
|
||||
|
||||
// Calculate the different offsets for the corners.
|
||||
double minof_tr = MIN(right / 2.0, top / 2.0);
|
||||
|
@ -309,30 +308,30 @@ void widget_draw(widget *widget, cairo_t *d) {
|
|||
|
||||
if (left > 0) {
|
||||
cairo_set_line_width(d, left);
|
||||
distance_get_linestyle(widget->border.left, d);
|
||||
distance_get_linestyle(wid->border.left, d);
|
||||
cairo_move_to(d, x1, margin_top + offset_ttl);
|
||||
cairo_line_to(d, x1, widget->h - margin_bottom - offset_bbl);
|
||||
cairo_line_to(d, x1, wid->h - margin_bottom - offset_bbl);
|
||||
cairo_stroke(d);
|
||||
}
|
||||
if (right > 0) {
|
||||
cairo_set_line_width(d, right);
|
||||
distance_get_linestyle(widget->border.right, d);
|
||||
distance_get_linestyle(wid->border.right, d);
|
||||
cairo_move_to(d, x2, margin_top + offset_ttr);
|
||||
cairo_line_to(d, x2, widget->h - margin_bottom - offset_bbr);
|
||||
cairo_line_to(d, x2, wid->h - margin_bottom - offset_bbr);
|
||||
cairo_stroke(d);
|
||||
}
|
||||
if (top > 0) {
|
||||
cairo_set_line_width(d, top);
|
||||
distance_get_linestyle(widget->border.top, d);
|
||||
distance_get_linestyle(wid->border.top, d);
|
||||
cairo_move_to(d, margin_left + offset_ltl, y1);
|
||||
cairo_line_to(d, widget->w - margin_right - offset_rtr, y1);
|
||||
cairo_line_to(d, wid->w - margin_right - offset_rtr, y1);
|
||||
cairo_stroke(d);
|
||||
}
|
||||
if (bottom > 0) {
|
||||
cairo_set_line_width(d, bottom);
|
||||
distance_get_linestyle(widget->border.bottom, d);
|
||||
distance_get_linestyle(wid->border.bottom, d);
|
||||
cairo_move_to(d, margin_left + offset_lbl, y2);
|
||||
cairo_line_to(d, widget->w - margin_right - offset_rbr, y2);
|
||||
cairo_line_to(d, wid->w - margin_right - offset_rbr, y2);
|
||||
cairo_stroke(d);
|
||||
}
|
||||
if (radius_tl > 0) {
|
||||
|
@ -353,61 +352,59 @@ void widget_draw(widget *widget, cairo_t *d) {
|
|||
}
|
||||
if (radius_tr > 0) {
|
||||
double radius_outer = radius_tr + minof_tr;
|
||||
cairo_arc(d, widget->w - margin_right - radius_outer,
|
||||
cairo_arc(d, wid->w - margin_right - radius_outer,
|
||||
margin_top + radius_outer, radius_outer, -G_PI_2, 0);
|
||||
cairo_line_to(d, widget->w - margin_right, margin_top + offset_ttr);
|
||||
cairo_line_to(d, widget->w - margin_right - right,
|
||||
cairo_line_to(d, wid->w - margin_right, margin_top + offset_ttr);
|
||||
cairo_line_to(d, wid->w - margin_right - right,
|
||||
margin_top + offset_ttr);
|
||||
if (radius_inner_tr > 0) {
|
||||
cairo_arc_negative(
|
||||
d, widget->w - margin_right - right - radius_inner_tr,
|
||||
margin_top + top + radius_inner_tr, radius_inner_tr, 0, -G_PI_2);
|
||||
cairo_line_to(d, widget->w - margin_right - offset_rtr,
|
||||
cairo_arc_negative(d, wid->w - margin_right - right - radius_inner_tr,
|
||||
margin_top + top + radius_inner_tr,
|
||||
radius_inner_tr, 0, -G_PI_2);
|
||||
cairo_line_to(d, wid->w - margin_right - offset_rtr,
|
||||
margin_top + top);
|
||||
}
|
||||
cairo_line_to(d, widget->w - margin_right - offset_rtr, margin_top);
|
||||
cairo_line_to(d, wid->w - margin_right - offset_rtr, margin_top);
|
||||
cairo_close_path(d);
|
||||
cairo_fill(d);
|
||||
}
|
||||
if (radius_br > 0) {
|
||||
double radius_outer = radius_br + minof_br;
|
||||
cairo_arc(d, widget->w - margin_right - radius_outer,
|
||||
widget->h - margin_bottom - radius_outer, radius_outer, 0.0,
|
||||
cairo_arc(d, wid->w - margin_right - radius_outer,
|
||||
wid->h - margin_bottom - radius_outer, radius_outer, 0.0,
|
||||
G_PI_2);
|
||||
cairo_line_to(d, widget->w - margin_right - offset_rbr,
|
||||
widget->h - margin_bottom);
|
||||
cairo_line_to(d, widget->w - margin_right - offset_rbr,
|
||||
widget->h - margin_bottom - bottom);
|
||||
cairo_line_to(d, wid->w - margin_right - offset_rbr,
|
||||
wid->h - margin_bottom);
|
||||
cairo_line_to(d, wid->w - margin_right - offset_rbr,
|
||||
wid->h - margin_bottom - bottom);
|
||||
if (radius_inner_br > 0) {
|
||||
cairo_arc_negative(
|
||||
d, widget->w - margin_right - right - radius_inner_br,
|
||||
widget->h - margin_bottom - bottom - radius_inner_br,
|
||||
radius_inner_br, G_PI_2, 0.0);
|
||||
cairo_line_to(d, widget->w - margin_right - right,
|
||||
widget->h - margin_bottom - offset_bbr);
|
||||
cairo_arc_negative(d, wid->w - margin_right - right - radius_inner_br,
|
||||
wid->h - margin_bottom - bottom - radius_inner_br,
|
||||
radius_inner_br, G_PI_2, 0.0);
|
||||
cairo_line_to(d, wid->w - margin_right - right,
|
||||
wid->h - margin_bottom - offset_bbr);
|
||||
}
|
||||
cairo_line_to(d, widget->w - margin_right,
|
||||
widget->h - margin_bottom - offset_bbr);
|
||||
cairo_line_to(d, wid->w - margin_right,
|
||||
wid->h - margin_bottom - offset_bbr);
|
||||
cairo_close_path(d);
|
||||
cairo_fill(d);
|
||||
}
|
||||
if (radius_bl > 0) {
|
||||
double radius_outer = radius_bl + minof_bl;
|
||||
cairo_arc(d, margin_left + radius_outer,
|
||||
widget->h - margin_bottom - radius_outer, radius_outer,
|
||||
G_PI_2, G_PI);
|
||||
cairo_line_to(d, margin_left, widget->h - margin_bottom - offset_bbl);
|
||||
wid->h - margin_bottom - radius_outer, radius_outer, G_PI_2,
|
||||
G_PI);
|
||||
cairo_line_to(d, margin_left, wid->h - margin_bottom - offset_bbl);
|
||||
cairo_line_to(d, margin_left + left,
|
||||
widget->h - margin_bottom - offset_bbl);
|
||||
wid->h - margin_bottom - offset_bbl);
|
||||
if (radius_inner_bl > 0) {
|
||||
cairo_arc_negative(d, margin_left + left + radius_inner_bl,
|
||||
widget->h - margin_bottom - bottom -
|
||||
radius_inner_bl,
|
||||
wid->h - margin_bottom - bottom - radius_inner_bl,
|
||||
radius_inner_bl, G_PI, G_PI_2);
|
||||
cairo_line_to(d, margin_left + offset_lbl,
|
||||
widget->h - margin_bottom - bottom);
|
||||
wid->h - margin_bottom - bottom);
|
||||
}
|
||||
cairo_line_to(d, margin_left + offset_lbl, widget->h - margin_bottom);
|
||||
cairo_line_to(d, margin_left + offset_lbl, wid->h - margin_bottom);
|
||||
cairo_close_path(d);
|
||||
|
||||
cairo_fill(d);
|
||||
|
@ -430,53 +427,53 @@ void widget_free(widget *wid) {
|
|||
}
|
||||
}
|
||||
|
||||
int widget_get_height(widget *widget) {
|
||||
if (widget == NULL) {
|
||||
int widget_get_height(widget *wid) {
|
||||
if (wid == NULL) {
|
||||
return 0;
|
||||
}
|
||||
if (widget->get_height == NULL) {
|
||||
return widget->h;
|
||||
if (wid->get_height == NULL) {
|
||||
return wid->h;
|
||||
}
|
||||
return widget->get_height(widget);
|
||||
return wid->get_height(wid);
|
||||
}
|
||||
int widget_get_width(widget *widget) {
|
||||
if (widget == NULL) {
|
||||
int widget_get_width(widget *wid) {
|
||||
if (wid == NULL) {
|
||||
return 0;
|
||||
}
|
||||
if (widget->get_width == NULL) {
|
||||
return widget->w;
|
||||
if (wid->get_width == NULL) {
|
||||
return wid->w;
|
||||
}
|
||||
return widget->get_width(widget);
|
||||
return wid->get_width(wid);
|
||||
}
|
||||
int widget_get_x_pos(widget *widget) {
|
||||
if (widget == NULL) {
|
||||
int widget_get_x_pos(widget *wid) {
|
||||
if (wid == NULL) {
|
||||
return 0;
|
||||
}
|
||||
return widget->x;
|
||||
return wid->x;
|
||||
}
|
||||
int widget_get_y_pos(widget *widget) {
|
||||
if (widget == NULL) {
|
||||
int widget_get_y_pos(widget *wid) {
|
||||
if (wid == NULL) {
|
||||
return 0;
|
||||
}
|
||||
return widget->y;
|
||||
return wid->y;
|
||||
}
|
||||
|
||||
void widget_xy_to_relative(widget *widget, gint *x, gint *y) {
|
||||
*x -= widget->x;
|
||||
*y -= widget->y;
|
||||
if (widget->parent == NULL) {
|
||||
void widget_xy_to_relative(widget *wid, gint *x, gint *y) {
|
||||
*x -= wid->x;
|
||||
*y -= wid->y;
|
||||
if (wid->parent == NULL) {
|
||||
return;
|
||||
}
|
||||
widget_xy_to_relative(widget->parent, x, y);
|
||||
widget_xy_to_relative(wid->parent, x, y);
|
||||
}
|
||||
|
||||
void widget_update(widget *widget) {
|
||||
if (widget == NULL) {
|
||||
void widget_update(widget *wid) {
|
||||
if (wid == NULL) {
|
||||
return;
|
||||
}
|
||||
// When (desired )size of widget changes.
|
||||
if (widget->update != NULL) {
|
||||
widget->update(widget);
|
||||
// When (desired )size of wid changes.
|
||||
if (wid->update != NULL) {
|
||||
wid->update(wid);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -31,8 +31,8 @@
|
|||
|
||||
#include "config.h"
|
||||
#ifdef XCB_IMDKIT
|
||||
#include <xcb/xcb_keysyms.h>
|
||||
#include <xcb-imdkit/encoding.h>
|
||||
#include <xcb/xcb_keysyms.h>
|
||||
#endif
|
||||
#include <cairo-xcb.h>
|
||||
#include <cairo.h>
|
||||
|
@ -128,13 +128,13 @@ const struct {
|
|||
} cursor_names[] = {
|
||||
{"default", "left_ptr"}, {"pointer", "hand"}, {"text", "xterm"}};
|
||||
|
||||
static xcb_visualtype_t *lookup_visual(xcb_screen_t *s, xcb_visualid_t visual) {
|
||||
static xcb_visualtype_t *lookup_visual(xcb_screen_t *s, xcb_visualid_t vis) {
|
||||
xcb_depth_iterator_t d;
|
||||
d = xcb_screen_allowed_depths_iterator(s);
|
||||
for (; d.rem; xcb_depth_next(&d)) {
|
||||
xcb_visualtype_iterator_t v = xcb_depth_visuals_iterator(d.data);
|
||||
for (; v.rem; xcb_visualtype_next(&v)) {
|
||||
if (v.data->visual_id == visual) {
|
||||
if (v.data->visual_id == vis) {
|
||||
return v.data;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue