Merge branch 'wip/carlosg/for-master' into 'master'

gtk/main: Do not unset active state on button release w/o implicit grab

See merge request GNOME/gtk!2869
This commit is contained in:
Matthias Clasen
2020-11-20 01:46:03 +00:00

View File

@@ -1374,6 +1374,7 @@ handle_pointing_event (GdkEvent *event)
double native_x, native_y;
GtkWidget *native;
GdkEventType type;
gboolean has_implicit;
event_widget = gtk_get_event_widget (event);
device = gdk_event_get_device (event);
@@ -1475,6 +1476,11 @@ handle_pointing_event (GdkEvent *event)
target = gtk_window_lookup_effective_pointer_focus_widget (toplevel,
device,
sequence);
has_implicit =
gtk_window_lookup_pointer_focus_implicit_grab (toplevel,
device,
sequence) != NULL;
gtk_window_set_pointer_focus_grab (toplevel, device, sequence,
type == GDK_BUTTON_PRESS ? target : NULL);
@@ -1491,7 +1497,10 @@ handle_pointing_event (GdkEvent *event)
update_pointer_focus_state (toplevel, event, new_target);
}
set_widget_active_state (target, type == GDK_BUTTON_RELEASE);
if (type == GDK_BUTTON_PRESS)
set_widget_active_state (target, FALSE);
else if (has_implicit)
set_widget_active_state (target, TRUE);
break;
case GDK_SCROLL: