mirror of
https://gitlab.gnome.org/GNOME/gtk.git
synced 2024-11-10 19:00:08 +00:00
gtk/entrycompletion: Ensure to show first row when shown, not allocated
This code was here in gtk3 to cater for the completion window being positioned. That was only to meant once as long as the completion window was shown. This doesn't work as well for gtk4, ::size-allocate gets propagated from the toplevel, so happens much more often for the completion window, this ends up with the completion position being reset to the first row frequently. Do this simply once when popping up the completion, instead. Fixes: https://gitlab.gnome.org/GNOME/gtk/-/issues/3083
This commit is contained in:
parent
3d84a38867
commit
79090f1755
@ -1099,7 +1099,6 @@ _gtk_entry_completion_resize_popup (GtkEntryCompletion *completion)
|
||||
GdkSurface *surface;
|
||||
GtkRequisition entry_req;
|
||||
GtkRequisition tree_req;
|
||||
GtkTreePath *path;
|
||||
int width;
|
||||
|
||||
surface = gtk_native_get_surface (gtk_widget_get_native (completion->entry));
|
||||
@ -1143,14 +1142,6 @@ _gtk_entry_completion_resize_popup (GtkEntryCompletion *completion)
|
||||
gtk_widget_set_size_request (completion->popup_window, width, -1);
|
||||
gtk_scrolled_window_set_min_content_height (GTK_SCROLLED_WINDOW (completion->scrolled_window), items * height);
|
||||
|
||||
if (matches > 0)
|
||||
{
|
||||
path = gtk_tree_path_new_from_indices (0, -1);
|
||||
gtk_tree_view_scroll_to_cell (GTK_TREE_VIEW (completion->tree_view), path,
|
||||
NULL, FALSE, 0.0, 0.0);
|
||||
gtk_tree_path_free (path);
|
||||
}
|
||||
|
||||
gtk_popover_present (GTK_POPOVER (completion->popup_window));
|
||||
}
|
||||
|
||||
@ -1175,6 +1166,16 @@ gtk_entry_completion_popup (GtkEntryCompletion *completion)
|
||||
|
||||
_gtk_entry_completion_resize_popup (completion);
|
||||
|
||||
if (completion->filter_model)
|
||||
{
|
||||
GtkTreePath *path;
|
||||
|
||||
path = gtk_tree_path_new_from_indices (0, -1);
|
||||
gtk_tree_view_scroll_to_cell (GTK_TREE_VIEW (completion->tree_view), path,
|
||||
NULL, FALSE, 0.0, 0.0);
|
||||
gtk_tree_path_free (path);
|
||||
}
|
||||
|
||||
gtk_popover_popup (GTK_POPOVER (completion->popup_window));
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user