Fix a problem with focus handling in modal popovers

When the popover is dismissed, we return the focus to
where it came from. However, by using gtk_widget_grab_focus,
we were messing up the selection if that widget happens to
be an entry. Special-case GtkEntry and use
gtk_entry_grab_focus_without_selecting to avoid this issue.
This commit is contained in:
Matthias Clasen 2017-08-11 12:03:54 -04:00
parent c6c1619646
commit 46f7804f3a

View File

@ -622,7 +622,12 @@ gtk_popover_apply_modality (GtkPopover *popover,
/* Let prev_focus_widget regain focus */
if (priv->prev_focus_widget &&
gtk_widget_is_drawable (priv->prev_focus_widget))
gtk_widget_grab_focus (priv->prev_focus_widget);
{
if (GTK_IS_ENTRY (priv->prev_focus_widget))
gtk_entry_grab_focus_without_selecting (GTK_ENTRY (priv->prev_focus_widget));
else
gtk_widget_grab_focus (priv->prev_focus_widget);
}
else if (priv->window)
gtk_widget_grab_focus (GTK_WIDGET (priv->window));