summaryrefslogtreecommitdiff
path: root/endless
diff options
context:
space:
mode:
authorCosimo Cecchi <cosimo@endlessm.com>2013-08-29 15:56:47 -0700
committerCosimo Cecchi <cosimo@endlessm.com>2013-08-29 15:56:47 -0700
commited7f14da5187297ee4fd1e57bb5d4d0f637f3abe (patch)
tree8fb6e3595956239ecd57f62de2e135af607b512a /endless
parent1fe432a7c2c2eef4bfda3f81e5b323758a17bb29 (diff)
topbar: implement window dragging
Similar to how GtkToolbar does it. [endlessm/eos-sdk#178]
Diffstat (limited to 'endless')
-rw-r--r--endless/eostopbar.c27
1 files changed, 27 insertions, 0 deletions
diff --git a/endless/eostopbar.c b/endless/eostopbar.c
index 94cdb8e..4d6f42a 100644
--- a/endless/eostopbar.c
+++ b/endless/eostopbar.c
@@ -55,6 +55,32 @@ enum {
static guint top_bar_signals[LAST_SIGNAL] = { 0 };
+static gboolean
+eos_top_bar_button_press_event (GtkWidget *widget,
+ GdkEventButton *event)
+{
+ GtkWidget *window;
+
+ /* ignore right clicks */
+ if (gdk_event_triggers_context_menu ((GdkEvent *) event))
+ return FALSE;
+
+ /* ignore double clicks, etc */
+ if (event->type != GDK_BUTTON_PRESS)
+ return FALSE;
+
+ window = gtk_widget_get_toplevel (widget);
+ if (!window)
+ return FALSE;
+
+ gtk_window_begin_move_drag (GTK_WINDOW (window),
+ event->button,
+ event->x_root,
+ event->y_root,
+ event->time);
+ return TRUE;
+}
+
static void
eos_top_bar_get_preferred_height (GtkWidget *widget,
int *minimum,
@@ -98,6 +124,7 @@ eos_top_bar_class_init (EosTopBarClass *klass)
g_type_class_add_private (klass, sizeof (EosTopBarPrivate));
+ widget_class->button_press_event = eos_top_bar_button_press_event;
widget_class->get_preferred_height = eos_top_bar_get_preferred_height;
widget_class->draw = eos_top_bar_draw;