summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authornick87720z <nick87720z@gmail.com>2020-07-11 17:48:58 +0500
committerGitHub <noreply@github.com>2020-07-11 14:48:58 +0200
commit57ee69367d1ffe01c6e5ebb9b2fa5cb83060639f (patch)
tree9ae3f2837d34e84ce54db4a564b619e46db8da2f
parent641cd4ef467a64379ef63db91ec62ec6926e1f5c (diff)
micro-refactoring: widget.c (#1148)
* widget.c: microrefactoring * widget.c: join enable/disable functions
-rw-r--r--include/widgets/widget.h19
-rw-r--r--source/widgets/widget.c204
2 files changed, 120 insertions, 103 deletions
diff --git a/include/widgets/widget.h b/include/widgets/widget.h
index dd4a5d7e..c330c8dc 100644
--- a/include/widgets/widget.h
+++ b/include/widgets/widget.h
@@ -157,18 +157,33 @@ void widget_set_type ( widget *widget, WidgetType type );
* @returns TRUE when widget is enabled.
*/
gboolean widget_enabled ( widget *widget );
+
+/**
+ * @param widget Handle to widget
+ * @param enabled The new state
+ *
+ * Disable the widget.
+ */
+void widget_set_enabled ( widget *widget, gboolean enabled );
+
/**
* @param widget Handle to widget
*
* Disable the widget.
*/
-void widget_disable ( widget *widget );
+static inline
+void widget_disable ( widget *widget ) {
+ widget_set_enabled ( widget, FALSE );
+}
/**
* @param widget Handle to widget
*
* Enable the widget.
*/
-void widget_enable ( widget *widget );
+static inline
+void widget_enable ( widget *widget ) {
+ widget_set_enabled ( widget, TRUE );
+}
/**
* @param widget widget Handle to the widget
diff --git a/source/widgets/widget.c b/source/widgets/widget.c
index 766a1079..8fc3b758 100644
--- a/source/widgets/widget.c
+++ b/source/widgets/widget.c
@@ -33,6 +33,7 @@
/** Default padding. */
#define WIDGET_DEFAULT_PADDING 0
+#define WIDGET_PADDING_INIT { { WIDGET_DEFAULT_PADDING, ROFI_PU_PX, ROFI_DISTANCE_MODIFIER_NONE, NULL, NULL }, ROFI_HL_SOLID }
/* Corner radius - tl, tr, br, bl */
static void draw_rounded_rect ( cairo_t * d,
@@ -71,12 +72,10 @@ void widget_init ( widget *wid, widget *parent, WidgetType type, const char *nam
wid->type = type;
wid->parent = parent;
wid->name = g_strdup ( name );
- wid->def_padding =
- (RofiPadding){ { {WIDGET_DEFAULT_PADDING, ROFI_PU_PX, ROFI_DISTANCE_MODIFIER_NONE, NULL, NULL}, ROFI_HL_SOLID }, { {WIDGET_DEFAULT_PADDING, ROFI_PU_PX,ROFI_DISTANCE_MODIFIER_NONE, NULL, NULL}, ROFI_HL_SOLID }, { {WIDGET_DEFAULT_PADDING, ROFI_PU_PX,ROFI_DISTANCE_MODIFIER_NONE, NULL, NULL}, ROFI_HL_SOLID },
- { {WIDGET_DEFAULT_PADDING, ROFI_PU_PX,ROFI_DISTANCE_MODIFIER_NONE, NULL, NULL}, ROFI_HL_SOLID } };
- wid->def_border = (RofiPadding){ { {0, ROFI_PU_PX, ROFI_DISTANCE_MODIFIER_NONE, NULL, NULL} , ROFI_HL_SOLID }, { {0, ROFI_PU_PX, ROFI_DISTANCE_MODIFIER_NONE, NULL, NULL}, ROFI_HL_SOLID }, { {0, ROFI_PU_PX, ROFI_DISTANCE_MODIFIER_NONE, NULL, NULL}, ROFI_HL_SOLID }, { {0, ROFI_PU_PX, ROFI_DISTANCE_MODIFIER_NONE, NULL, NULL}, ROFI_HL_SOLID } };
- wid->def_border_radius = (RofiPadding){ { {0, ROFI_PU_PX, ROFI_DISTANCE_MODIFIER_NONE, NULL, NULL} , ROFI_HL_SOLID }, { {0, ROFI_PU_PX, ROFI_DISTANCE_MODIFIER_NONE, NULL, NULL}, ROFI_HL_SOLID }, { {0, ROFI_PU_PX, ROFI_DISTANCE_MODIFIER_NONE, NULL, NULL}, ROFI_HL_SOLID }, { {0, ROFI_PU_PX, ROFI_DISTANCE_MODIFIER_NONE, NULL, NULL}, ROFI_HL_SOLID } };
- wid->def_margin = (RofiPadding){ { {0, ROFI_PU_PX, ROFI_DISTANCE_MODIFIER_NONE, NULL, NULL} , ROFI_HL_SOLID }, { {0, ROFI_PU_PX, ROFI_DISTANCE_MODIFIER_NONE, NULL, NULL}, ROFI_HL_SOLID }, { {0, ROFI_PU_PX, ROFI_DISTANCE_MODIFIER_NONE, NULL, NULL}, ROFI_HL_SOLID }, { {0, ROFI_PU_PX, ROFI_DISTANCE_MODIFIER_NONE, NULL, NULL}, ROFI_HL_SOLID } };
+ wid->def_padding = (RofiPadding) { WIDGET_PADDING_INIT, WIDGET_PADDING_INIT, WIDGET_PADDING_INIT, WIDGET_PADDING_INIT };
+ wid->def_border = (RofiPadding) { WIDGET_PADDING_INIT, WIDGET_PADDING_INIT, WIDGET_PADDING_INIT, WIDGET_PADDING_INIT };
+ wid->def_border_radius = (RofiPadding) { WIDGET_PADDING_INIT, WIDGET_PADDING_INIT, WIDGET_PADDING_INIT, WIDGET_PADDING_INIT };
+ wid->def_margin = (RofiPadding) { WIDGET_PADDING_INIT, WIDGET_PADDING_INIT, WIDGET_PADDING_INIT, WIDGET_PADDING_INIT };
wid->padding = rofi_theme_get_padding ( wid, "padding", wid->def_padding );
wid->border = rofi_theme_get_padding ( wid, "border", wid->def_border );
@@ -89,12 +88,15 @@ void widget_init ( widget *wid, widget *parent, WidgetType type, const char *nam
void widget_set_state ( widget *widget, const char *state )
{
+ if ( widget == NULL ) {
+ return;
+ }
if ( g_strcmp0 ( widget->state, state ) ) {
widget->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 ) {
+ if ( widget->set_state != NULL ) {
widget->set_state ( widget, state );
}
widget_queue_redraw ( widget );
@@ -107,36 +109,37 @@ int widget_intersect ( const widget *widget, int x, int y )
return FALSE;
}
- if ( x >= ( widget->x ) && x < ( widget->x + widget->w ) ) {
- if ( y >= ( widget->y ) && y < ( widget->y + widget->h ) ) {
- return TRUE;
- }
+ if ( x >= ( widget->x ) && x < ( widget->x + widget->w ) &&
+ y >= ( widget->y ) && y < ( widget->y + widget->h ) ) {
+ return TRUE;
}
return FALSE;
}
void widget_resize ( widget *widget, short w, short h )
{
- if ( widget != NULL ) {
- if ( widget->resize != NULL ) {
- if ( widget->w != w || widget->h != h ) {
- widget->resize ( widget, w, h );
- }
- }
- else {
- widget->w = w;
- widget->h = h;
+ if ( widget == NULL ) {
+ return;
+ }
+ if ( widget->resize != NULL ) {
+ if ( widget->w != w || widget->h != h ) {
+ widget->resize ( widget, w, h );
}
- // On a resize we always want to udpate.
- widget_queue_redraw ( widget );
}
+ else {
+ widget->w = w;
+ widget->h = h;
+ }
+ // On a resize we always want to udpate.
+ widget_queue_redraw ( widget );
}
void widget_move ( widget *widget, short x, short y )
{
- if ( widget != NULL ) {
- widget->x = x;
- widget->y = y;
+ if ( widget == NULL ) {
+ return;
}
+ widget->x = x;
+ widget->y = y;
}
void widget_set_type ( widget *widget, WidgetType type )
{
@@ -148,42 +151,40 @@ void widget_set_type ( widget *widget, WidgetType type )
WidgetType widget_type ( widget *widget )
{
- if ( widget != NULL ) {
- return widget->type;
+ if ( widget == NULL ) {
+ return WIDGET_TYPE_UNKNOWN;
}
- return WIDGET_TYPE_UNKNOWN;
+ return widget->type;
}
gboolean widget_enabled ( widget *widget )
{
- if ( widget != NULL ) {
- return widget->enabled;
+ if ( widget == NULL ) {
+ return FALSE;
}
- return FALSE;
+ return widget->enabled;
}
-void widget_enable ( widget *widget )
+void widget_set_enabled ( widget *widget, gboolean enabled )
{
- if ( widget && !widget->enabled ) {
- widget->enabled = TRUE;
- widget_update ( widget );
- widget_update ( widget->parent );
- widget_queue_redraw ( widget );
+ if ( widget == NULL ) {
+ return;
}
-}
-void widget_disable ( widget *widget )
-{
- if ( widget && widget->enabled ) {
- widget->enabled = FALSE;
+ if ( widget->enabled != enabled ) {
+ widget->enabled = enabled;
widget_update ( widget );
widget_update ( widget->parent );
widget_queue_redraw ( widget );
}
}
+
void widget_draw ( widget *widget, cairo_t *d )
{
+ if ( widget == NULL ) {
+ return;
+ }
// Check if enabled and if draw is implemented.
- if ( widget && widget->enabled && widget->draw ) {
+ if ( widget->enabled && widget->draw ) {
// Don't draw if there is no space.
if ( widget->h < 1 || widget->w < 1 ) {
widget->need_redraw = FALSE;
@@ -267,7 +268,7 @@ void widget_draw ( widget *widget, cairo_t *d )
cairo_restore ( d );
- if ( left || top || right || bottom ) {
+ if ( left != 0 || top != 0 || right != 0 || bottom != 0 ) {
cairo_save ( d );
cairo_translate ( d, widget->x, widget->y );
cairo_new_path ( d );
@@ -329,81 +330,83 @@ void widget_draw ( widget *widget, cairo_t *d )
void widget_free ( widget *wid )
{
- if ( wid == NULL ) {
- return;
- }
- if ( wid->name ) {
- g_free ( wid->name );
- }
- if ( wid->free ) {
- wid->free ( wid );
- }
+ if ( wid == NULL ) {
+ return;
+ }
+ if ( wid->name != NULL ) {
+ g_free ( wid->name );
+ }
+ if ( wid->free != NULL ) {
+ wid->free ( wid );
+ }
}
int widget_get_height ( widget *widget )
{
- if ( widget ) {
- if ( widget->get_height ) {
- return widget->get_height ( widget );
- }
+ if ( widget == NULL ) {
+ return 0;
+ }
+ if ( widget->get_height == NULL ) {
return widget->h;
}
- return 0;
+ return widget->get_height ( widget );
}
int widget_get_width ( widget *widget )
{
- if ( widget ) {
- if ( widget->get_width ) {
- return widget->get_width ( widget );
- }
+ if ( widget == NULL ) {
+ return 0;
+ }
+ if ( widget->get_width == NULL ) {
return widget->w;
}
- return 0;
+ return widget->get_width ( widget );
}
int widget_get_x_pos ( widget *widget )
{
- if ( widget ) {
- return widget->x;
+ if ( widget == NULL ) {
+ return 0;
}
- return 0;
+ return widget->x;
}
int widget_get_y_pos ( widget *widget )
{
- if ( widget ) {
- return widget->y;
+ if ( widget == NULL ) {
+ return 0;
}
- return 0;
+ return widget->y;
}
void widget_xy_to_relative ( widget *widget, gint *x, gint *y )
{
*x -= widget->x;
*y -= widget->y;
- if ( widget->parent != NULL ) {
- widget_xy_to_relative ( widget->parent, x, y );
+ if ( widget->parent == NULL ) {
+ return;
}
+ widget_xy_to_relative ( widget->parent, x, y );
}
void widget_update ( widget *widget )
{
+ if ( widget == NULL ) {
+ return;
+ }
// When (desired )size of widget changes.
- if ( widget ) {
- if ( widget->update ) {
- widget->update ( widget );
- }
+ if ( widget->update != NULL ) {
+ widget->update ( widget );
}
}
void widget_queue_redraw ( widget *wid )
{
if ( wid == NULL ) {
- return ;
+ return;
}
widget *iter = wid;
// Find toplevel widget.
while ( iter->parent != NULL ) {
- iter->need_redraw = TRUE;
- iter = iter->parent;
+ iter->need_redraw = TRUE;
+ iter = iter->parent;
}
iter->need_redraw = TRUE;
}
@@ -413,10 +416,10 @@ gboolean widget_need_redraw ( widget *wid )
if ( wid == NULL ) {
return FALSE;
}
- if ( wid->enabled ) {
- return wid->need_redraw;
+ if ( ! wid->enabled ) {
+ return FALSE;
}
- return FALSE;
+ return wid->need_redraw;
}
widget *widget_find_mouse_target ( widget *wid, WidgetType type, gint x, gint y )
@@ -425,7 +428,7 @@ widget *widget_find_mouse_target ( widget *wid, WidgetType type, gint x, gint y
return NULL;
}
- if ( wid->find_mouse_target ) {
+ if ( wid->find_mouse_target != NULL ) {
widget *target = wid->find_mouse_target ( wid, type, x, y );
if ( target != NULL ) {
return target;
@@ -442,10 +445,10 @@ WidgetTriggerActionResult widget_trigger_action ( widget *wid, guint action, gin
if ( wid == NULL ) {
return FALSE;
}
- if ( wid->trigger_action ) {
- return wid->trigger_action ( wid, action, x, y, wid->trigger_action_cb_data );
+ if ( wid->trigger_action == NULL ) {
+ return FALSE;
}
- return FALSE;
+ return wid->trigger_action ( wid, action, x, y, wid->trigger_action_cb_data );
}
void widget_set_trigger_action_handler ( widget *wid, widget_trigger_action_cb cb, void * cb_data )
@@ -462,11 +465,10 @@ gboolean widget_motion_notify ( widget *wid, gint x, gint y )
if ( wid == NULL ) {
return FALSE;
}
- if ( wid->motion_notify ) {
- wid->motion_notify ( wid, x, y );
+ if ( wid->motion_notify == NULL ) {
+ return FALSE;
}
-
- return FALSE;
+ return wid->motion_notify ( wid, x, y );
}
int widget_padding_get_left ( const widget *wid )
@@ -544,41 +546,41 @@ int widget_get_desired_height ( widget *wid )
if ( wid == NULL ) {
return 0;
}
- if ( wid->get_desired_height ) {
- return wid->get_desired_height ( wid );
+ if ( wid->get_desired_height == NULL ) {
+ return wid->h;
}
- return wid->h;
+ return wid->get_desired_height ( wid );
}
int widget_get_desired_width ( widget *wid )
{
if ( wid == NULL ) {
return 0;
}
- if ( wid->get_desired_width ) {
- return wid->get_desired_width ( wid );
+ if ( wid->get_desired_width == NULL ) {
+ return wid->w;
}
- return wid->w;
+ return wid->get_desired_width ( wid );
}
int widget_get_absolute_xpos ( widget *wid )
{
if ( wid == NULL ) {
- return 0;
+ return 0;
}
int retv = wid->x;
- if ( wid->parent ) {
- retv += widget_get_absolute_xpos ( wid->parent );
+ if ( wid->parent != NULL ) {
+ retv += widget_get_absolute_xpos ( wid->parent );
}
return retv;
}
int widget_get_absolute_ypos ( widget *wid )
{
if ( wid == NULL ) {
- return 0;
+ return 0;
}
int retv = wid->y;
- if ( wid->parent ) {
- retv += widget_get_absolute_ypos ( wid->parent );
+ if ( wid->parent != NULL ) {
+ retv += widget_get_absolute_ypos ( wid->parent );
}
return retv;
}