summaryrefslogtreecommitdiff
path: root/shell
diff options
context:
space:
mode:
authorJonny Lamb <jonny.lamb@collabora.co.uk>2014-04-02 21:10:18 +0200
committerJonny Lamb <jonny.lamb@collabora.co.uk>2014-04-02 21:10:18 +0200
commitc1f7b4d3c888b24d17fd7ced7ef37004fa778030 (patch)
treecad5777f8431b6df027c8eccc26efe88a366335f /shell
parentdea55fa3e757dd8e99594c4b19745af33bef73d6 (diff)
downloadgraynard-c1f7b4d3c888b24d17fd7ced7ef37004fa778030.tar.gz
graynard-c1f7b4d3c888b24d17fd7ced7ef37004fa778030.zip
panel: hide when a favorite is loaded
Diffstat (limited to 'shell')
-rw-r--r--shell/favorites.c10
-rw-r--r--shell/maynard.c13
-rw-r--r--shell/panel.c19
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));
}