diff options
author | Cosimo Cecchi <cosimo@endlessm.com> | 2013-08-29 15:56:47 -0700 |
---|---|---|
committer | Cosimo Cecchi <cosimo@endlessm.com> | 2013-08-29 15:56:47 -0700 |
commit | ed7f14da5187297ee4fd1e57bb5d4d0f637f3abe (patch) | |
tree | 8fb6e3595956239ecd57f62de2e135af607b512a /endless | |
parent | 1fe432a7c2c2eef4bfda3f81e5b323758a17bb29 (diff) |
topbar: implement window dragging
Similar to how GtkToolbar does it.
[endlessm/eos-sdk#178]
Diffstat (limited to 'endless')
-rw-r--r-- | endless/eostopbar.c | 27 |
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; |