From unknown Sat Jun 14 05:22:31 2025 X-Loop: help-debbugs@gnu.org Subject: bug#38402: [PATCH] Fix empty/incorrect GTK menus on HiDPI monitors with window scaling factor > 1 Resent-From: Tobias Bading Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Wed, 27 Nov 2019 16:00:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 38402 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch To: 38402@debbugs.gnu.org X-Debbugs-Original-To: bug-gnu-emacs@gnu.org Received: via spool by submit@debbugs.gnu.org id=B.157487039222371 (code B ref -1); Wed, 27 Nov 2019 16:00:02 +0000 Received: (at submit) by debbugs.gnu.org; 27 Nov 2019 15:59:52 +0000 Received: from localhost ([127.0.0.1]:56102 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iZzjL-0005ok-Ns for submit@debbugs.gnu.org; Wed, 27 Nov 2019 10:59:52 -0500 Received: from lists.gnu.org ([209.51.188.17]:45399) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iZzjK-0005od-I5 for submit@debbugs.gnu.org; Wed, 27 Nov 2019 10:59:50 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:55310) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iZzjI-0000jX-Q2 for bug-gnu-emacs@gnu.org; Wed, 27 Nov 2019 10:59:50 -0500 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=-0.6 required=5.0 tests=BAYES_00,FREEMAIL_FROM, RCVD_IN_DNSWL_LOW,SPOOFED_FREEMAIL,URIBL_BLOCKED autolearn=disabled version=3.3.2 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iZzjG-0000F6-Ox for bug-gnu-emacs@gnu.org; Wed, 27 Nov 2019 10:59:48 -0500 Received: from mout.web.de ([212.227.17.11]:47179) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1iZzjC-0000As-Sw for bug-gnu-emacs@gnu.org; Wed, 27 Nov 2019 10:59:44 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=web.de; s=dbaedf251592; t=1574870379; bh=E/PbpuiPLZ+fupudQKXqXGG8Y068Qk47TQ+s1yP7amc=; h=X-UI-Sender-Class:To:From:Subject:Date; b=gs0ttUiWI44vvB4tR1WxFzLaeokzxvEhq0Bdk3XXOpy3JqmeXbHI2elrtBuWqCx3/ kKneP9rHe2HPu8/AWgIYGnxe3qOGPNOlICtif5F7L41HO9bnWVCplE39ADlpuw3xeO wTl0d1ps7TsM5TgFpC1pvwVYc8rSIDskIZF29sy0= X-UI-Sender-Class: c548c8c5-30a9-4db5-a2e7-cb6cb037b8f9 Received: from [192.168.2.103] ([84.143.156.184]) by smtp.web.de (mrweb102 [213.165.67.124]) with ESMTPSA (Nemesis) id 0MgO8g-1iCOZZ2iRi-00NeoI for ; Wed, 27 Nov 2019 16:59:39 +0100 From: Tobias Bading Message-ID: <500cbb5f-b7e4-f809-d8fe-567e39e981fc@web.de> Date: Wed, 27 Nov 2019 16:59:39 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.1.2 MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="------------B29E641BEAC7050CB65CCF73" Content-Language: en-US X-Provags-ID: V03:K1:mwnisxF4DQpw4TcoV+cdYa2mKIUBbVlM/Xs8Z8AleQFlX2/Htkv 4FsSOX8DBZwcvEHtfI99ZutHJy27J67qvOekaG2Hv9IhnbsEVRVGLP38Otbo3z4Thm6VMRO 1/mSQgv3j8zJ5Vq6sliTJuYKMtpYaUyvK3giXGPNTDe6K20RvlkuXUrvcKQ5gliq89QeI/h Y2bJz7++COvLzb5KLKJ+g== X-UI-Out-Filterresults: notjunk:1;V03:K0:IC+V6Y1jHN0=:xOLSgaTf03G8GCUAmTdMSi hCGEssBZ80BCHdieZezQUl32BsO37y8504jO+fLu4DBS8q6HCuMVGnWkUKpF8zdXWKQNAtkws vzCdJftcIezhfCsjhG9sdbQ0VEz/o4ahmfESoWS0Fr5f++lQOiszCeH3esM5yww7VRJic6M1M 4KndLBBfCZEV2js7a8yr5nZoBG+EGr0MNZHJRpa+AaaA4HIlmaGsGj85+FFynzkQgp5Jmrh6F UtTW01uh/c8/0sYW/GWZrCKQJ+W4ItxqKdiIs5kWC2zm3f1B7WJLsemBULqA3XSXk+uP96d29 ekh3QAuQQ94XCthJWEbo6M0bR3HgyCXzO35pAKFKq6L54m5eUTVal64Bv89OM3m+WuSAyQsze Ld3xFZ9nKIBJ/Y+C0jmUAERTram9ARHHXU6MkWOhCb6KifFVKGZ/ZUJOujUzMsF972Wuabpja XGPETph6qFRV8P0f9vYkOFWBfbfgIlkiEdm9a7BGexTWMszQY9vy6CKrAA3DYqUDeIJ/v+npW 26aYneZwui8t7dW/i46OED7OmgaHBzHmrV/X9zAR7IsT+rnsbtOFkh2rsHRIGzQaT/fDnfs9D jxvHpWh5Fg+jcHv8gKblrURwYUsSaHrPGI9tgyNmoDJzUesoXRsfAMRSmiRopR4h4S6RU7NpM 2h2xp6mZ9kIK9bqtJ16XHdY8igTks/9Y9tqSA5R90Ucu+i9f+tij8V47QuTUXo5vDSeKtJ2Xo RKnwi3KbBybi8r+iO2i6ANT6/S1NP+T7BEfOcpkhNbjDjtaPXPl6q83aXBIxIfOJAm79+ARdA XI9KnC06Q+18FACxB8U6jmD4i0KHf21cooVOO16is98Cfs+etyMFbOKHihO2QU9/jdaTEFZsJ tE372NDObG220yAsZqFy7OQsAjTFNvYnL15K9K0LAsR2t9ikbuPmk0FWX221nQVQkeIteU7QG pYzdTx8+XILkODZqAs9IJTNqv5bVM249KqvTw9hHoOjJ4OGOyzZb4gfQdGGvKCm7fMSd4wjmc d7IOU2QlpYZvAfsLdU11aOU0RAItF8XoevpG0ZSDGDu2vyDxslUkxhUyYw5wD/wJp7dBaACNz rVao/ZqhVyCXOKAtjbaKLWtk7BBorUJMMVSQQlKGyFTIbVCtZoM9XcfjPm5Ul/PSnr0qElYh6 lTSJ2RMXrftkPpTDQQLr/HDNKZeQ8uFGrrBccW3i8Uh6+eNPwdOa95PlJVeRD1X2hdL+/s5Z4 ptirFJHx4etzWky6dOZHaFmvKFItpS2N+yq52zA== X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 212.227.17.11 X-Spam-Score: 0.6 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -2.4 (--) This is a multi-part message in MIME format. --------------B29E641BEAC7050CB65CCF73 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: quoted-printable This should fix Bug#31223, Bug#28106, Bug#23672 as well as Ubuntu bug https://bugs.launchpad.net/ubuntu/+source/emacs25/+bug/1695228 Also fixes the formerly unscaled Y value returned by frame-monitor-workarea (and display-monitor-attributes-list). For details on why some GTK menus were empty please see thread https://lists.gnu.org/archive/html/emacs-devel/2019-11/msg01061.html * src/gtkutil.c =C2=A0 (menubar_map_cb): properly scale req.height so that the menu bar's =C2=A0 height is in device pixels as expected =C2=A0 (xg_update_frame_menubar): dito =C2=A0 (xg_event_is_for_menubar): properly scale rec.x and rec.y so that =C2=A0 gtk_widget_intersect() works as intended * src/xfns.c =C2=A0 (Fx_display_monitor_attributes_list): properly scale work.x and wo= rk.y --------------B29E641BEAC7050CB65CCF73 Content-Type: text/x-patch; charset=UTF-8; name="0001-Fix-empty-incorrect-GTK-menus-on-HiDPI-monitors.patch" Content-Transfer-Encoding: quoted-printable Content-Disposition: attachment; filename*0="0001-Fix-empty-incorrect-GTK-menus-on-HiDPI-monitors.patch" =46rom ee5855067f50f6e208a960994eec7184d44d324e Mon Sep 17 00:00:00 2001 From: Tobias Bading Date: Wed, 27 Nov 2019 16:51:26 +0100 Subject: [PATCH] Fix empty/incorrect GTK menus on HiDPI monitors with wind= ow scaling factor > 1 This should fix Bug#31223, Bug#28106, Bug#23672 as well as Ubuntu bug https://bugs.launchpad.net/ubuntu/+source/emacs25/+bug/1695228 Also fixes the formerly unscaled Y value returned by frame-monitor-workarea (and display-monitor-attributes-list). For details on why some GTK menus were empty please see thread https://lists.gnu.org/archive/html/emacs-devel/2019-11/msg01061.html * src/gtkutil.c (menubar_map_cb): properly scale req.height so that the menu bar's height is in device pixels as expected (xg_update_frame_menubar): dito (xg_event_is_for_menubar): properly scale rec.x and rec.y so that gtk_widget_intersect() works as intended * src/xfns.c (Fx_display_monitor_attributes_list): properly scale work.x and work.y =2D-- src/gtkutil.c | 8 +++++--- src/xfns.c | 2 ++ 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/src/gtkutil.c b/src/gtkutil.c index cf5c31aa20..7e6db57c9d 100644 =2D-- a/src/gtkutil.c +++ b/src/gtkutil.c @@ -3471,6 +3471,7 @@ menubar_map_cb (GtkWidget *w, gpointer user_data) GtkRequisition req; struct frame *f =3D user_data; gtk_widget_get_preferred_size (w, NULL, &req); + req.height *=3D xg_get_scale (f); if (FRAME_MENUBAR_HEIGHT (f) !=3D req.height) { FRAME_MENUBAR_HEIGHT (f) =3D req.height; @@ -3502,7 +3503,7 @@ xg_update_frame_menubar (struct frame *f) g_signal_connect (x->menubar_widget, "map", G_CALLBACK (menubar_map_cb)= , f); gtk_widget_show_all (x->menubar_widget); gtk_widget_get_preferred_size (x->menubar_widget, NULL, &req); - + req.height *=3D xg_get_scale (f); if (FRAME_MENUBAR_HEIGHT (f) !=3D req.height) { FRAME_MENUBAR_HEIGHT (f) =3D req.height; @@ -3568,8 +3569,9 @@ xg_event_is_for_menubar (struct frame *f, const XEve= nt *event) list =3D gtk_container_get_children (GTK_CONTAINER (x->menubar_widget))= ; if (! list) return 0; - rec.x =3D event->xbutton.x; - rec.y =3D event->xbutton.y; + int scale =3D xg_get_scale (f); + rec.x =3D event->xbutton.x / scale; + rec.y =3D event->xbutton.y / scale; rec.width =3D 1; rec.height =3D 1; diff --git a/src/xfns.c b/src/xfns.c index b1b40702c2..47aa19607f 100644 =2D-- a/src/xfns.c +++ b/src/xfns.c @@ -5093,6 +5093,8 @@ DEFUN ("x-display-monitor-attributes-list", Fx_displ= ay_monitor_attributes_list, #endif rec.width *=3D scale; rec.height *=3D scale; + work.x *=3D scale; + work.y *=3D scale; work.width *=3D scale; work.height *=3D scale; =2D- 2.20.1 --------------B29E641BEAC7050CB65CCF73-- From debbugs-submit-bounces@debbugs.gnu.org Wed Nov 27 11:22:42 2019 Received: (at control) by debbugs.gnu.org; 27 Nov 2019 16:22:42 +0000 Received: from localhost ([127.0.0.1]:56121 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ia05R-0006NF-Ql for submit@debbugs.gnu.org; Wed, 27 Nov 2019 11:22:42 -0500 Received: from mout.web.de ([212.227.17.11]:41965) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ia05P-0006N1-Cm for control@debbugs.gnu.org; Wed, 27 Nov 2019 11:22:40 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=web.de; s=dbaedf251592; t=1574871752; bh=mMh+nXguO0eb63yY22KBE6vJS+GzaqnhcH2B2KMe0VU=; h=X-UI-Sender-Class:To:From:Subject:Date; b=rNJVFs0inatQvLbAozoBOu2uzQ7SmebP1cq2u/w0TVtgBlD3hOhK1CnqiSn6oUbuf AMPXgkeUH9Xvq0Lzt51Z+p6UVDyRiWjvl1+FMmhpDSokMelfFBdIOvQqLCgsBB7M1U 9AKO1W2yvkkRCMJmtdBLptiLUWVNBl6CMTgZMvaA= X-UI-Sender-Class: c548c8c5-30a9-4db5-a2e7-cb6cb037b8f9 Received: from [192.168.2.103] ([84.143.156.184]) by smtp.web.de (mrweb101 [213.165.67.124]) with ESMTPSA (Nemesis) id 0M09ZI-1hfqaq2njo-00uLpf for ; Wed, 27 Nov 2019 17:22:32 +0100 To: control@debbugs.gnu.org From: Tobias Bading Subject: close accidentally opened bug#38402 Message-ID: <2507c794-dd07-2750-f223-44fa2f027ed3@web.de> Date: Wed, 27 Nov 2019 17:22:32 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.1.2 MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit Content-Language: en-US X-Provags-ID: V03:K1:2AdBQ6xbvc35LBIcvZGLcTdEwo3NDatIobe66NQFgusVaPPSiAT Ux+/45iXmVYFXqchd5UH1A0wp5/z3qhyKPLy80wIiq1UUy1KiYr4DGqqOU1UawSGPq4jMnq z/SQ2YhwlX6s9ONncnTHI1MpvianjuNgnyS2ljj6pDqKNBQ52P3m6h+p5mWDriPcTJvpmwv wMzwLK10vP3i44m9wGkHQ== X-Spam-Flag: NO X-UI-Out-Filterresults: notjunk:1;V03:K0:GgawvBRX53Q=:UWRM4MDbrEEwolzptcd3TP RLVBYjIig8iESK7XDMzoFYLUKXdf5V2JzTohUaTNUC6H+MbV54dsK9XqWMoB2r1jn83LWF+yl ZviNdYjYDJHu5HXIfx1Zg5H/6LpXh9YForPogWlJaTf7lntkq94IyGH1TmkN2Mo/HXtg3JjgQ ofyRYfBT5jODP8p6s4BSQDtURo44+pXnA25wt41YjExjgKTC+JBm9waeAa8BdjqpcS8lGDdyA UO+ey8F4Wjh5baTLN/Yp2U+D8nsDAVVvMda0zWb66EOLxuSUTi7SaRpyZDfRSHasMpJZTas2/ n1d3+1S7Wgp2YG0ytGiHMPehtWI6L+5DKyuTYtmZ4vfwZIkswfLmQ2luoxnFuC3enws1zUfOK jJEKgPg7DwdWQ/gsRKec8HVEoddA3Dvi73UqNFM+sMxjCUFv+MoisvCGn8xNj/bp6E5UaNysL yDblD5RcZxk7Jyxp2bp1awsSP/dzGLNOQ5zkPtfY/IwkP+5SEFPr5kn/V6sRXy1lOZtuvXmvI t923WG1znM/ekC0xhcp1yHvE0qRKxbzKST9o/Ju3lf/YRyDqIbvybsDU89AYGvJjigKsj72Mz o3t/HBEFXUnYROisDjlGJsB6ZYWStAooJf2PzDyJ69vr6agtfoanHCFesJ7J6Jq43R69YoYtr MoU949KuK819FIQUbQW4tZ+BYGA0OlN6d6KAsONweOfTqYPdfI7AcKc+jkJ11XKW8sAkiMzJf SxFL6tpR3a/+87zPRfsYPEmcvkBbUCRqI6exDJYJUscG+8oTX4iuG+m07pFFT+n+Lc5RUaFmG 46UXdMUsj8kxBmk/2aEJtshmaV5f7f2EBd+GC97qq598ug/ZVgXqMxAc9BXy7l5BA7aQh8qZo mnY6qCh686UGPkqfZ0Veig41liwZ1luqMrPUu/YfKOOfiydYscJNXfdLW/JBGiUJ1yXzPhSXO bzpFwO6BnOgX9qZi7CvvNiEbgebwymSeycDlSWwwn8924xA7uEXqmVzd7WSZUcB7yulOTmU68 RnCzexDivNueTLe5vrqJVKV++N6b63uX5UaXnkzRAT8X61enIATqezE/YOVtp7UIo4pghv2HV zaSD8VqVkqjZmCzniuZLXsQl+nQUgfuK5wx8LlrVhswNsax621e0VAWHfGTA/hNqwkv9BNjbX VKWQrdzbwwosIkNCAur+hMZLrXx+NUgSv9D6AiccOzvYl4XAV31VLzsIs53ViVvp1bkGLQtAc Qcv9ytTStDvNP4K8D3BvvykoAT//CU3EuNhyTGpnhmQjR6NiUdzGbBMjL3+0oK9+D9cbAbBIZ gflPmK5UzpFe3amQR53dlsFDqhv7h+mo9lEi8tmQlhbgH77rYRCN52xUj8+vWrRWDkes1etIV FvM/xlQvnj07Sos1I7hmg== X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: control X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.7 (-) close 38402