summaryrefslogtreecommitdiff
path: root/services
diff options
authorMarco Trevisan (Treviño) <mail@3v1n0.net>2014-09-19 20:38:21 +0200
committerMarco Trevisan (Treviño) <mail@3v1n0.net>2014-09-19 20:38:21 +0200
commit490381d3f6b5c1269db051e6e33eefdeac3f984d (patch)
treefee8cd437822ca919ee1876d89ee5619542e5927 /services
parentbf50922d936f50e31f4ea3e2d2827038a416306a (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.c8
-rw-r--r--services/panel-service.c15
-rw-r--r--services/panel-service.h2
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_ */