diff options
| author | Marco Trevisan (Treviño) <mail@3v1n0.net> | 2014-09-19 20:38:21 +0200 |
|---|---|---|
| committer | Marco Trevisan (Treviño) <mail@3v1n0.net> | 2014-09-19 20:38:21 +0200 |
| commit | 490381d3f6b5c1269db051e6e33eefdeac3f984d (patch) | |
| tree | fee8cd437822ca919ee1876d89ee5619542e5927 /services | |
| parent | bf50922d936f50e31f4ea3e2d2827038a416306a (diff) | |
PanelService: add CloseActiveEntry method
To force an indicator to be closed (bzr r3871.3.6)
Diffstat (limited to 'services')
| -rw-r--r-- | services/panel-main.c | 8 | ||||
| -rw-r--r-- | services/panel-service.c | 15 | ||||
| -rw-r--r-- | services/panel-service.h | 2 |
3 files changed, 25 insertions, 0 deletions
diff --git a/services/panel-main.c b/services/panel-main.c index 837b036e6..106b974b2 100644 --- a/services/panel-main.c +++ b/services/panel-main.c @@ -82,6 +82,9 @@ static const gchar introspection_xml[] = " <arg type='i' name='delta' direction='in'/>" " </method>" "" + "" + " <method name='CloseActiveEntry' />" + "" " <signal name='EntryActivated'>" " <arg type='s' name='panel_id' />" " <arg type='s' name='entry_id' />" @@ -254,6 +257,11 @@ handle_method_call (GDBusConnection *connection, g_dbus_method_invocation_return_value (invocation, NULL); g_free(entry_id); } + else if (g_strcmp0 (method_name, "CloseActiveEntry") == 0) + { + panel_service_close_active_entry (service); + g_dbus_method_invocation_return_value (invocation, NULL); + } } static void diff --git a/services/panel-service.c b/services/panel-service.c index b3bb4040f..363648e3a 100644 --- a/services/panel-service.c +++ b/services/panel-service.c @@ -2421,6 +2421,8 @@ panel_service_secondary_activate_entry (PanelService *self, const gchar *entry_i IndicatorObject *object; IndicatorObjectEntry *entry; + g_return_if_fail (PANEL_IS_SERVICE (self)); + entry = get_indicator_entry_by_id (self, entry_id); g_return_if_fail (entry); @@ -2437,6 +2439,8 @@ panel_service_scroll_entry (PanelService *self, IndicatorObject *object; IndicatorObjectEntry *entry; + g_return_if_fail (PANEL_IS_SERVICE (self)); + entry = get_indicator_entry_by_id (self, entry_id); g_return_if_fail (entry); @@ -2465,3 +2469,14 @@ panel_service_scroll_entry (PanelService *self, entry, 1, direction); } } + +void +panel_service_close_active_entry (PanelService *self) +{ + g_return_if_fail (PANEL_IS_SERVICE (self)); + + if (GTK_IS_MENU (self->priv->last_menu)) + { + gtk_menu_popdown (GTK_MENU (self->priv->last_menu)); + } +} \ No newline at end of file diff --git a/services/panel-service.h b/services/panel-service.h index a4c76ac25..2def4fba1 100644 --- a/services/panel-service.h +++ b/services/panel-service.h @@ -122,6 +122,8 @@ void panel_service_scroll_entry (PanelService *self, const gchar *entry_id, gint32 delta); +void panel_service_close_active_entry (PanelService *self); + G_END_DECLS #endif /* _PANEL_SERVICE_H_ */ |
