From 5fb7f69dd8c324df2dfb8969e6c6b3fb5edd36d8 Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Sun, 26 Jun 2005 06:39:19 +0000 Subject: [PATCH] Stop the drag if the grab is broken. 2005-06-26 Matthias Clasen * gtk/gtkhsv.c (gtk_hsv_grab_broken): Stop the drag if the grab is broken. --- ChangeLog | 3 +++ ChangeLog.pre-2-10 | 3 +++ ChangeLog.pre-2-8 | 3 +++ gtk/gtkhsv.c | 17 +++++++++++++++++ 4 files changed, 26 insertions(+) diff --git a/ChangeLog b/ChangeLog index 96e4d4d5f8..98d0aeb485 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,8 @@ 2005-06-26 Matthias Clasen + * gtk/gtkhsv.c (gtk_hsv_grab_broken): Stop the drag if + the grab is broken. + * gtk/gtkcombobox.c (gtk_combo_box_popdown): Don't do explicitly ungrab pointer and keyboard. We're unmapping the grab window anyway. diff --git a/ChangeLog.pre-2-10 b/ChangeLog.pre-2-10 index 96e4d4d5f8..98d0aeb485 100644 --- a/ChangeLog.pre-2-10 +++ b/ChangeLog.pre-2-10 @@ -1,5 +1,8 @@ 2005-06-26 Matthias Clasen + * gtk/gtkhsv.c (gtk_hsv_grab_broken): Stop the drag if + the grab is broken. + * gtk/gtkcombobox.c (gtk_combo_box_popdown): Don't do explicitly ungrab pointer and keyboard. We're unmapping the grab window anyway. diff --git a/ChangeLog.pre-2-8 b/ChangeLog.pre-2-8 index 96e4d4d5f8..98d0aeb485 100644 --- a/ChangeLog.pre-2-8 +++ b/ChangeLog.pre-2-8 @@ -1,5 +1,8 @@ 2005-06-26 Matthias Clasen + * gtk/gtkhsv.c (gtk_hsv_grab_broken): Stop the drag if + the grab is broken. + * gtk/gtkcombobox.c (gtk_combo_box_popdown): Don't do explicitly ungrab pointer and keyboard. We're unmapping the grab window anyway. diff --git a/gtk/gtkhsv.c b/gtk/gtkhsv.c index 58ea87922d..e8dbc19c59 100644 --- a/gtk/gtkhsv.c +++ b/gtk/gtkhsv.c @@ -106,6 +106,8 @@ static gint gtk_hsv_motion (GtkWidget *widget, GdkEventMotion *event); static gint gtk_hsv_expose (GtkWidget *widget, GdkEventExpose *event); +static gboolean gtk_hsv_grab_broken (GtkWidget *widget, + GdkEventGrabBroken *event); static gboolean gtk_hsv_focus (GtkWidget *widget, GtkDirectionType direction); static void gtk_hsv_move (GtkHSV *hsv, @@ -177,6 +179,7 @@ gtk_hsv_class_init (GtkHSVClass *class) widget_class->motion_notify_event = gtk_hsv_motion; widget_class->expose_event = gtk_hsv_expose; widget_class->focus = gtk_hsv_focus; + widget_class->grab_broken_event = gtk_hsv_grab_broken; hsv_class->move = gtk_hsv_move; @@ -773,6 +776,20 @@ set_cross_grab (GtkHSV *hsv, gdk_cursor_unref (cursor); } +static gboolean +gtk_hsv_grab_broken (GtkWidget *widget, + GdkEventGrabBroken *event) +{ + GtkHSV *hsv = GTK_HSV (widget); + HSVPrivate *priv; + + priv = hsv->priv; + + priv->mode = DRAG_NONE; + + return TRUE; +} + /* Button_press_event handler for the HSV color selector */ static gint gtk_hsv_button_press (GtkWidget *widget,