From 515f71772aabb6537a6549ebe4ed24d52a3ffdf9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marco=20Trevisan=20=28Trevi=C3=B1o=29?= Date: Wed, 16 Jul 2014 15:00:51 +0200 Subject: IndicatorLoader: add scroll-entry support --- tools/indicator-loader.c | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/tools/indicator-loader.c b/tools/indicator-loader.c index 153cca7..8fee29b 100644 --- a/tools/indicator-loader.c +++ b/tools/indicator-loader.c @@ -55,6 +55,27 @@ activate_entry (GtkWidget * widget, gpointer user_data) } } +static void +scroll_entry (GtkWidget *widget, GdkEventScroll* event, gpointer user_data) +{ + gpointer entry; + + g_return_if_fail (INDICATOR_IS_OBJECT(user_data)); + + entry = g_object_get_qdata (G_OBJECT(widget), entry_data_quark()); + + if (entry == NULL) + { + g_debug("Scroll on: (null)"); + } + else + { + g_signal_emit_by_name(INDICATOR_OBJECT(user_data), + INDICATOR_OBJECT_SIGNAL_ENTRY_SCROLLED, + entry, 1, event->direction); + } +} + static GtkWidget* create_menu_item (IndicatorObjectEntry * entry) { @@ -106,6 +127,9 @@ entry_added (IndicatorObject * io, g_object_set_qdata (G_OBJECT(menu_item), entry_data_quark(), entry); g_signal_connect (menu_item, "activate", G_CALLBACK(activate_entry), io); + gtk_widget_set_events (menu_item, gtk_widget_get_events (menu_item) | GDK_SCROLL_MASK); + g_signal_connect (menu_item, "scroll-event", G_CALLBACK(scroll_entry), io); + gtk_menu_shell_append (GTK_MENU_SHELL(user_data), menu_item); } -- cgit v1.2.3 From 1a211d63c3c6282a03274d600f12292939fa57ca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marco=20Trevisan=20=28Trevi=C3=B1o=29?= Date: Wed, 16 Jul 2014 15:40:42 +0200 Subject: IndicatorLoader: convert gtk scroll events to indicator object events They actually match, but just for safety... --- tools/indicator-loader.c | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/tools/indicator-loader.c b/tools/indicator-loader.c index 8fee29b..a734b8a 100644 --- a/tools/indicator-loader.c +++ b/tools/indicator-loader.c @@ -63,16 +63,39 @@ scroll_entry (GtkWidget *widget, GdkEventScroll* event, gpointer user_data) g_return_if_fail (INDICATOR_IS_OBJECT(user_data)); entry = g_object_get_qdata (G_OBJECT(widget), entry_data_quark()); + IndicatorScrollDirection direction = G_MAXINT; + + switch (event->direction) + { + case GDK_SCROLL_UP: + direction = INDICATOR_OBJECT_SCROLL_UP; + break; + case GDK_SCROLL_DOWN: + direction = INDICATOR_OBJECT_SCROLL_DOWN; + break; + case GDK_SCROLL_LEFT: + direction = INDICATOR_OBJECT_SCROLL_LEFT; + break; + case GDK_SCROLL_RIGHT: + direction = INDICATOR_OBJECT_SCROLL_RIGHT; + break; + default: + break; + } if (entry == NULL) { g_debug("Scroll on: (null)"); } + else if (direction == G_MAXINT) + { + g_debug("Scroll direction not supported"); + } else { g_signal_emit_by_name(INDICATOR_OBJECT(user_data), INDICATOR_OBJECT_SIGNAL_ENTRY_SCROLLED, - entry, 1, event->direction); + entry, 1, direction); } } -- cgit v1.2.3 From 19b729898ed630a0923fa91a4ee4c0146c7939a7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marco=20Trevisan=20=28Trevi=C3=B1o=29?= Date: Wed, 16 Jul 2014 15:41:25 +0200 Subject: IndicatorNG: Reverse the scroll delta on left scroll events As it happens for left scroll events. --- libindicator/indicator-ng.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/libindicator/indicator-ng.c b/libindicator/indicator-ng.c index d83a2b5..d1d2854 100644 --- a/libindicator/indicator-ng.c +++ b/libindicator/indicator-ng.c @@ -194,8 +194,12 @@ indicator_ng_entry_scrolled (IndicatorObject *io, if (self->actions && self->scroll_action) { - if (direction == INDICATOR_OBJECT_SCROLL_DOWN) - delta *= -1; + if (direction == INDICATOR_OBJECT_SCROLL_DOWN || + direction == INDICATOR_OBJECT_SCROLL_LEFT) + { + delta *= -1; + } + g_action_group_activate_action (self->actions, self->scroll_action, g_variant_new_int32 (delta)); } -- cgit v1.2.3