[Commits] [SCM] claws branch, gtk3, updated. 3.16.0-624-gd00697d
ticho at claws-mail.org
ticho at claws-mail.org
Fri Mar 29 18:36:03 CET 2019
The branch, gtk3 has been updated
via d00697d714887bbaa24190a20614c8330eafe34f (commit)
from 08e300bb44d5425b7cf0f5ada9e339d5d08eefdb (commit)
Summary of changes:
src/addr_compl.c | 24 +++++++++++++++---------
1 file changed, 15 insertions(+), 9 deletions(-)
- Log -----------------------------------------------------------------
commit d00697d714887bbaa24190a20614c8330eafe34f
Author: Andrej Kacian <ticho at claws-mail.org>
Date: Fri Mar 29 18:33:16 2019 +0100
Fix placement of address completion popup with candidate addresses
In GTK3, we cannot rely on gtk_widget_get_window() to
give us correct coordinates and size of the widget. Use
gtk_widget_get_allocation() for that instead.
Closes bug #4189: Box for autocompleting To address is in wrong place
diff --git a/src/addr_compl.c b/src/addr_compl.c
index d1727a2..e4c187d 100644
--- a/src/addr_compl.c
+++ b/src/addr_compl.c
@@ -1443,13 +1443,13 @@ static gboolean address_completion_complete_address_in_entry(GtkEntry *entry,
*/
static void address_completion_create_completion_window( GtkEntry *entry_ )
{
- gint x, y, height, width;
+ gint x, y;
+ GdkRectangle rect;
GtkWidget *scroll, *list_view;
GdkGrabStatus status;
GtkRequisition r;
GtkWidget *window;
GtkWidget *entry = GTK_WIDGET(entry_);
- GdkWindow *gdkwin;
/* Create new window and list */
window = gtk_window_new(GTK_WINDOW_POPUP);
@@ -1472,16 +1472,22 @@ static void address_completion_create_completion_window( GtkEntry *entry_ )
gtk_container_add(GTK_CONTAINER(scroll), list_view);
gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(scroll),
GTK_SHADOW_OUT);
- /* Use entry widget to create initial window */
- gdkwin = gtk_widget_get_window(entry),
- gdk_window_get_geometry(gdkwin, &x, &y, &width, &height);
- gdk_window_get_origin (gdkwin, &x, &y);
- y += height;
- gtk_window_move(GTK_WINDOW(window), x, y);
+
+ /* Use entry widget to position initial window */
+ gtk_widget_get_allocation(entry, &rect);
+
+ /* rect.x and rect.y are relative to parent of our GtkEntry,
+ * we need to convert them to absolute coordinates */
+ gdk_window_get_root_coords(
+ gtk_widget_get_window(gtk_widget_get_parent(entry)),
+ rect.x, rect.y, &x, &y);
+
+ /* Move the window to just below the GtkEntry */
+ gtk_window_move(GTK_WINDOW(window), x, y + rect.height);
/* Resize window to fit initial (empty) address list */
gtk_widget_size_request( list_view, &r );
- gtk_widget_set_size_request( window, width, r.height );
+ gtk_widget_set_size_request( window, rect.width, r.height );
gtk_widget_show_all( window );
gtk_widget_size_request( list_view, &r );
-----------------------------------------------------------------------
hooks/post-receive
--
Claws Mail
More information about the Commits
mailing list