gtk+ r22120 - in trunk: . gtk



Author: diegoe
Date: Thu Jan 15 09:51:07 2009
New Revision: 22120
URL: http://svn.gnome.org/viewvc/gtk+?rev=22120&view=rev

Log:
Don't assume actions and results have equal height

This causes negative size requisitions when results are more than one
line tall.

* gtk/gtkentrycompletion.c: change the formula used to calculate
the size of the completion popup.

Modified:
   trunk/ChangeLog
   trunk/gtk/gtkentrycompletion.c

Modified: trunk/gtk/gtkentrycompletion.c
==============================================================================
--- trunk/gtk/gtkentrycompletion.c	(original)
+++ trunk/gtk/gtkentrycompletion.c	Thu Jan 15 09:51:07 2009
@@ -1375,6 +1375,8 @@
   GtkTreePath *path;
   gboolean above;
   gint width;
+  GtkTreeViewColumn *action_column;
+  gint action_height;
 
   if (!completion->priv->entry->window)
     return FALSE;
@@ -1384,9 +1386,12 @@
 
   matches = gtk_tree_model_iter_n_children (GTK_TREE_MODEL (completion->priv->filter_model), NULL);
   actions = gtk_tree_model_iter_n_children (GTK_TREE_MODEL (completion->priv->actions), NULL);
+  action_column  = gtk_tree_view_get_column (GTK_TREE_VIEW (completion->priv->action_view), 0);
 
   gtk_tree_view_column_cell_get_size (completion->priv->column, NULL,
                                       NULL, NULL, NULL, &height);
+  gtk_tree_view_column_cell_get_size (action_column, NULL,
+                                      NULL, NULL, NULL, &action_height);
 
   gtk_widget_style_get (GTK_WIDGET (completion->priv->tree_view),
                         "vertical-separator", &vertical_separator,
@@ -1404,9 +1409,9 @@
   
 
   if (y > monitor.height / 2)
-    items = MIN (matches, (monitor.y + y) / height - actions);
+    items = MIN (matches, (((monitor.y + y) - (actions * action_height)) / height) - 1);
   else
-    items = MIN (matches, (monitor.height - y) / height - 1  - actions);
+    items = MIN (matches, (((monitor.height - y) - (actions * action_height)) / height) - 1);
 
   if (items <= 0)
     gtk_widget_hide (completion->priv->scrolled_window);



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]