gint
_gtk_entry_completion_resize_popup (GtkEntryCompletion *completion)
{
+ gint x, y;
gint items, height, x_border, y_border;
+ GdkScreen *screen;
+ gint monitor_num;
+ GdkRectangle monitor;
+ GtkRequisition popup_req;
+ gdk_window_get_origin (completion->priv->entry->window, &x, &y);
get_borders (GTK_ENTRY (completion->priv->entry), &x_border, &y_border);
+ x += x_border;
+ y += 2 * y_border;
+
items = gtk_tree_model_iter_n_children (GTK_TREE_MODEL (completion->priv->filter_model), NULL);
items = MIN (items, 15);
else
gtk_widget_hide (completion->priv->action_view);
+ gtk_widget_size_request (completion->priv->popup_window, &popup_req);
+
+ screen = gtk_widget_get_screen (GTK_WIDGET (completion->priv->entry));
+ monitor_num = gdk_screen_get_monitor_at_window (screen,
+ GTK_WIDGET (completion->priv->entry)->window);
+ gdk_screen_get_monitor_geometry (screen, monitor_num, &monitor);
+
+ if (x < monitor.x)
+ x = monitor.x;
+ else if (x + popup_req.width > monitor.x + monitor.width)
+ x = monitor.x + monitor.width - popup_req.width;
+
+ if (y + height + popup_req.height <= monitor.y + monitor.height)
+ y += height;
+ else
+ y -= popup_req.height;
+
+ gtk_window_move (GTK_WINDOW (completion->priv->popup_window), x, y);
+
return height;
}
void
_gtk_entry_completion_popup (GtkEntryCompletion *completion)
{
- gint x, y, x_border, y_border;
- gint height;
- GdkScreen *screen;
- gint monitor_num;
- GdkRectangle monitor;
- GtkRequisition popup_req;
GtkTreeViewColumn *column;
GList *renderers;
gtk_widget_show_all (completion->priv->vbox);
- gdk_window_get_origin (completion->priv->entry->window, &x, &y);
- get_borders (GTK_ENTRY (completion->priv->entry), &x_border, &y_border);
-
- x += x_border;
- y += 2 * y_border;
-
- height = _gtk_entry_completion_resize_popup (completion);
-
- gtk_widget_size_request (completion->priv->popup_window, &popup_req);
-
- screen = gtk_widget_get_screen (GTK_WIDGET (completion->priv->entry));
- monitor_num = gdk_screen_get_monitor_at_window (screen,
- GTK_WIDGET (completion->priv->entry)->window);
- gdk_screen_get_monitor_geometry (screen, monitor_num, &monitor);
-
- if (x < monitor.x)
- x = monitor.x;
- else if (x + popup_req.width > monitor.x + monitor.width)
- x = monitor.x + monitor.width - popup_req.width;
-
- if (y + height + popup_req.height <= monitor.y + monitor.height)
- y += height;
- else
- y -= popup_req.height;
-
- gtk_window_move (GTK_WINDOW (completion->priv->popup_window), x, y);
+ _gtk_entry_completion_resize_popup (completion);
gtk_widget_show (completion->priv->popup_window);