[maemo-commits] [maemo-commits] r12941 - projects/haf/trunk/gtk+/gtk
From: subversion at stage.maemo.org subversion at stage.maemo.orgDate: Tue Jul 31 12:56:25 EEST 2007
- Previous message: [maemo-commits] r12940 - projects/haf/trunk/gtk+/gtk
- Next message: [maemo-commits] r12942 - projects/haf/trunk/gtk+/gtk
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Author: xan Date: 2007-07-31 12:56:22 +0300 (Tue, 31 Jul 2007) New Revision: 12941 Modified: projects/haf/trunk/gtk+/gtk/gtkentrycompletion.c Log: Address tko's review. Modified: projects/haf/trunk/gtk+/gtk/gtkentrycompletion.c =================================================================== --- projects/haf/trunk/gtk+/gtk/gtkentrycompletion.c 2007-07-31 09:56:19 UTC (rev 12940) +++ projects/haf/trunk/gtk+/gtk/gtkentrycompletion.c 2007-07-31 09:56:22 UTC (rev 12941) @@ -1330,6 +1330,16 @@ gboolean above; gint width; +#if defined(MAEMO_CHANGES) && defined(GDK_WINDOWING_X11) + GdkWindow *window = completion->priv->popup_window->window; + GdkDisplay *display = gdk_drawable_get_display (window); + Atom type_return; + int format_return, ret_val, n_rects; + gulong nitems_return, bytes_after_return; + guchar *data; + guint32 *val; +#endif + if (!completion->priv->entry->window) return FALSE; @@ -1391,14 +1401,6 @@ x = monitor.x + monitor.width - popup_req.width; #if defined(MAEMO_CHANGES) && defined(GDK_WINDOWING_X11) - GdkWindow *window = completion->priv->popup_window->window; - GdkDisplay *display = gdk_drawable_get_display (window); - Atom type_return; - int format_return, ret_val, n_rects; - gulong nitems_return, bytes_after_return; - guchar *data; - guint32 *val; - ret_val = XGetWindowProperty (GDK_DISPLAY_XDISPLAY (display), GDK_WINDOW_XWINDOW (gtk_widget_get_root_window (completion->priv->popup_window)), gdk_x11_get_xatom_by_name_for_display (display, "_NET_INPUT_AREAS"), @@ -1414,7 +1416,7 @@ { int i, j; GdkRectangle widget_rect; - GdkRectangle *rectangles = (GdkRectangle*)g_slice_alloc (sizeof(GdkRectangle)*n_rects); + GdkRectangle *rectangles = g_slice_alloc (sizeof(GdkRectangle)*n_rects); gint root_x, root_y; GdkRectangle *top = NULL, *bottom = NULL; gint to_top = -1, to_bottom = -1; @@ -1444,8 +1446,8 @@ if (gdk_rectangle_intersect (&widget_rect, &rectangles[i], &dest)) { - if (rectangles[i].y < root_y && - (top == NULL || top->y < rectangles[i].y)) + if (rectangles[i].y + rectangles[i].height < root_y && + (top == NULL || top->y + top->height < rectangles[i].y + rectangles[i].height)) { top = &rectangles[i]; } @@ -1467,6 +1469,9 @@ else to_bottom = monitor.height - (root_y + completion->priv->entry->allocation.y); + /* If the popup fits below the entry we will put it there, otherwise it will + go above it. If it does not fit in either direction we will put it below + anyway. This is not exactly right, but we don't have other options */ if (popup_req.height <= to_bottom) { above = FALSE; @@ -1479,7 +1484,8 @@ } else { - /* Doesn't fit (what should we do?) */ + above = FALSE; + y += entry_req.height; } g_slice_free1 (sizeof(GdkRectangle)*n_rects, rectangles);
- Previous message: [maemo-commits] r12940 - projects/haf/trunk/gtk+/gtk
- Next message: [maemo-commits] r12942 - projects/haf/trunk/gtk+/gtk
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]