Mercurial > geeqie
diff src/ui_tabcomp.c @ 12:147f4c4b9025
##### Note: GQview CVS on sourceforge is not always up to date, please use #####
##### an offical release when making enhancements and translation updates. #####
Tue Mar 1 11:32:26 2005 John Ellis <johne@verizon.net>
* src/Makefile.am: Add pan-view.[ch]:
* image.[ch]: Add support for using a grid of tiles as soource image. Added
scroll_notify callback for when the viewable regionis scrolled. Added ability
to set min and max for the zoom range. Removed unnecessary
gtk_widget_size_request from image_size_sync. Added image_scroll_to_point.
* layout_util.c: Add menu item and callback for the new 'Pan view'.
* pixbuf_util.c (pixbuf_draw_layout): Fix for when offset is non-zero.
* typedefs.h: Add source tile stuff for ImageWindow.
* ui_tabcomp.c: Fix tab completion pop-up menu placement.
* pan-view.[ch]: New files for the pan view - 2.1 is officially started :)
author | gqview |
---|---|
date | Tue, 01 Mar 2005 17:16:34 +0000 |
parents | d907d608745f |
children | 31759d770628 |
line wrap: on
line diff
--- a/src/ui_tabcomp.c Tue Mar 01 14:50:03 2005 +0000 +++ b/src/ui_tabcomp.c Tue Mar 01 17:16:34 2005 +0000 @@ -241,19 +241,40 @@ PangoRectangle strong_pos, weak_pos; gint length; gint xoffset, yoffset; - + GtkRequisition req; + GdkScreen *screen; + gint monitor_num; + GdkRectangle monitor; gdk_window_get_origin(td->entry->window, x, y); - height = MIN(td->entry->requisition.height, td->entry->allocation.height); - *y += height; + screen = gtk_widget_get_screen(GTK_WIDGET(menu)); + monitor_num = gdk_screen_get_monitor_at_window(screen, td->entry->window); + gdk_screen_get_monitor_geometry(screen, monitor_num, &monitor); + + gtk_widget_size_request(GTK_WIDGET(menu), &req); length = strlen(gtk_entry_get_text(GTK_ENTRY(td->entry))); gtk_entry_get_layout_offsets(GTK_ENTRY(td->entry), &xoffset, &yoffset); layout = gtk_entry_get_layout(GTK_ENTRY(td->entry)); pango_layout_get_cursor_pos(layout, length, &strong_pos, &weak_pos); + *x += strong_pos.x / PANGO_SCALE + xoffset; + + height = MIN(td->entry->requisition.height, td->entry->allocation.height); + + if (req.height > monitor.y + monitor.height - *y - height && + *y - monitor.y > monitor.y + monitor.height - *y) + { + height = MIN(*y - monitor.y, req.height); + gtk_widget_set_size_request(GTK_WIDGET(menu), -1, height); + *y -= height; + } + else + { + *y += height; + } } static void tab_completion_popup_list(TabCompData *td, GList *list)