summaryrefslogtreecommitdiffstats
path: root/source
diff options
context:
space:
mode:
authorDave Davenport <qball@gmpclient.org>2017-06-12 08:17:28 +0200
committerDave Davenport <qball@gmpclient.org>2017-06-12 08:17:28 +0200
commit26d9da7263ce4aed3a787d4e68153bc5fb41dd5c (patch)
tree1fedb43cf3f2153aee39e2e02a37d9250f8a151a /source
parentc53e6cc20ca0c41a47f834306f453a55b7c117c4 (diff)
Position the overlay in the top right corner of the listview.
Diffstat (limited to 'source')
-rw-r--r--source/dialogs/drun.c2
-rw-r--r--source/view.c28
-rw-r--r--source/widgets/listview.c2
-rw-r--r--source/widgets/widget.c23
4 files changed, 37 insertions, 18 deletions
diff --git a/source/dialogs/drun.c b/source/dialogs/drun.c
index df2381c0..e5419ea4 100644
--- a/source/dialogs/drun.c
+++ b/source/dialogs/drun.c
@@ -510,7 +510,7 @@ static int drun_mode_init ( Mode *sw )
"gnome",
NULL
};
- DRunModePrivateData *pd = g_malloc0 ( sizeof ( *pd ) );
+ DRunModePrivateData *pd = g_malloc0 ( sizeof ( *pd ) );
pd->disabled_entries = g_hash_table_new_full ( g_str_hash, g_str_equal, g_free, NULL );
mode_set_private_data ( sw, (void *) pd );
pd->xdg_context = nk_xdg_theme_context_new ( drun_icon_fallback_themes, NULL );
diff --git a/source/view.c b/source/view.c
index a6c9ac41..60e84d6d 100644
--- a/source/view.c
+++ b/source/view.c
@@ -288,30 +288,30 @@ static void rofi_view_calculate_window_position ( RofiViewState *state )
{
case WL_NORTH_WEST:
state->x = CacheState.mon.x;
- __attribute__ ((fallthrough));
+ __attribute__ ( ( fallthrough ) );
case WL_NORTH:
state->y = CacheState.mon.y;
break;
case WL_NORTH_EAST:
state->y = CacheState.mon.y;
- __attribute__ ((fallthrough));
+ __attribute__ ( ( fallthrough ) );
case WL_EAST:
state->x = CacheState.mon.x + CacheState.mon.w;
break;
case WL_SOUTH_EAST:
state->x = CacheState.mon.x + CacheState.mon.w;
- __attribute__ ((fallthrough));
+ __attribute__ ( ( fallthrough ) );
case WL_SOUTH:
state->y = CacheState.mon.y + CacheState.mon.h;
break;
case WL_SOUTH_WEST:
state->y = CacheState.mon.y + CacheState.mon.h;
- __attribute__ ((fallthrough));
+ __attribute__ ( ( fallthrough ) );
case WL_WEST:
state->x = CacheState.mon.x;
break;
case WL_CENTER:
- __attribute__ ((fallthrough));
+ __attribute__ ( ( fallthrough ) );
default:
break;
}
@@ -1342,10 +1342,10 @@ gboolean rofi_view_trigger_action ( RofiViewState *state, BindingsScope scope, g
return FALSE;
case WIDGET_TRIGGER_ACTION_RESULT_GRAB_MOTION_END:
target = NULL;
- __attribute__ ((fallthrough));
+ __attribute__ ( ( fallthrough ) );
case WIDGET_TRIGGER_ACTION_RESULT_GRAB_MOTION_BEGIN:
state->mouse.motion_target = target;
- __attribute__ ((fallthrough));
+ __attribute__ ( ( fallthrough ) );
case WIDGET_TRIGGER_ACTION_RESULT_HANDLED:
return TRUE;
}
@@ -1811,7 +1811,7 @@ Mode * rofi_view_get_mode ( RofiViewState *state )
void rofi_view_set_overlay ( RofiViewState *state, const char *text )
{
- if ( state->overlay == NULL ) {
+ if ( state->overlay == NULL || state->list_view == NULL ) {
return;
}
if ( text == NULL ) {
@@ -1820,16 +1820,12 @@ void rofi_view_set_overlay ( RofiViewState *state, const char *text )
}
widget_enable ( WIDGET ( state->overlay ) );
textbox_text ( state->overlay, text );
- int x_offset = widget_get_width ( WIDGET ( state->main_window ) );
+ int x_offset = widget_get_width ( WIDGET ( state->list_view ) );
// Within padding of window.
- x_offset -= widget_padding_get_right ( WIDGET ( state->main_window ) );
- // Within the border of widget.
- //x_offset -= widget_padding_get_right ( WIDGET ( state->main_box ) );
- //x_offset -= widget_padding_get_right ( WIDGET ( state->input_bar ) );
- x_offset -= widget_get_width ( WIDGET ( state->case_indicator ) );
+ x_offset += widget_get_absolute_xpos ( WIDGET ( state->list_view ) );
x_offset -= widget_get_width ( WIDGET ( state->overlay ) );
- int top_offset = widget_padding_get_top ( WIDGET ( state->main_window ) );
- //top_offset += widget_padding_get_top ( WIDGET ( state->main_box ) );
+ // Within the border of widget.
+ int top_offset = widget_get_absolute_ypos ( WIDGET ( state->list_view ) );
widget_move ( WIDGET ( state->overlay ), x_offset, top_offset );
// We want to queue a repaint.
rofi_view_queue_redraw ( );
diff --git a/source/widgets/listview.c b/source/widgets/listview.c
index c2bb2992..ee69add2 100644
--- a/source/widgets/listview.c
+++ b/source/widgets/listview.c
@@ -504,7 +504,7 @@ static WidgetTriggerActionResult listview_element_trigger_action ( widget *wid,
break;
case ACCEPT_HOVERED_CUSTOM:
custom = TRUE;
- __attribute__ ((fallthrough));
+ __attribute__ ( ( fallthrough ) );
case ACCEPT_HOVERED_ENTRY:
listview_set_selected ( lv, lv->last_offset + i );
lv->mouse_activated ( lv, custom, lv->mouse_activated_data );
diff --git a/source/widgets/widget.c b/source/widgets/widget.c
index 8c99894c..5325762b 100644
--- a/source/widgets/widget.c
+++ b/source/widgets/widget.c
@@ -569,3 +569,26 @@ int widget_get_desired_width ( widget *wid )
}
return wid->w;
}
+
+int widget_get_absolute_xpos ( widget *wid )
+{
+ int retv = 0;
+ if ( wid ) {
+ retv += wid->x;
+ if ( wid->parent ) {
+ retv += widget_get_absolute_xpos ( wid->parent );
+ }
+ }
+ return retv;
+}
+int widget_get_absolute_ypos ( widget *wid )
+{
+ int retv = 0;
+ if ( wid ) {
+ retv += wid->y;
+ if ( wid->parent ) {
+ retv += widget_get_absolute_ypos ( wid->parent );
+ }
+ }
+ return retv;
+}