diff options
| author | Jonny Lamb <jonny.lamb@collabora.co.uk> | 2014-04-02 21:10:18 +0200 |
|---|---|---|
| committer | Jonny Lamb <jonny.lamb@collabora.co.uk> | 2014-04-02 21:10:18 +0200 |
| commit | c1f7b4d3c888b24d17fd7ced7ef37004fa778030 (patch) | |
| tree | cad5777f8431b6df027c8eccc26efe88a366335f /shell | |
| parent | dea55fa3e757dd8e99594c4b19745af33bef73d6 (diff) | |
| download | graynard-c1f7b4d3c888b24d17fd7ced7ef37004fa778030.tar.gz graynard-c1f7b4d3c888b24d17fd7ced7ef37004fa778030.zip | |
panel: hide when a favorite is loaded
Diffstat (limited to 'shell')
| -rw-r--r-- | shell/favorites.c | 10 | ||||
| -rw-r--r-- | shell/maynard.c | 13 | ||||
| -rw-r--r-- | shell/panel.c | 19 |
3 files changed, 40 insertions, 2 deletions
diff --git a/shell/favorites.c b/shell/favorites.c index 45e4359..7f15e76 100644 --- a/shell/favorites.c +++ b/shell/favorites.c @@ -30,8 +30,10 @@ #include "app-icon.h" enum { - PROP_0, + APP_LAUNCHED, + N_SIGNALS }; +static guint signals[N_SIGNALS] = { 0 }; struct MaynardFavoritesPrivate { GSettings *settings; @@ -54,6 +56,8 @@ favorite_clicked (GtkButton *button, error->message); g_clear_error (&error); } + + g_signal_emit (self, signals[APP_LAUNCHED], 0); } static void @@ -140,6 +144,10 @@ maynard_favorites_class_init (MaynardFavoritesClass *klass) object_class->dispose = maynard_favorites_dispose; + signals[APP_LAUNCHED] = g_signal_new ("app-launched", + G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_LAST, 0, NULL, NULL, + NULL, G_TYPE_NONE, 0); + g_type_class_add_private (object_class, sizeof (MaynardFavoritesPrivate)); } diff --git a/shell/maynard.c b/shell/maynard.c index 81b1d37..8e47bd2 100644 --- a/shell/maynard.c +++ b/shell/maynard.c @@ -389,6 +389,17 @@ panel_hide_timeout_cb (gpointer data) } static void +favorite_launched_cb (MaynardPanel *panel, + struct desktop *desktop) +{ + if (desktop->grid_visible) { + launcher_grid_toggle (desktop->launcher_grid->window, desktop); + } + + panel_window_leave_cb (NULL, NULL, desktop); +} + +static void panel_create(struct desktop *desktop) { struct element *panel; @@ -405,6 +416,8 @@ panel_create(struct desktop *desktop) G_CALLBACK(system_toggled_cb), desktop); g_signal_connect(panel->window, "volume-toggled", G_CALLBACK(volume_toggled_cb), desktop); + g_signal_connect(panel->window, "favorite-launched", + G_CALLBACK(favorite_launched_cb), desktop); desktop->initial_panel_timeout_id = g_timeout_add_seconds(2, panel_hide_timeout_cb, desktop); diff --git a/shell/panel.c b/shell/panel.c index f4f17bf..74ab751 100644 --- a/shell/panel.c +++ b/shell/panel.c @@ -31,6 +31,7 @@ enum { APP_MENU_TOGGLED, SYSTEM_TOGGLED, VOLUME_TOGGLED, + FAVORITE_LAUNCHED, N_SIGNALS }; static guint signals[N_SIGNALS] = { 0 }; @@ -100,6 +101,13 @@ volume_button_clicked_cb (GtkButton *button, } static void +favorite_launched_cb (MaynardFavorites *favorites, + MaynardPanel *self) +{ + g_signal_emit (self, signals[FAVORITE_LAUNCHED], 0); +} + +static void maynard_panel_constructed (GObject *object) { MaynardPanel *self = MAYNARD_PANEL (object); @@ -107,6 +115,7 @@ maynard_panel_constructed (GObject *object) GtkWidget *ebox; GtkWidget *image; GtkWidget *button; + GtkWidget *favorites; G_OBJECT_CLASS (maynard_panel_parent_class)->constructed (object); @@ -208,9 +217,13 @@ maynard_panel_constructed (GObject *object) /* favorites */ ebox = gtk_event_box_new (); gtk_box_pack_start (GTK_BOX (main_box), ebox, FALSE, FALSE, 0); - gtk_container_add (GTK_CONTAINER (ebox), maynard_favorites_new ()); + favorites = maynard_favorites_new (); + gtk_container_add (GTK_CONTAINER (ebox), favorites); widget_connect_enter_signal (self, ebox); + g_signal_connect (favorites, "app-launched", + G_CALLBACK (favorite_launched_cb), self); + /* bottom app menu button */ ebox = gtk_event_box_new (); gtk_box_pack_end (GTK_BOX (main_box), ebox, FALSE, FALSE, 0); @@ -257,6 +270,10 @@ maynard_panel_class_init (MaynardPanelClass *klass) G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_LAST, 0, NULL, NULL, NULL, G_TYPE_NONE, 0); + signals[FAVORITE_LAUNCHED] = g_signal_new ("favorite-launched", + G_TYPE_FROM_CLASS (klass), G_SIGNAL_RUN_LAST, 0, NULL, NULL, + NULL, G_TYPE_NONE, 0); + g_type_class_add_private (object_class, sizeof (MaynardPanelPrivate)); } |
