[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] emacs-26 d22b8d1: Adjust for scaling for mode-line popup m
From: |
Robert Pluim |
Subject: |
[Emacs-diffs] emacs-26 d22b8d1: Adjust for scaling for mode-line popup menus (Bug#31880) |
Date: |
Fri, 22 Jun 2018 04:03:21 -0400 (EDT) |
branch: emacs-26
commit d22b8d1ad12c69a2c97bb9f4c9eb4316df13429e
Author: Robert Pluim <address@hidden>
Commit: Robert Pluim <address@hidden>
Adjust for scaling for mode-line popup menus (Bug#31880)
* src/xmenu.c (menu_position_func) [HAVE_GTK3]: Take scaling
into account when calculating screen size.
---
src/xmenu.c | 17 ++++++++++++++++-
1 file changed, 16 insertions(+), 1 deletion(-)
diff --git a/src/xmenu.c b/src/xmenu.c
index e7ef31a..d285e56 100644
--- a/src/xmenu.c
+++ b/src/xmenu.c
@@ -1162,11 +1162,17 @@ menu_position_func (GtkMenu *menu, gint *x, gint *y,
gboolean *push_in, gpointer
GtkRequisition req;
int max_x = -1;
int max_y = -1;
+#ifdef HAVE_GTK3
+ int scale;
+#endif
Lisp_Object frame, workarea;
XSETFRAME (frame, data->f);
+#ifdef HAVE_GTK3
+ scale = xg_get_scale (data->f);
+#endif
/* TODO: Get the monitor workarea directly without calculating other
items in x-display-monitor-attributes-list. */
workarea = call3 (Qframe_monitor_workarea,
@@ -1192,11 +1198,20 @@ menu_position_func (GtkMenu *menu, gint *x, gint *y,
gboolean *push_in, gpointer
max_y = x_display_pixel_height (dpyinfo);
}
+ /* frame-monitor-workarea and {x,y}_display_pixel_width/height all
+ return device pixels, but GTK wants scaled pixels. The positions
+ passed in via data were already scaled for us. */
+#ifdef HAVE_GTK3
+ max_x /= scale;
+ max_y /= scale;
+#endif
*x = data->x;
*y = data->y;
/* Check if there is room for the menu. If not, adjust x/y so that
- the menu is fully visible. */
+ the menu is fully visible. gtk_widget_get_preferred_size returns
+ scaled pixels, so there is no need to apply the scaling
+ factor. */
gtk_widget_get_preferred_size (GTK_WIDGET (menu), NULL, &req);
if (data->x + req.width > max_x)
*x -= data->x + req.width - max_x;
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Emacs-diffs] emacs-26 d22b8d1: Adjust for scaling for mode-line popup menus (Bug#31880),
Robert Pluim <=