Bug 461944 – pressing the volume icon in full screen shuts down the sound

Don't pass the click on the button through to the scale when the
dock popup will be moved, otherwise we could end up changing the
sound in unexcepted ways (to zero for vertical popups at the bottom
of the screen for example).
This commit is contained in:
Bastien Nocera
2009-06-22 17:19:21 +01:00
parent 515a0b61a1
commit b436f5b8a3

View File

@ -927,7 +927,9 @@ gtk_scale_popup (GtkWidget *widget,
gdouble v; gdouble v;
GdkDisplay *display; GdkDisplay *display;
GdkScreen *screen; GdkScreen *screen;
gboolean is_moved;
is_moved = FALSE;
button = GTK_SCALE_BUTTON (widget); button = GTK_SCALE_BUTTON (widget);
priv = button->priv; priv = button->priv;
adj = priv->adjustment; adj = priv->adjustment;
@ -1004,15 +1006,24 @@ gtk_scale_popup (GtkWidget *widget,
else else
x += button_event->x; x += button_event->x;
if (y < rect.y) /* Move the dock, but set is_moved so we
* don't forward the first click later on,
* as it could make the scale go to the bottom */
if (y < rect.y) {
y = rect.y; y = rect.y;
else if (y + d->allocation.height > rect.height + rect.y) is_moved = TRUE;
} else if (y + d->allocation.height > rect.height + rect.y) {
y = rect.y + rect.height - d->allocation.height; y = rect.y + rect.height - d->allocation.height;
is_moved = TRUE;
}
if (x < rect.x) if (x < rect.x) {
x = rect.x; x = rect.x;
else if (x + d->allocation.width > rect.width + rect.x) is_moved = TRUE;
} else if (x + d->allocation.width > rect.width + rect.x) {
x = rect.x + rect.width - d->allocation.width; x = rect.x + rect.width - d->allocation.width;
is_moved = TRUE;
}
} }
gtk_window_move (GTK_WINDOW (priv->dock), x, y); gtk_window_move (GTK_WINDOW (priv->dock), x, y);
@ -1043,7 +1054,7 @@ gtk_scale_popup (GtkWidget *widget,
gtk_widget_grab_focus (priv->dock); gtk_widget_grab_focus (priv->dock);
if (event->type == GDK_BUTTON_PRESS) if (event->type == GDK_BUTTON_PRESS && !is_moved)
{ {
GdkEventButton *e; GdkEventButton *e;
GdkEventButton *button_event = (GdkEventButton *) event; GdkEventButton *button_event = (GdkEventButton *) event;