From ed7f14da5187297ee4fd1e57bb5d4d0f637f3abe Mon Sep 17 00:00:00 2001 From: Cosimo Cecchi Date: Thu, 29 Aug 2013 15:56:47 -0700 Subject: topbar: implement window dragging Similar to how GtkToolbar does it. [endlessm/eos-sdk#178] --- endless/eostopbar.c | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) (limited to 'endless/eostopbar.c') 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; -- cgit v1.2.3