entrycompletion: Realize popup after setting screen

Realization is done as a side effect of calling
_gtk_entry_completion_resize_popup(), but if this is done before the
GdkScreen of the GtkWindow is set up correctly, it may result in the
widget being unrealized when the screen is updated. This may happen
when the file dialog parent window is not using the default GdkDisplay.

To avoid this issue, realize the popup after the screen has been
properly set up.

Fixes #83 in gtk4
This commit is contained in:
Jonas Ådahl 2018-03-14 11:54:02 +08:00
parent 417e8d6ca4
commit a48eaa1954

View File

@ -1514,8 +1514,6 @@ gtk_entry_completion_popup (GtkEntryCompletion *completion)
/* default on no match */ /* default on no match */
completion->priv->current_selected = -1; completion->priv->current_selected = -1;
_gtk_entry_completion_resize_popup (completion);
toplevel = gtk_widget_get_toplevel (completion->priv->entry); toplevel = gtk_widget_get_toplevel (completion->priv->entry);
if (GTK_IS_WINDOW (toplevel)) if (GTK_IS_WINDOW (toplevel))
{ {
@ -1529,6 +1527,8 @@ gtk_entry_completion_popup (GtkEntryCompletion *completion)
gtk_widget_get_display (completion->priv->entry)); gtk_widget_get_display (completion->priv->entry));
gtk_widget_realize (completion->priv->popup_window); gtk_widget_realize (completion->priv->popup_window);
_gtk_entry_completion_resize_popup (completion);
if (completion->priv->device) if (completion->priv->device)
{ {
gtk_grab_add (completion->priv->popup_window); gtk_grab_add (completion->priv->popup_window);