From unknown Sun Jun 22 22:45:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#40200: 28.0.50; NS: text drawing glitches in maximized frame with frame-inhibit-implied-resize Resent-From: Andrii Kolomoiets Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Mon, 23 Mar 2020 18:14:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 40200 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: 40200@debbugs.gnu.org X-Debbugs-Original-To: bug-gnu-emacs@gnu.org Received: via spool by submit@debbugs.gnu.org id=B.158498723710759 (code B ref -1); Mon, 23 Mar 2020 18:14:01 +0000 Received: (at submit) by debbugs.gnu.org; 23 Mar 2020 18:13:57 +0000 Received: from localhost ([127.0.0.1]:53525 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1jGRaH-0002nT-CM for submit@debbugs.gnu.org; Mon, 23 Mar 2020 14:13:57 -0400 Received: from lists.gnu.org ([209.51.188.17]:34705) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1jGRaE-0002nI-SH for submit@debbugs.gnu.org; Mon, 23 Mar 2020 14:13:55 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:59487) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jGRaD-0002Wo-PQ for bug-gnu-emacs@gnu.org; Mon, 23 Mar 2020 14:13:54 -0400 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: **** X-Spam-Status: No, score=4.1 required=5.0 tests=BAYES_50,FREEMAIL_FROM, RCVD_IN_SBL_CSS,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 1jGRaC-0005xJ-Lj for bug-gnu-emacs@gnu.org; Mon, 23 Mar 2020 14:13:53 -0400 Received: from mail-lf1-x136.google.com ([2a00:1450:4864:20::136]:42796) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1jGRaC-0005x0-FY for bug-gnu-emacs@gnu.org; Mon, 23 Mar 2020 14:13:52 -0400 Received: by mail-lf1-x136.google.com with SMTP id t21so11006537lfe.9 for ; Mon, 23 Mar 2020 11:13:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:subject:date:message-id:mime-version; bh=l6zludlVzukEQjC1bA4ivuhfbG4Yxu9BPAcPrPu8vMQ=; b=rSPLZO514rxvTdxW0Zrlbtvt8tUfsDMMdAJDK5Bjr5jIon6iJRexT39Q0rJr12imKc MwuAtlM6dsqCr4dr+D3yTskOzUJpwPH3zbrJbAsiIw2xUKyKF0vOgLMmDVlMbvNBF/o2 u7kKWHzHA71iVhJhgVDJfYvQ1F0cvnBTSp3zm9xlC29V9BLEnlfNoBa3O85pMfehJXaP /RBfRLWzMFgYd2c5kSRsMK3rrKX/pKPvoIFzSkifXO+syUndBrIaPzpFX6Zi9LpcWZhb VHi9ZjwmuDIYbhJ+PlGBeagnH8E+Bos5aHRQv7b1rFe9FRY7lvY7TVhjM/eA2BElmpoI fcZw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:mime-version; bh=l6zludlVzukEQjC1bA4ivuhfbG4Yxu9BPAcPrPu8vMQ=; b=i6/E10zXop1JFQ+Yd07Y+lpY82x86ua5smcha5v/+MdT/P7MKt2pasPCgvbPMRDwqt pZMgUnHLEcwMOVFwA7ugU4jCpViqzT1P39I8qndpLDDwsmRuwAob5DmO3l+3EMIU2OfD 6xKlV9nL7e56lZmh3fuksVSxEm4TcMO3w4xDwQ4yRsoG9yx3U0/phyuSBtVFdNCNs9DV p6oR8O51wdszv8Dnf3U40ltGgY7REbhePV+Ne6OQ+nNrjPzIxuGl/WjDQpc7ySjJrou8 fosK/YPWe4Z+BDFXRVDWMbDnIU5m9cGZQfDadlOc3RipXsqeEZrm3+72U8ktzdZTf0IJ B93g== X-Gm-Message-State: ANhLgQ2pOdDtwcE8qeuHT7aps8tKtb/EoF//XtPxAVvqcg6BokzV6EXu gKMkmBaa7zZqxQXUVt1Dkhk7wmdj X-Google-Smtp-Source: ADFU+vs8mtOUNFvc3GgrkpJG3e9NDTm+c3zWnoLIb1LyaqaAVjcFzOqXe2U4kVJSM4lp/4xKdaVbZw== X-Received: by 2002:a05:6512:2e4:: with SMTP id m4mr8570272lfq.202.1584987230409; Mon, 23 Mar 2020 11:13:50 -0700 (PDT) Received: from muffinmac.local ([91.206.110.153]) by smtp.gmail.com with ESMTPSA id c2sm8729342lja.84.2020.03.23.11.13.48 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 23 Mar 2020 11:13:49 -0700 (PDT) From: Andrii Kolomoiets Date: Mon, 23 Mar 2020 20:13:19 +0200 Message-ID: MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:4864:20::136 X-Spam-Score: 3.8 (+++) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: 1. emacs -Q 2. (setq frame-inhibit-implied-resize t) 3. M-x toggle-frame-maximized 4. C-x b RET (to open *Messages* buffer) 5. M-x tool-bar-mode After some up-down mouse scroll, buffer text is drawn incorrectly. Content analysis details: (3.8 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- 0.0 URIBL_BLOCKED ADMINISTRATOR NOTICE: The query to URIBL was blocked. See http://wiki.apache.org/spamassassin/DnsBlocklists#dnsbl-block for more information. [URIs: imgur.com] 3.6 RCVD_IN_SBL_CSS RBL: Received via a relay in Spamhaus SBL-CSS [91.206.110.153 listed in zen.spamhaus.org] 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider (andreyk.mad[at]gmail.com) 1.0 SPF_SOFTFAIL SPF: sender does not match SPF record (softfail) -0.7 RCVD_IN_DNSWL_LOW RBL: Sender listed at https://www.dnswl.org/, low trust [209.51.188.17 listed in list.dnswl.org] 0.0 SPOOFED_FREEMAIL No description available. 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.8 (++) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: 1. emacs -Q 2. (setq frame-inhibit-implied-resize t) 3. M-x toggle-frame-maximized 4. C-x b RET (to open *Messages* buffer) 5. M-x tool-bar-mode After some up-down mouse scroll, buffer text is drawn incorrectly. Content analysis details: (2.8 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- 0.0 URIBL_BLOCKED ADMINISTRATOR NOTICE: The query to URIBL was blocked. See http://wiki.apache.org/spamassassin/DnsBlocklists#dnsbl-block for more information. [URIs: imgur.com] 3.6 RCVD_IN_SBL_CSS RBL: Received via a relay in Spamhaus SBL-CSS [91.206.110.153 listed in zen.spamhaus.org] -0.7 RCVD_IN_DNSWL_LOW RBL: Sender listed at https://www.dnswl.org/, low trust [209.51.188.17 listed in list.dnswl.org] 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider (andreyk.mad[at]gmail.com) 1.0 SPF_SOFTFAIL SPF: sender does not match SPF record (softfail) -1.0 MAILING_LIST_MULTI Multiple indicators imply a widely-seen list manager 1. emacs -Q 2. (setq frame-inhibit-implied-resize t) 3. M-x toggle-frame-maximized 4. C-x b RET (to open *Messages* buffer) 5. M-x tool-bar-mode After some up-down mouse scroll, buffer text is drawn incorrectly. Not sure if image attaches are allowed here, so screenshot is on imgur: https://imgur.com/a/QSSNePE In GNU Emacs 28.0.50 (build 2, x86_64-apple-darwin19.3.0, NS appkit-1894.30 Version 10.15.3 (Build 19D76)) of 2020-03-18 built on muffinmac.local Windowing system distributor 'Apple', version 10.3.1894 System Description: Mac OS X 10.15.3 From unknown Sun Jun 22 22:45:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#40200: 28.0.50; NS: text drawing glitches in maximized frame with frame-inhibit-implied-resize Resent-From: Eli Zaretskii Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Mon, 23 Mar 2020 19:23:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 40200 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Andrii Kolomoiets Cc: 40200@debbugs.gnu.org Received: via spool by 40200-submit@debbugs.gnu.org id=B40200.158499134817553 (code B ref 40200); Mon, 23 Mar 2020 19:23:01 +0000 Received: (at 40200) by debbugs.gnu.org; 23 Mar 2020 19:22:28 +0000 Received: from localhost ([127.0.0.1]:53537 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1jGSeZ-0004Z3-SL for submit@debbugs.gnu.org; Mon, 23 Mar 2020 15:22:28 -0400 Received: from eggs.gnu.org ([209.51.188.92]:57626) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1jGSeY-0004Yp-5v for 40200@debbugs.gnu.org; Mon, 23 Mar 2020 15:22:26 -0400 Received: from fencepost.gnu.org ([2001:470:142:3::e]:60556) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1jGSeS-0008OX-8c; Mon, 23 Mar 2020 15:22:20 -0400 Received: from [176.228.60.248] (port=2876 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1jGSeR-0007rn-1q; Mon, 23 Mar 2020 15:22:20 -0400 Date: Mon, 23 Mar 2020 21:22:23 +0200 Message-Id: <83eetic1w0.fsf@gnu.org> From: Eli Zaretskii In-Reply-To: (message from Andrii Kolomoiets on Mon, 23 Mar 2020 20:13:19 +0200) References: X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Spam-Score: -0.7 (/) 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 (-) > From: Andrii Kolomoiets > Date: Mon, 23 Mar 2020 20:13:19 +0200 > > 1. emacs -Q > 2. (setq frame-inhibit-implied-resize t) > 3. M-x toggle-frame-maximized > 4. C-x b RET (to open *Messages* buffer) > 5. M-x tool-bar-mode > > After some up-down mouse scroll, buffer text is drawn incorrectly. I cannot reproduce this, so it's probably Darwin-specific. > Not sure if image attaches are allowed here Of course they are. Thanks. From unknown Sun Jun 22 22:45:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#40200: 28.0.50; NS: text drawing glitches in maximized frame with frame-inhibit-implied-resize Resent-From: Andrii Kolomoiets Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Mon, 23 Mar 2020 19:48:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 40200 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Eli Zaretskii Cc: 40200@debbugs.gnu.org Received: via spool by 40200-submit@debbugs.gnu.org id=B40200.158499284420116 (code B ref 40200); Mon, 23 Mar 2020 19:48:02 +0000 Received: (at 40200) by debbugs.gnu.org; 23 Mar 2020 19:47:24 +0000 Received: from localhost ([127.0.0.1]:53562 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1jGT2h-0005EN-R5 for submit@debbugs.gnu.org; Mon, 23 Mar 2020 15:47:24 -0400 Received: from mail-lj1-f171.google.com ([209.85.208.171]:38956) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1jGT2f-0005EA-VJ for 40200@debbugs.gnu.org; Mon, 23 Mar 2020 15:47:22 -0400 Received: by mail-lj1-f171.google.com with SMTP id i20so3973830ljn.6 for <40200@debbugs.gnu.org>; Mon, 23 Mar 2020 12:47:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:subject:from:in-reply-to:date:cc :content-transfer-encoding:message-id:references:to; bh=PyUAEJFBQR5r5rlOD4N+ezsJ6E+mGt6UxS47IFWdZPk=; b=kf2/RnJjb9NLsbdcUgEAIXA3FPmz4EO7k8OD7O2B8xgSJNGWnYy30psZ29Eq0FamID RdJXbi4q7f/47Dyy/GXWs99Qn7BUutjqHoT1TgtPjVc6gpdPgJVeURzvGQtlf6ZpYf1j vsXMXc0vYTMmhCaPkIwJoEDL+zypUTuHKU+MNzACSIwBpecAhB+zoqew2VZTXzsEsHw1 JxS/L3E4oVpuGYR7CfOItORTRFmFsMknXV+7j7WkK+CXOYZQztED6h6H2BXn2yVbulxD X0CTcjlGOOPkHUeFpZY/JVS1Yd3qDe4S65u7omWCNcxwyD/Vo6otnJffnIMcg+xevNuM elEg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:subject:from:in-reply-to:date:cc :content-transfer-encoding:message-id:references:to; bh=PyUAEJFBQR5r5rlOD4N+ezsJ6E+mGt6UxS47IFWdZPk=; b=Ef4AtBt8q7fM0ceLmon3pc/LCXrksXVZIxC+vN9bq6uAn6qLiT/2Z/+hBfLXxbt8Oa Kk7Oj3JJ09RZk2ckhENphSlQHCiIVVMdkLaKWfTE2zfEt1H2tiSnNZUlGkDwcAW+Y3+L r6HnrCdME+Py6+95ivMQNkYACi2MldwPikUdQQw+xpTRpqlZZ0Qp7Fb8t9W8dIYLLtk2 /gnoOmmJR4/aq4bgByqVkwrauKfrdpwNU2piwRq5HF8J3/m9jHMBnroNa7ipbe/5QTCj C1ebzF3p0ONnB9zzprUprHqsBlY/UI3PeeVq/JBpWflO4Hxw1WEbAIs31rke0Yh2JYce GAtQ== X-Gm-Message-State: ANhLgQ1EF22UeIZmKBVuXKSL7F9nNodFsgp+oJhZhznPp4fnGuXx3VZP k2Rz6RVdFBcxM2s0fIPpdEc= X-Google-Smtp-Source: ADFU+vsj9QrEIDBlV/dHSKAHA1NWSh8sJPYAsdkg0WSE69O/TKHBBrdz0Oq6bSoH5A38hSGjYb8O0Q== X-Received: by 2002:a2e:730d:: with SMTP id o13mr14824863ljc.177.1584992835751; Mon, 23 Mar 2020 12:47:15 -0700 (PDT) Received: from [192.168.0.102] ([91.206.110.153]) by smtp.gmail.com with ESMTPSA id s22sm2475161ljh.88.2020.03.23.12.47.14 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 23 Mar 2020 12:47:15 -0700 (PDT) Content-Type: text/plain; charset=us-ascii Mime-Version: 1.0 (Mac OS X Mail 13.0 \(3608.60.0.2.5\)) From: Andrii Kolomoiets In-Reply-To: <83eetic1w0.fsf@gnu.org> Date: Mon, 23 Mar 2020 21:47:13 +0200 Content-Transfer-Encoding: quoted-printable Message-Id: References: <83eetic1w0.fsf@gnu.org> X-Mailer: Apple Mail (2.3608.60.0.2.5) X-Spam-Score: 3.6 (+++) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: On 23 Mar 2020, at 21:22, Eli Zaretskii wrote: > >> From: Andrii Kolomoiets >> Date: Mon, 23 Mar 2020 20:13:19 +0200 >> >> 1. emacs -Q >> 2. (setq frame-inhibit-implied-resize t) >> 3. M-x toggle- [...] Content analysis details: (3.6 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- 0.0 URIBL_BLOCKED ADMINISTRATOR NOTICE: The query to URIBL was blocked. See http://wiki.apache.org/spamassassin/DnsBlocklists#dnsbl-block for more information. [URIs: gnu.org] 3.6 RCVD_IN_SBL_CSS RBL: Received via a relay in Spamhaus SBL-CSS [91.206.110.153 listed in zen.spamhaus.org] 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider (andreyk.mad[at]gmail.com) -0.0 SPF_PASS SPF: sender matches SPF record -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at https://www.dnswl.org/, no trust [209.85.208.171 listed in list.dnswl.org] -0.0 RCVD_IN_MSPIKE_H2 RBL: Average reputation (+2) [209.85.208.171 listed in wl.mailspike.net] 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.6 (++) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: On 23 Mar 2020, at 21:22, Eli Zaretskii wrote: > >> From: Andrii Kolomoiets >> Date: Mon, 23 Mar 2020 20:13:19 +0200 >> >> 1. emacs -Q >> 2. (setq frame-inhibit-implied-resize t) >> 3. M-x toggle- [...] Content analysis details: (2.6 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- 0.0 URIBL_BLOCKED ADMINISTRATOR NOTICE: The query to URIBL was blocked. See http://wiki.apache.org/spamassassin/DnsBlocklists#dnsbl-block for more information. [URIs: gnu.org] -0.0 RCVD_IN_MSPIKE_H2 RBL: Average reputation (+2) [209.85.208.171 listed in wl.mailspike.net] 3.6 RCVD_IN_SBL_CSS RBL: Received via a relay in Spamhaus SBL-CSS [91.206.110.153 listed in zen.spamhaus.org] -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at https://www.dnswl.org/, no trust [209.85.208.171 listed in list.dnswl.org] 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider (andreyk.mad[at]gmail.com) -0.0 SPF_PASS SPF: sender matches SPF record -1.0 MAILING_LIST_MULTI Multiple indicators imply a widely-seen list manager On 23 Mar 2020, at 21:22, Eli Zaretskii wrote: >=20 >> From: Andrii Kolomoiets >> Date: Mon, 23 Mar 2020 20:13:19 +0200 >>=20 >> 1. emacs -Q >> 2. (setq frame-inhibit-implied-resize t) >> 3. M-x toggle-frame-maximized >> 4. C-x b RET (to open *Messages* buffer) >> 5. M-x tool-bar-mode >>=20 >> After some up-down mouse scroll, buffer text is drawn incorrectly. >=20 > I cannot reproduce this, so it's probably Darwin-specific. It is Darwin-specific. I marked the subject with "NS". Or should the = subject contain "macos" for Darwin-specific bugs? >> Not sure if image attaches are allowed here >=20 > Of course they are. Got it, thanks.= From unknown Sun Jun 22 22:45:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#40200: 28.0.50; NS: text drawing glitches in maximized frame with frame-inhibit-implied-resize Resent-From: Alan Third Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Mon, 23 Mar 2020 23:55:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 40200 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Andrii Kolomoiets Cc: 40200@debbugs.gnu.org Received: via spool by 40200-submit@debbugs.gnu.org id=B40200.158500768512464 (code B ref 40200); Mon, 23 Mar 2020 23:55:01 +0000 Received: (at 40200) by debbugs.gnu.org; 23 Mar 2020 23:54:45 +0000 Received: from localhost ([127.0.0.1]:53699 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1jGWu5-0003Ex-B3 for submit@debbugs.gnu.org; Mon, 23 Mar 2020 19:54:45 -0400 Received: from mailout-l3b-97.contactoffice.com ([212.3.242.97]:34124) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1jGWu3-0003Ek-NT for 40200@debbugs.gnu.org; Mon, 23 Mar 2020 19:54:44 -0400 Received: from smtpauth1.co-bxl (smtpauth1.co-bxl [10.2.0.15]) by mailout-l3b-97.contactoffice.com (Postfix) with ESMTP id 1140442B; Tue, 24 Mar 2020 00:54:37 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1585007677; s=20200222-6h9o; d=idiocy.org; i=alan@idiocy.org; h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version:Content-Type:Content-Transfer-Encoding:In-Reply-To; l=1237; bh=6xU1+N+Gdd8GeMEe8PetvATMIUBqiWWCXKAGM/cjX0o=; b=R6YGZUCpYrP2oXDgLLJYGYAszcx9qelWKI6yy6cmW6Gfk8f+ONoItnbGx5fYY8EC x2GoYymgj4ALEP0jfWcnp/9hQJf+QvoVolu044AFmiU9F7GJjzQApRDQ9u9u2DuBO2w LUWYWpIeCn7AHR77hIe9rDYG0D2WzMi0eu1X+v3fAPMCM54j9fuBxSPGTet2eHTYy17 /S5YEyiTQUp9AXfiLLDqvTBaILWxWbAiQIqnToupTZO4d5zf0/HtNHtNLjuAVGS0NJg RCke1DFvOA94j2DmGE6EnbfqLUoO45qG92E0hvFDx1vViS7CLBunbi9KEwvZM5Gx02b TcbEZrHVng== Received: by smtp.mailfence.com with ESMTPA ; Tue, 24 Mar 2020 00:54:33 +0100 (CET) Received: by idiocy.org (Postfix, from userid 501) id 639C0202098B2D; Mon, 23 Mar 2020 23:54:32 +0000 (GMT) Date: Tue, 24 Mar 2020 00:54:35 +0100 (CET) From: Alan Third Message-ID: <20200323235432.GA24426@breton.holly.idiocy.org> Mail-Followup-To: Alan Third , Andrii Kolomoiets , 40200@debbugs.gnu.org References: MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: X-Spam-Flag: NO X-Spam-Status: No, hits=-2.9 required=4.7 symbols=ALL_TRUSTED, BAYES_00 device=10.2.0.1 X-ContactOffice-Account: com:241649512 X-Spam-Score: -0.7 (/) 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 (-) On Mon, Mar 23, 2020 at 08:13:19PM +0200, Andrii Kolomoiets wrote: > 1. emacs -Q > 2. (setq frame-inhibit-implied-resize t) > 3. M-x toggle-frame-maximized > 4. C-x b RET (to open *Messages* buffer) > 5. M-x tool-bar-mode > > After some up-down mouse scroll, buffer text is drawn incorrectly. > > Not sure if image attaches are allowed here, so screenshot is on imgur: > https://imgur.com/a/QSSNePE As far as I’m aware images are allowed. This is surprisingly complicated! It appears that when the tool‐bar is removed the window doesn’t change size so there is no resize event sent. I’ve added an NSView resize notification on my local copy and it now draws OK, but it doesn’t inform Emacs that the frame size has changed so it leaves a blank space at the bottom of the frame. I think I’ve seen this happen before on occasion. It looks to me like the right thing to do here is to add this resize notification and use it to replace the window resize based system we use at the moment. The current resizing code is a little spaghetti‐like as it has built up over time to do various things, so refactoring it is potentially troublesome. Perhaps it will simplify things, though. -- Alan Third From unknown Sun Jun 22 22:45:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#40200: [PATCH] Fix NS frame resizing issues (bug#40200, bug#28872) Resent-From: Alan Third Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Wed, 25 Mar 2020 22:29:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 40200 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Andrii Kolomoiets Cc: 40200@debbugs.gnu.org, aaronjensen@gmail.com, 28872@debbugs.gnu.org Received: via spool by 40200-submit@debbugs.gnu.org id=B40200.15851753388679 (code B ref 40200); Wed, 25 Mar 2020 22:29:02 +0000 Received: (at 40200) by debbugs.gnu.org; 25 Mar 2020 22:28:58 +0000 Received: from localhost ([127.0.0.1]:57963 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1jHEWA-0002Fp-20 for submit@debbugs.gnu.org; Wed, 25 Mar 2020 18:28:58 -0400 Received: from mailout-l3b-97.contactoffice.com ([212.3.242.97]:47074) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1jHEW6-0002FV-Gt; Wed, 25 Mar 2020 18:28:55 -0400 Received: from smtpauth1.co-bxl (smtpauth1.co-bxl [10.2.0.15]) by mailout-l3b-97.contactoffice.com (Postfix) with ESMTP id F3F01118; Wed, 25 Mar 2020 23:28:47 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1585175328; s=20200222-6h9o; d=idiocy.org; i=alan@idiocy.org; h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version:Content-Type:In-Reply-To; l=9494; bh=16JvBZzqRRHIDuv0KRqaqCGHrMEWArCfItGDWUptCUw=; b=m+/iLvUAev3fLdaue9vydMrHzPvsUxbV5+cOtStmcnMW++n9fTiW6BW7W5150OL2 bxLpMMuQZKHxEgvTCPE1o4hSuPwEHxBMwztKDEfHHkkJ92lOAp9lxhYff997/ktQtRi ur3ql/IzKtzZiTMGUPXt2ziec37+F2VxtGH3S3+WhXjongnAhe9fw9pSIQWU7lTPVgE 3xQBsPdi+qMZv7fCK3U3d88Ao3p//PI5fFiPj9TRzTRBuFT1lHRh9BVo4j7v/2HksT0 iQ0fBUQzIfoRnrkmHl54EtEtK4c6isGF7IIlJetWryicOHDa97Hy+AySLnQ2KObiMyS R4ivBP8HOA== Received: by smtp.mailfence.com with ESMTPA ; Wed, 25 Mar 2020 23:28:43 +0100 (CET) Received: by idiocy.org (Postfix, from userid 501) id DA0552020A37ED; Wed, 25 Mar 2020 22:28:41 +0000 (GMT) Date: Wed, 25 Mar 2020 23:28:44 +0100 (CET) From: Alan Third Message-ID: <20200325222841.GA60879@breton.holly.idiocy.org> Mail-Followup-To: Alan Third , Andrii Kolomoiets , 40200@debbugs.gnu.org, 28872@debbugs.gnu.org, aaronjensen@gmail.com References: <20200323235432.GA24426@breton.holly.idiocy.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20200323235432.GA24426@breton.holly.idiocy.org> X-Spam-Flag: NO X-Spam-Status: No, hits=-2.9 required=4.7 symbols=ALL_TRUSTED, BAYES_00 device=10.2.0.1 X-ContactOffice-Account: com:241649512 X-Spam-Score: -0.7 (/) 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 (-) * src/nsmenu.m (update_frame_tool_bar): Remove reference to updateFrameSize. * src/nsterm.h: Remove definition of updateFrameSize. * src/nsterm.m (ns_set_window_size): (ns_set_undecorated): ([EmacsView windowDidResize:]): ([EmacsView windowDidExitFullScreen]): (ns_judge_scroll_bars): Remove references to updateFrameSize. ([EmacsView dealloc]): Unset resize notification. ([EmacsView updateFrameSize:]): Remove function. ([EmacsView viewWillStartLiveResize]): ([EmacsView viewDidResize]): New functions. ([EmacsView initFrameFromEmacs:]): Set up resize notification. ([EmacsView toggleFullScreen:]): Set frame to the size of the contentview, not the whole window, and remove reference to updateFrameSize. --- src/nsmenu.m | 2 - src/nsterm.h | 1 - src/nsterm.m | 191 ++++++++++++++++++++++----------------------------- 3 files changed, 81 insertions(+), 113 deletions(-) diff --git a/src/nsmenu.m b/src/nsmenu.m index 67f9a45a40..b7e4cbd565 100644 --- a/src/nsmenu.m +++ b/src/nsmenu.m @@ -1141,8 +1141,6 @@ - (Lisp_Object)runMenuAt: (NSPoint)p forFrame: (struct frame *)f } #endif - if (oldh != FRAME_TOOLBAR_HEIGHT (f)) - [view updateFrameSize:YES]; if (view->wait_for_tool_bar && FRAME_TOOLBAR_HEIGHT (f) > 0) { view->wait_for_tool_bar = NO; diff --git a/src/nsterm.h b/src/nsterm.h index 8396a542f7..c454c1ff36 100644 --- a/src/nsterm.h +++ b/src/nsterm.h @@ -462,7 +462,6 @@ #define NS_DRAW_TO_BUFFER 1 - (void) setWindowClosing: (BOOL)closing; - (EmacsToolbar *) toolbar; - (void) deleteWorkingText; -- (void) updateFrameSize: (BOOL) delay; - (void) handleFS; - (void) setFSValue: (int)value; - (void) toggleFullScreen: (id) sender; diff --git a/src/nsterm.m b/src/nsterm.m index 04fc051223..41780c9a42 100644 --- a/src/nsterm.m +++ b/src/nsterm.m @@ -1864,7 +1864,6 @@ Hide the window (X11 semantics) [window setFrame: wr display: YES]; - [view updateFrameSize: NO]; unblock_input (); } @@ -1913,7 +1912,6 @@ Hide the window (X11 semantics) so some key presses (TAB) are swallowed by the system. */ [window makeFirstResponder: view]; - [view updateFrameSize: NO]; unblock_input (); } } @@ -5024,9 +5022,6 @@ in certain situations (rapid incoming events). if ([view judge]) removed = YES; } - - if (removed) - [eview updateFrameSize: NO]; } /* ========================================================================== @@ -6198,6 +6193,13 @@ - (void) setWindowClosing: (BOOL)closing - (void)dealloc { NSTRACE ("[EmacsView dealloc]"); + + /* Clear the view resize notification. */ + [[NSNotificationCenter defaultCenter] + removeObserver:self + name:NSViewFrameDidChangeNotification + object:nil]; + [toolbar release]; if (fs_state == FULLSCREEN_BOTH) [nonfs_window release]; @@ -7039,103 +7041,6 @@ - (BOOL)windowShouldClose: (id)sender return NO; } -- (void) updateFrameSize: (BOOL) delay -{ - NSWindow *window = [self window]; - NSRect wr = [window frame]; - int extra = 0; - int oldc = cols, oldr = rows; - int oldw = FRAME_PIXEL_WIDTH (emacsframe); - int oldh = FRAME_PIXEL_HEIGHT (emacsframe); - int neww, newh; - - NSTRACE ("[EmacsView updateFrameSize:]"); - NSTRACE_SIZE ("Original size", NSMakeSize (oldw, oldh)); - NSTRACE_RECT ("Original frame", wr); - NSTRACE_MSG ("Original columns: %d", cols); - NSTRACE_MSG ("Original rows: %d", rows); - - if (! [self isFullscreen]) - { - int toolbar_height; -#ifdef NS_IMPL_GNUSTEP - // GNUstep does not always update the tool bar height. Force it. - if (toolbar && [toolbar isVisible]) - update_frame_tool_bar (emacsframe); -#endif - - toolbar_height = FRAME_TOOLBAR_HEIGHT (emacsframe); - if (toolbar_height < 0) - toolbar_height = 35; - - extra = FRAME_NS_TITLEBAR_HEIGHT (emacsframe) - + toolbar_height; - } - - if (wait_for_tool_bar) - { - /* The toolbar height is always 0 in fullscreen and undecorated - frames, so don't wait for it to become available. */ - if (FRAME_TOOLBAR_HEIGHT (emacsframe) == 0 - && FRAME_UNDECORATED (emacsframe) == false - && ! [self isFullscreen]) - { - NSTRACE_MSG ("Waiting for toolbar"); - return; - } - wait_for_tool_bar = NO; - } - - neww = (int)wr.size.width - emacsframe->border_width; - newh = (int)wr.size.height - extra; - - NSTRACE_SIZE ("New size", NSMakeSize (neww, newh)); - NSTRACE_MSG ("FRAME_TOOLBAR_HEIGHT: %d", FRAME_TOOLBAR_HEIGHT (emacsframe)); - NSTRACE_MSG ("FRAME_NS_TITLEBAR_HEIGHT: %d", FRAME_NS_TITLEBAR_HEIGHT (emacsframe)); - - cols = FRAME_PIXEL_WIDTH_TO_TEXT_COLS (emacsframe, neww); - rows = FRAME_PIXEL_HEIGHT_TO_TEXT_LINES (emacsframe, newh); - - if (cols < MINWIDTH) - cols = MINWIDTH; - - if (rows < MINHEIGHT) - rows = MINHEIGHT; - - NSTRACE_MSG ("New columns: %d", cols); - NSTRACE_MSG ("New rows: %d", rows); - - if (oldr != rows || oldc != cols || neww != oldw || newh != oldh) - { - NSView *view = FRAME_NS_VIEW (emacsframe); - - change_frame_size (emacsframe, - FRAME_PIXEL_TO_TEXT_WIDTH (emacsframe, neww), - FRAME_PIXEL_TO_TEXT_HEIGHT (emacsframe, newh), - 0, delay, 0, 1); - SET_FRAME_GARBAGED (emacsframe); - cancel_mouse_face (emacsframe); - - /* The next two lines set the frame to the same size as we've - already set above. We need to do this when we switch back - from non-native fullscreen, in other circumstances it appears - to be a noop. (bug#28872) */ - wr = NSMakeRect (0, 0, neww, newh); - [view setFrame: wr]; -#ifdef NS_DRAW_TO_BUFFER - [self createDrawingBuffer]; -#endif - - // To do: consider using [NSNotificationCenter postNotificationName:]. - [self windowDidMove: // Update top/left. - [NSNotification notificationWithName:NSWindowDidMoveNotification - object:[view window]]]; - } - else - { - NSTRACE_MSG ("No change"); - } -} - (NSSize)windowWillResize: (NSWindow *)sender toSize: (NSSize)frameSize /* Normalize frame to gridded text size. */ @@ -7277,15 +7182,21 @@ - (void)windowDidResize: (NSNotification *)notification sz = [self windowWillResize: theWindow toSize: sz]; #endif /* NS_IMPL_GNUSTEP */ - if (cols > 0 && rows > 0) - { - [self updateFrameSize: YES]; - } - ns_send_appdefined (-1); } #ifdef NS_IMPL_COCOA +- (void)viewWillStartLiveResize +{ + NSTRACE ("[EmacsView viewWillStartLiveResize]"); + + /* We just want a blank frame during live resizes. Redisplaying the + contents is too slow, and stretching the contents looks + weird. */ + ns_clear_frame (emacsframe); +} + + - (void)viewDidEndLiveResize { NSTRACE ("[EmacsView viewDidEndLiveResize]"); @@ -7302,6 +7213,60 @@ - (void)viewDidEndLiveResize #endif /* NS_IMPL_COCOA */ +- (void)viewDidResize:(NSNotification *)notification +{ + NSRect frame = [self frame]; + int oldw, oldh; + int neww, newh; + +#ifdef NS_DRAW_TO_BUFFER + CGFloat scale = [[self window] backingScaleFactor]; + oldw = (CGFloat)CGBitmapContextGetWidth (drawingBuffer) / scale; + oldh = (CGFloat)CGBitmapContextGetHeight (drawingBuffer) / scale; +#else + oldw = FRAME_PIXEL_WIDTH (emacsframe); + oldh = FRAME_PIXEL_HEIGHT (emacsframe); +#endif + neww = (int)NSWidth (frame); + newh = (int)NSHeight (frame); + + NSTRACE ("[EmacsView viewDidResize]"); + NSTRACE_SIZE ("Original size", NSMakeSize (oldw, oldh)); + NSTRACE_SIZE ("New size", NSMakeSize (neww, newh)); + + /* Don't want to do anything when the actual view size hasn't + changed. */ + if ((oldh == newh && oldw == neww)) + { + NSTRACE_MSG ("No change"); + return; + } + + cols = FRAME_PIXEL_WIDTH_TO_TEXT_COLS (emacsframe, neww); + rows = FRAME_PIXEL_HEIGHT_TO_TEXT_LINES (emacsframe, newh); + + if (cols < MINWIDTH) + cols = MINWIDTH; + + if (rows < MINHEIGHT) + rows = MINHEIGHT; + + NSTRACE_MSG ("New columns: %d", cols); + NSTRACE_MSG ("New rows: %d", rows); + + change_frame_size (emacsframe, + FRAME_PIXEL_TO_TEXT_WIDTH (emacsframe, neww), + FRAME_PIXEL_TO_TEXT_HEIGHT (emacsframe, newh), + 0, YES, 0, 1); +#ifdef NS_DRAW_TO_BUFFER + [self createDrawingBuffer]; +#endif + ns_clear_frame (emacsframe); + SET_FRAME_GARBAGED (emacsframe); + cancel_mouse_face (emacsframe); +} + + - (void)windowDidBecomeKey: (NSNotification *)notification /* cf. x_detect_focus_change(), x_focus_changed(), x_new_focus_frame() */ { @@ -7456,6 +7421,13 @@ - (instancetype) initFrameFromEmacs: (struct frame *)f [self initWithFrame: r]; [self setAutoresizingMask: NSViewWidthSizable | NSViewHeightSizable]; + /* Set up view resize notifications. */ + [self setPostsFrameChangedNotifications:YES]; + [[NSNotificationCenter defaultCenter] + addObserver:self + selector:@selector (viewDidResize:) + name:NSViewFrameDidChangeNotification object:nil]; + FRAME_NS_VIEW (f) = self; emacsframe = f; #ifdef NS_IMPL_COCOA @@ -7902,7 +7874,6 @@ - (void)windowDidExitFullScreen /* provided for direct calls */ { [toolbar setVisible:YES]; update_frame_tool_bar (emacsframe); - [self updateFrameSize:YES]; [[self window] display]; } else @@ -8115,11 +8086,11 @@ - (void)toggleFullScreen: (id)sender // send notifications. [self windowWillExitFullScreen]; - [fw setFrame: [w frame] display:YES animate:ns_use_fullscreen_animation]; + [fw setFrame:[[w contentView] frame] + display:YES animate:ns_use_fullscreen_animation]; [fw close]; [w makeKeyAndOrderFront:NSApp]; [self windowDidExitFullScreen]; - [self updateFrameSize:YES]; } } -- 2.24.0 -- Alan Third From unknown Sun Jun 22 22:45:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#40200: [PATCH] Fix NS frame resizing issues (bug#40200, bug#28872) Resent-From: Andrii Kolomoiets Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Thu, 26 Mar 2020 17:36:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 40200 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Alan Third Cc: 40200@debbugs.gnu.org, aaronjensen@gmail.com, 28872@debbugs.gnu.org Received: via spool by 40200-submit@debbugs.gnu.org id=B40200.158524413215394 (code B ref 40200); Thu, 26 Mar 2020 17:36:02 +0000 Received: (at 40200) by debbugs.gnu.org; 26 Mar 2020 17:35:32 +0000 Received: from localhost ([127.0.0.1]:59589 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1jHWPj-00040D-F3 for submit@debbugs.gnu.org; Thu, 26 Mar 2020 13:35:31 -0400 Received: from mail-lf1-f66.google.com ([209.85.167.66]:36223) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1jHWPh-0003zx-K7; Thu, 26 Mar 2020 13:35:30 -0400 Received: by mail-lf1-f66.google.com with SMTP id s1so5582807lfd.3; Thu, 26 Mar 2020 10:35:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:message-id:mime-version:subject:date:in-reply-to:cc:to :references; bh=OSaAjhxQn5iEFIUa+EeyOydIY1+vOSK7yq65cQkeN6A=; b=Hl5P1wFOCKQU7LLTKy6dNxmvERBQDh7h96OGLFreB0Gigx5Mo7yqkmBJGCQzAM9+yI NoBQweWDmA7xDvHfmn2n+dSKx/3ku9/Hk9h3X0sQ65UVH2eVT0ozr2npxmHbVpFS8Ot3 SYO22SZobDFI3bXsQgpqRw2cYyJERNDE9qqnjtdjfpBfGcHBsQvYZjG0jA5f/0keIgwA pyM0gKyRdu3cjJm8+D0bj7UKU8EvIzoxZHj9iZuyn3wnXA3m8p30K7nWtWt9rtb6M9MD DAWWhkZ6v948lCyqNPhSk/Hbhb+ZVrIXTNdqdoTFuJzrlS5p4/aBR6J/ASZYXu2yWTTQ Di7Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:message-id:mime-version:subject:date :in-reply-to:cc:to:references; bh=OSaAjhxQn5iEFIUa+EeyOydIY1+vOSK7yq65cQkeN6A=; b=XUAga6wPMmhdWHV8i3LL962jgJpSLUePKjUkL79qEbOrfA/l/RuMB7JKgkVrbfGmxe FmACEQU+qzIwfxGxfo3lyx+5Fnb8PLySXTsox3ojVhPsaWb577TUdvxC6OPvs5YdZCWn rMmtkBmllKTIToMTSUgYvjHBkKOyhz+1aQWc9SzDYWlZyKwxy/AZfA9jRLAsgc68P21u Jx/grJ0kvfwMc7XbjwQL/gSGI3izCH66Hxe2jhgONdNPDNO82rKU7U5dE0A7xCIYvKmB tCBQYiyc5s6AUR0NwBCw4Nf+lFRyb9P3cmGgl5Ge5z2Ew9ryArgLEuMJpRbqSd9Uhjlc rQxg== X-Gm-Message-State: ANhLgQ0aeEjLNUgfqw68wKZgsiO2oTuz8CVDW/TVTXUj5ra6PcMQLHBN WAdGHtaNu8EJEgVEj1Ot2sM= X-Google-Smtp-Source: ADFU+vs2M5urRPziuyia3WbUduPXWgZ/KXTfcYMqwfH0jDTo5ZPJa3P6o4XzhN4VXTcmf8mrounLxw== X-Received: by 2002:ac2:4201:: with SMTP id y1mr6670377lfh.92.1585244123414; Thu, 26 Mar 2020 10:35:23 -0700 (PDT) Received: from [192.168.0.102] ([91.206.110.153]) by smtp.gmail.com with ESMTPSA id o4sm1869324lfl.62.2020.03.26.10.35.21 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 26 Mar 2020 10:35:22 -0700 (PDT) From: Andrii Kolomoiets Message-Id: Content-Type: multipart/mixed; boundary="Apple-Mail=_8ABE37B1-12E6-4D69-93EC-806C9201731E" Mime-Version: 1.0 (Mac OS X Mail 13.0 \(3608.60.0.2.5\)) Date: Thu, 26 Mar 2020 19:35:20 +0200 In-Reply-To: <20200325222841.GA60879@breton.holly.idiocy.org> References: <20200323235432.GA24426@breton.holly.idiocy.org> <20200325222841.GA60879@breton.holly.idiocy.org> X-Mailer: Apple Mail (2.3608.60.0.2.5) X-Spam-Score: 0.0 (/) 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.0 (-) --Apple-Mail=_8ABE37B1-12E6-4D69-93EC-806C9201731E Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset=us-ascii On 26 Mar 2020, at 00:28, Alan Third wrote: > > * src/nsmenu.m (update_frame_tool_bar): Remove reference to > updateFrameSize. > * src/nsterm.h: Remove definition of updateFrameSize. > * src/nsterm.m (ns_set_window_size): > (ns_set_undecorated): > ([EmacsView windowDidResize:]): > ([EmacsView windowDidExitFullScreen]): > (ns_judge_scroll_bars): Remove references to updateFrameSize. > ([EmacsView dealloc]): Unset resize notification. > ([EmacsView updateFrameSize:]): Remove function. > ([EmacsView viewWillStartLiveResize]): > ([EmacsView viewDidResize]): New functions. > ([EmacsView initFrameFromEmacs:]): Set up resize notification. > ([EmacsView toggleFullScreen:]): Set frame to the size of the > contentview, not the whole window, and remove reference to > updateFrameSize. Thanks, Alan! I've installed this patch and will watch for any issues. For now Emacs is crashing on fullscreen frame deletion: 1. emacs -Q 2. C-x 5 2 3. F11 4. C-x 5 0 Backtrace from macos problem reporter is attached. --Apple-Mail=_8ABE37B1-12E6-4D69-93EC-806C9201731E Content-Disposition: attachment; filename=emacs-crash-fs-close.txt Content-Type: text/plain; x-unix-mode=0644; name="emacs-crash-fs-close.txt" Content-Transfer-Encoding: quoted-printable OS Version: Mac OS X 10.15.3 (19D76) Crashed Thread: 0 Dispatch queue: com.apple.main-thread Exception Type: EXC_BAD_ACCESS (SIGABRT) Exception Codes: KERN_INVALID_ADDRESS at 0x0000000000000020 Exception Note: EXC_CORPSE_NOTIFY VM Regions Near 0x20: --> __TEXT 000000010254b000-0000000102792000 [ 2332K] = r-x/r-x SM=3DCOW /Users/USER/*/Emacs.app/Contents/MacOS/Emacs Thread 0 Crashed:: Dispatch queue: com.apple.main-thread 0 libsystem_kernel.dylib 0x00007fff6d2097fa = __pthread_kill + 10 1 libsystem_pthread.dylib 0x00007fff6d2c6bc1 pthread_kill = + 432 2 libsystem_c.dylib 0x00007fff6d1203a2 raise + 26 3 org.gnu.Emacs 0x0000000102751769 = terminate_due_to_signal + 153 (emacs.c:404) 4 org.gnu.Emacs 0x00000001027520ab emacs_abort + = 15 5 org.gnu.Emacs 0x0000000102719e70 = ns_term_shutdown + 80 (lisp.h:1586) 6 org.gnu.Emacs 0x00000001026097f4 = shut_down_emacs + 340 (emacs.c:2462) 7 org.gnu.Emacs 0x0000000102751736 = terminate_due_to_signal + 102 (emacs.c:385) 8 org.gnu.Emacs 0x0000000102629fce = handle_fatal_signal + 14 9 org.gnu.Emacs 0x000000010262a051 = deliver_thread_signal + 129 10 org.gnu.Emacs 0x0000000102628a09 = deliver_fatal_thread_signal + 9 11 org.gnu.Emacs 0x000000010262a108 = handle_sigsegv + 168 12 libsystem_platform.dylib 0x00007fff6d2bb42d _sigtramp + = 29 13 ??? 000000000000000000 0 + 0 14 com.apple.CoreFoundation 0x00007fff35a1435f = __CFNOTIFICATIONCENTER_IS_CALLING_OUT_TO_AN_OBSERVER__ + 12 15 com.apple.CoreFoundation 0x00007fff35a142f3 = ___CFXRegistrationPost1_block_invoke + 63 16 com.apple.CoreFoundation 0x00007fff35a14268 = _CFXRegistrationPost1 + 372 17 com.apple.CoreFoundation 0x00007fff35a13ebe = ___CFXNotificationPost_block_invoke + 97 18 com.apple.CoreFoundation 0x00007fff359e37e2 = -[_CFXNotificationRegistrar find:object:observer:enumerator:] + 1575 19 com.apple.CoreFoundation 0x00007fff359e2c82 = _CFXNotificationPost + 1351 20 com.apple.AppKit 0x00007fff32c23719 -[NSView = _postFrameChangeNotification] + 304 21 com.apple.AppKit 0x00007fff32c1c1a9 -[NSView = setFrameSize:] + 2917 22 com.apple.AppKit 0x00007fff32c2dca2 -[NSView = setFrame:] + 423 23 org.gnu.Emacs 0x000000010272027c -[EmacsView = setFrame:] + 60 (nsterm.m:7346) 24 com.apple.AppKit 0x00007fff32c412ee -[NSView = resizeWithOldSuperviewSize:] + 1193 25 com.apple.AppKit 0x00007fff32c40a13 -[NSView = resizeSubviewsWithOldSize:] + 525 26 com.apple.AppKit 0x00007fff32c1bcf6 -[NSView = setFrameSize:] + 1714 27 com.apple.AppKit 0x00007fff32c2dca2 -[NSView = setFrame:] + 423 28 com.apple.AppKit 0x00007fff32c3bd38 = -[NSThemeFrame setStyleMask:] + 874 29 com.apple.AppKit 0x00007fff32c3b89e = __25-[NSWindow setStyleMask:]_block_invoke + 1939 30 com.apple.AppKit 0x00007fff32c3b0b3 = NSPerformVisuallyAtomicChange + 132 31 com.apple.AppKit 0x00007fff32c3afbc -[NSWindow = setStyleMask:] + 184 32 com.apple.AppKit 0x00007fff3328d23d = -[_NSWindowExitFullScreenTransitionController = setupWindowForAfterFullScreenExit] + 106 33 com.apple.AppKit 0x00007fff33509740 = __46-[_NSExitFullScreenTransitionController start]_block_invoke_3 + 57 34 libdispatch.dylib 0x00007fff6d068583 = _dispatch_call_block_and_release + 12 35 libdispatch.dylib 0x00007fff6d06950e = _dispatch_client_callout + 8 36 libdispatch.dylib 0x00007fff6d074bc4 = _dispatch_main_queue_callback_4CF + 1105 37 com.apple.CoreFoundation 0x00007fff35a5de00 = __CFRUNLOOP_IS_SERVICING_THE_MAIN_DISPATCH_QUEUE__ + 9 38 com.apple.CoreFoundation 0x00007fff35a1db8a = __CFRunLoopRun + 2370 39 com.apple.CoreFoundation 0x00007fff35a1cbd3 = CFRunLoopRunSpecific + 499 40 com.apple.HIToolbox 0x00007fff3457265d = RunCurrentEventLoopInMode + 292 41 com.apple.HIToolbox 0x00007fff345722a9 = ReceiveNextEventCommon + 356 42 com.apple.HIToolbox 0x00007fff34572127 = _BlockUntilNextEventMatchingListInModeWithFilter + 64 43 com.apple.AppKit 0x00007fff32be2ba4 _DPSNextEvent = + 990 44 com.apple.AppKit 0x00007fff32be1380 = -[NSApplication(NSEvent) = _nextEventMatchingEventMask:untilDate:inMode:dequeue:] + 1352 45 com.apple.AppKit 0x00007fff32bd309e = -[NSApplication run] + 658 46 org.gnu.Emacs 0x000000010271a02d -[EmacsApp = run] + 333 (nsterm.m:5644) 47 org.gnu.Emacs 0x0000000102726bcc = ns_read_socket + 668 (nsterm.m:4598) 48 org.gnu.Emacs 0x0000000102617035 gobble_input = + 245 (keyboard.c:6887) 49 org.gnu.Emacs 0x000000010261a01a = detect_input_pending + 250 (lisp.h:1272) 50 org.gnu.Emacs 0x00000001026e23ea = wait_reading_process_output + 3194 (process.c:5491) 51 org.gnu.Emacs 0x00000001025525e8 sit_for + 312 = (dispnew.c:6055) 52 org.gnu.Emacs 0x0000000102611f1a read_char + = 5210 (keyboard.c:2738) 53 org.gnu.Emacs 0x000000010260ef2a = read_key_sequence + 1722 (keyboard.c:9549) 54 org.gnu.Emacs 0x000000010260d72c = command_loop_1 + 1340 (keyboard.c:1350) 55 org.gnu.Emacs 0x00000001026943d7 = internal_condition_case + 263 (eval.c:1357) 56 org.gnu.Emacs 0x000000010261d740 = command_loop_2 + 48 (lisp.h:1272) 57 org.gnu.Emacs 0x0000000102693beb = internal_catch + 267 (eval.c:1118) 58 org.gnu.Emacs 0x0000000102751b35 = command_loop.cold.1 + 69 59 org.gnu.Emacs 0x000000010260c7f3 command_loop = + 131 60 org.gnu.Emacs 0x000000010260c723 = recursive_edit_1 + 115 (keyboard.c:714) 61 org.gnu.Emacs 0x000000010260c97b = Frecursive_edit + 347 (keyboard.c:787) 62 org.gnu.Emacs 0x000000010260b561 main + 7425 = (emacs.c:2036) 63 libdyld.dylib 0x00007fff6d0c27fd start + 1 --Apple-Mail=_8ABE37B1-12E6-4D69-93EC-806C9201731E-- From unknown Sun Jun 22 22:45:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#40200: [PATCH v2] Fix NS frame resizing issues (bug#40200, bug#28872) Resent-From: Alan Third Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Thu, 26 Mar 2020 21:22:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 40200 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Andrii Kolomoiets Cc: 40200@debbugs.gnu.org, aaronjensen@gmail.com, 28872@debbugs.gnu.org Received: via spool by 40200-submit@debbugs.gnu.org id=B40200.15852577056695 (code B ref 40200); Thu, 26 Mar 2020 21:22:02 +0000 Received: (at 40200) by debbugs.gnu.org; 26 Mar 2020 21:21:45 +0000 Received: from localhost ([127.0.0.1]:60269 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1jHZwf-0001jv-32 for submit@debbugs.gnu.org; Thu, 26 Mar 2020 17:21:45 -0400 Received: from mailout-l3b-97.contactoffice.com ([212.3.242.97]:38812) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1jHZwZ-0001jN-8L; Thu, 26 Mar 2020 17:21:40 -0400 Received: from smtpauth1.co-bxl (smtpauth1.co-bxl [10.2.0.15]) by mailout-l3b-97.contactoffice.com (Postfix) with ESMTP id AD2393C1; Thu, 26 Mar 2020 22:21:32 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1585257692; s=20200222-6h9o; d=idiocy.org; i=alan@idiocy.org; h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version:Content-Type:In-Reply-To; l=10422; bh=VGVdo9HQqJE8iMOYMRCWiRNWz8KI6Pv3Epz0nGBlRLY=; b=dsVltGf0sH2llkaTj6mh6RBFj95QfyJGsK5rDrLdQfCCEuXwXCLMug8ME6G0havh B0LJlN2hasd1Az4HaQH5mPYkVSZ4bb/Xn5/C0WIh2OQ/pNwEatIjRcu0P08kr41HX5N 3+QOgNeiMGcFkk98YRi5RnV0l01ekZXWfUAUpenVlvjE1YWU5U0bYIKrKVThVmRFclM vad4IkD9/eNnyXKZfFAF/xacVPzAG0GX7OEdj40h5yMvr0UenQHB7wQ+L9wLDsIRjKn HF++AsjtTtnyD7FFksD8lTRxt5DlCNiGzTsa/xA4PZDuAqO0nc5ooa53HBIc7Z1aXg+ YGCKmd4NmQ== Received: by smtp.mailfence.com with ESMTPA ; Thu, 26 Mar 2020 22:21:27 +0100 (CET) Received: by idiocy.org (Postfix, from userid 501) id E6FE02020A6446; Thu, 26 Mar 2020 21:21:25 +0000 (GMT) Date: Thu, 26 Mar 2020 22:21:29 +0100 (CET) From: Alan Third Message-ID: <20200326212125.GA66331@breton.holly.idiocy.org> Mail-Followup-To: Alan Third , Andrii Kolomoiets , 40200@debbugs.gnu.org, 28872@debbugs.gnu.org, aaronjensen@gmail.com References: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: X-Spam-Flag: NO X-Spam-Status: No, hits=-2.9 required=4.7 symbols=ALL_TRUSTED, BAYES_00 device=10.2.0.1 X-ContactOffice-Account: com:241649512 X-Spam-Score: -0.7 (/) 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 (-) * src/nsmenu.m (update_frame_tool_bar): Remove reference to updateFrameSize. * src/nsterm.h: ([EmacsView updateFrameSize]): ([EmacsView setRows:andColumns:]): Remove unused method definitions. * src/nsterm.m (ns_set_window_size): (ns_set_undecorated): ([EmacsView windowDidResize:]): ([EmacsView windowDidExitFullScreen]): (ns_judge_scroll_bars): Remove references to updateFrameSize. ([EmacsView dealloc]): Unset resize notification and release buffer. ([EmacsView updateFrameSize:]): Remove function. ([EmacsView windowWillResize:toSize:]): Move some code to viewDidResize. ([EmacsView viewDidResize]): New function. ([EmacsView initFrameFromEmacs:]): Set up resize notification and move buffer creation until after the prerequisite objects are created. ([EmacsView toggleFullScreen:]): Set frame to the size of the contentview, not the whole window, and remove reference to updateFrameSize. ([EmacsView setRows:andColumns:]): Remove unused method. --- Hopefully this works better. src/nsmenu.m | 2 - src/nsterm.h | 3 - src/nsterm.m | 189 ++++++++++++++++++--------------------------------- 3 files changed, 68 insertions(+), 126 deletions(-) diff --git a/src/nsmenu.m b/src/nsmenu.m index 67f9a45a40..b7e4cbd565 100644 --- a/src/nsmenu.m +++ b/src/nsmenu.m @@ -1141,8 +1141,6 @@ - (Lisp_Object)runMenuAt: (NSPoint)p forFrame: (struct frame *)f } #endif - if (oldh != FRAME_TOOLBAR_HEIGHT (f)) - [view updateFrameSize:YES]; if (view->wait_for_tool_bar && FRAME_TOOLBAR_HEIGHT (f) > 0) { view->wait_for_tool_bar = NO; diff --git a/src/nsterm.h b/src/nsterm.h index 8396a542f7..3c2e4c2b07 100644 --- a/src/nsterm.h +++ b/src/nsterm.h @@ -439,7 +439,6 @@ #define NS_DRAW_TO_BUFFER 1 #endif @public struct frame *emacsframe; - int rows, cols; int scrollbarsNeedingUpdate; EmacsToolbar *toolbar; NSRect ns_userRect; @@ -458,11 +457,9 @@ #define NS_DRAW_TO_BUFFER 1 /* Emacs-side interface */ - (instancetype) initFrameFromEmacs: (struct frame *) f; - (void) createToolbar: (struct frame *)f; -- (void) setRows: (int) r andColumns: (int) c; - (void) setWindowClosing: (BOOL)closing; - (EmacsToolbar *) toolbar; - (void) deleteWorkingText; -- (void) updateFrameSize: (BOOL) delay; - (void) handleFS; - (void) setFSValue: (int)value; - (void) toggleFullScreen: (id) sender; diff --git a/src/nsterm.m b/src/nsterm.m index 04fc051223..95ab4390a0 100644 --- a/src/nsterm.m +++ b/src/nsterm.m @@ -1864,7 +1864,6 @@ Hide the window (X11 semantics) [window setFrame: wr display: YES]; - [view updateFrameSize: NO]; unblock_input (); } @@ -1913,7 +1912,6 @@ Hide the window (X11 semantics) so some key presses (TAB) are swallowed by the system. */ [window makeFirstResponder: view]; - [view updateFrameSize: NO]; unblock_input (); } } @@ -5024,9 +5022,6 @@ in certain situations (rapid incoming events). if ([view judge]) removed = YES; } - - if (removed) - [eview updateFrameSize: NO]; } /* ========================================================================== @@ -6198,6 +6193,15 @@ - (void) setWindowClosing: (BOOL)closing - (void)dealloc { NSTRACE ("[EmacsView dealloc]"); + + /* Clear the view resize notification. */ + [[NSNotificationCenter defaultCenter] + removeObserver:self + name:NSViewFrameDidChangeNotification + object:nil]; + + CGContextRelease (drawingBuffer); + [toolbar release]; if (fs_state == FULLSCREEN_BOTH) [nonfs_window release]; @@ -7039,108 +7043,12 @@ - (BOOL)windowShouldClose: (id)sender return NO; } -- (void) updateFrameSize: (BOOL) delay -{ - NSWindow *window = [self window]; - NSRect wr = [window frame]; - int extra = 0; - int oldc = cols, oldr = rows; - int oldw = FRAME_PIXEL_WIDTH (emacsframe); - int oldh = FRAME_PIXEL_HEIGHT (emacsframe); - int neww, newh; - - NSTRACE ("[EmacsView updateFrameSize:]"); - NSTRACE_SIZE ("Original size", NSMakeSize (oldw, oldh)); - NSTRACE_RECT ("Original frame", wr); - NSTRACE_MSG ("Original columns: %d", cols); - NSTRACE_MSG ("Original rows: %d", rows); - - if (! [self isFullscreen]) - { - int toolbar_height; -#ifdef NS_IMPL_GNUSTEP - // GNUstep does not always update the tool bar height. Force it. - if (toolbar && [toolbar isVisible]) - update_frame_tool_bar (emacsframe); -#endif - - toolbar_height = FRAME_TOOLBAR_HEIGHT (emacsframe); - if (toolbar_height < 0) - toolbar_height = 35; - - extra = FRAME_NS_TITLEBAR_HEIGHT (emacsframe) - + toolbar_height; - } - - if (wait_for_tool_bar) - { - /* The toolbar height is always 0 in fullscreen and undecorated - frames, so don't wait for it to become available. */ - if (FRAME_TOOLBAR_HEIGHT (emacsframe) == 0 - && FRAME_UNDECORATED (emacsframe) == false - && ! [self isFullscreen]) - { - NSTRACE_MSG ("Waiting for toolbar"); - return; - } - wait_for_tool_bar = NO; - } - - neww = (int)wr.size.width - emacsframe->border_width; - newh = (int)wr.size.height - extra; - - NSTRACE_SIZE ("New size", NSMakeSize (neww, newh)); - NSTRACE_MSG ("FRAME_TOOLBAR_HEIGHT: %d", FRAME_TOOLBAR_HEIGHT (emacsframe)); - NSTRACE_MSG ("FRAME_NS_TITLEBAR_HEIGHT: %d", FRAME_NS_TITLEBAR_HEIGHT (emacsframe)); - - cols = FRAME_PIXEL_WIDTH_TO_TEXT_COLS (emacsframe, neww); - rows = FRAME_PIXEL_HEIGHT_TO_TEXT_LINES (emacsframe, newh); - - if (cols < MINWIDTH) - cols = MINWIDTH; - - if (rows < MINHEIGHT) - rows = MINHEIGHT; - - NSTRACE_MSG ("New columns: %d", cols); - NSTRACE_MSG ("New rows: %d", rows); - - if (oldr != rows || oldc != cols || neww != oldw || newh != oldh) - { - NSView *view = FRAME_NS_VIEW (emacsframe); - - change_frame_size (emacsframe, - FRAME_PIXEL_TO_TEXT_WIDTH (emacsframe, neww), - FRAME_PIXEL_TO_TEXT_HEIGHT (emacsframe, newh), - 0, delay, 0, 1); - SET_FRAME_GARBAGED (emacsframe); - cancel_mouse_face (emacsframe); - - /* The next two lines set the frame to the same size as we've - already set above. We need to do this when we switch back - from non-native fullscreen, in other circumstances it appears - to be a noop. (bug#28872) */ - wr = NSMakeRect (0, 0, neww, newh); - [view setFrame: wr]; -#ifdef NS_DRAW_TO_BUFFER - [self createDrawingBuffer]; -#endif - - // To do: consider using [NSNotificationCenter postNotificationName:]. - [self windowDidMove: // Update top/left. - [NSNotification notificationWithName:NSWindowDidMoveNotification - object:[view window]]]; - } - else - { - NSTRACE_MSG ("No change"); - } -} - (NSSize)windowWillResize: (NSWindow *)sender toSize: (NSSize)frameSize /* Normalize frame to gridded text size. */ { int extra = 0; + int cols, rows; NSTRACE ("[EmacsView windowWillResize:toSize: " NSTRACE_FMT_SIZE "]", NSTRACE_ARG_SIZE (frameSize)); @@ -7277,11 +7185,6 @@ - (void)windowDidResize: (NSNotification *)notification sz = [self windowWillResize: theWindow toSize: sz]; #endif /* NS_IMPL_GNUSTEP */ - if (cols > 0 && rows > 0) - { - [self updateFrameSize: YES]; - } - ns_send_appdefined (-1); } @@ -7302,6 +7205,51 @@ - (void)viewDidEndLiveResize #endif /* NS_IMPL_COCOA */ +- (void)viewDidResize:(NSNotification *)notification +{ + NSRect frame = [self frame]; + int oldw, oldh, neww, newh; + + if (! FRAME_LIVE_P (emacsframe)) + return; + +#ifdef NS_DRAW_TO_BUFFER + CGFloat scale = [[self window] backingScaleFactor]; + oldw = (CGFloat)CGBitmapContextGetWidth (drawingBuffer) / scale; + oldh = (CGFloat)CGBitmapContextGetHeight (drawingBuffer) / scale; +#else + oldw = FRAME_PIXEL_WIDTH (emacsframe); + oldh = FRAME_PIXEL_HEIGHT (emacsframe); +#endif + neww = (int)NSWidth (frame); + newh = (int)NSHeight (frame); + + NSTRACE ("[EmacsView viewDidResize]"); + + /* Don't want to do anything when the view size hasn't changed. */ + if ((oldh == newh && oldw == neww)) + { + NSTRACE_MSG ("No change"); + return; + } + + NSTRACE_SIZE ("Original size", NSMakeSize (oldw, oldh)); + NSTRACE_SIZE ("New size", NSMakeSize (neww, newh)); + + change_frame_size (emacsframe, + FRAME_PIXEL_TO_TEXT_WIDTH (emacsframe, neww), + FRAME_PIXEL_TO_TEXT_HEIGHT (emacsframe, newh), + 0, YES, 0, 1); + +#ifdef NS_DRAW_TO_BUFFER + [self createDrawingBuffer]; +#endif + ns_clear_frame (emacsframe); + SET_FRAME_GARBAGED (emacsframe); + cancel_mouse_face (emacsframe); +} + + - (void)windowDidBecomeKey: (NSNotification *)notification /* cf. x_detect_focus_change(), x_focus_changed(), x_new_focus_frame() */ { @@ -7463,10 +7411,6 @@ - (instancetype) initFrameFromEmacs: (struct frame *)f maximizing_resize = NO; #endif -#ifdef NS_DRAW_TO_BUFFER - [self createDrawingBuffer]; -#endif - win = [[EmacsWindow alloc] initWithContentRect: r styleMask: (FRAME_UNDECORATED (f) @@ -7572,6 +7516,17 @@ - (instancetype) initFrameFromEmacs: (struct frame *)f [NSApp registerServicesMenuSendTypes: ns_send_types returnTypes: [NSArray array]]; +#ifdef NS_DRAW_TO_BUFFER + [self createDrawingBuffer]; +#endif + + /* Set up view resize notifications. */ + [self setPostsFrameChangedNotifications:YES]; + [[NSNotificationCenter defaultCenter] + addObserver:self + selector:@selector (viewDidResize:) + name:NSViewFrameDidChangeNotification object:nil]; + /* macOS Sierra automatically enables tabbed windows. We can't allow this to be enabled until it's available on a Free system. Currently it only happens by accident and is buggy anyway. */ @@ -7902,7 +7857,6 @@ - (void)windowDidExitFullScreen /* provided for direct calls */ { [toolbar setVisible:YES]; update_frame_tool_bar (emacsframe); - [self updateFrameSize:YES]; [[self window] display]; } else @@ -8115,11 +8069,11 @@ - (void)toggleFullScreen: (id)sender // send notifications. [self windowWillExitFullScreen]; - [fw setFrame: [w frame] display:YES animate:ns_use_fullscreen_animation]; + [fw setFrame:[[w contentView] frame] + display:YES animate:ns_use_fullscreen_animation]; [fw close]; [w makeKeyAndOrderFront:NSApp]; [self windowDidExitFullScreen]; - [self updateFrameSize:YES]; } } @@ -8628,13 +8582,6 @@ - (instancetype)setMiniwindowImage: (BOOL) setMini } -- (void) setRows: (int) r andColumns: (int) c -{ - NSTRACE ("[EmacsView setRows:%d andColumns:%d]", r, c); - rows = r; - cols = c; -} - - (int) fullscreenState { return fs_state; -- 2.24.0 -- Alan Third From unknown Sun Jun 22 22:45:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#40200: [PATCH v2] Fix NS frame resizing issues (bug#40200, bug#28872) Resent-From: Andrii Kolomoiets Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Fri, 27 Mar 2020 09:46:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 40200 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Alan Third Cc: 40200@debbugs.gnu.org, aaronjensen@gmail.com, 28872@debbugs.gnu.org Received: via spool by 40200-submit@debbugs.gnu.org id=B40200.15853023619195 (code B ref 40200); Fri, 27 Mar 2020 09:46:02 +0000 Received: (at 40200) by debbugs.gnu.org; 27 Mar 2020 09:46:01 +0000 Received: from localhost ([127.0.0.1]:60533 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1jHlYu-0002OB-Vz for submit@debbugs.gnu.org; Fri, 27 Mar 2020 05:46:01 -0400 Received: from mail-lf1-f68.google.com ([209.85.167.68]:39131) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1jHlYt-0002Nv-I6; Fri, 27 Mar 2020 05:46:00 -0400 Received: by mail-lf1-f68.google.com with SMTP id h6so1533649lfp.6; Fri, 27 Mar 2020 02:45:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:message-id:mime-version:subject:date:in-reply-to:cc:to :references; bh=HINtA6VbUhJVzgyOpmQLO+2yXD2xlQ2LMBcrdtpOkSk=; b=j+JpbghWXv7G6lvvgdTggvIfj8/7jjpBA0rGqCEWRqUpUYyOtWaXxHdaHdqI1GtKlb w0+D6lHc3WW8qe3H+Zi42pUdzGR1rM/xMdGVNjASOEJKdVftUfHQGGDvV+sBQSDN0icd Iph3A/8XgmpNKZ3RszWse96fh3ecaIxWOS3HK/Uow8oVh882qxtt/KZu2veHZeltGQBg XuXRVdSetlPbnFr5mIjI6JEpIbnJ5Xy8hVYvnJYVYzU1sVT+ph6fG/0YditG1qPZ62UD 8AA34OTrjRgftzIoVoLKHnuYGUzniZ/ZYmB6E0lsYV8ahwEZsKN7CivckQYT/cY2T36X NJcA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:message-id:mime-version:subject:date :in-reply-to:cc:to:references; bh=HINtA6VbUhJVzgyOpmQLO+2yXD2xlQ2LMBcrdtpOkSk=; b=kdz42ISPY51CIF0fc3W5S/xQQMUw3JEDNxQ818BGsnygcKB2zYRa/H9zM2klQDDs2D yxj6PATHNTppUqkUmGfN/XEbEsFOD/BhMpfra3C5dajfhwtlkamYK4+zI2lABiinHafD YjVowqTql4b7QR46YZvA8+a/ZNVnr+bIrEsW3NySt+UFFf2pWlFIAKpY1UmnS9Z758cL 5z2OVrf6W0hlI2wa/q8LjKZrc3vCg82Fs5djMc9yVsZsmGHMyqO9705moWL3NE510Fga taSJwnadaoua0jQ1+eZ8PrOu75SV/1pdi0M8FklzdqidQeG1za6XXXr+U7N+6qZF/NLD dLgQ== X-Gm-Message-State: ANhLgQ0cWNVs2qwAhJbZvuUWnvRD6CWrnv2303iN179ylJ5cyIf2qAfR RW60HEur6Iy+2gSCCGdFrLk= X-Google-Smtp-Source: ADFU+vtZlmg3Re5Kf5lxB2wLpQLcFCk3zbwbCRN291uqCzP5C1RTWysB2SMfkRZ8cozKqZMhl4KfTQ== X-Received: by 2002:a19:c197:: with SMTP id r145mr8647444lff.8.1585302353108; Fri, 27 Mar 2020 02:45:53 -0700 (PDT) Received: from [192.168.0.102] ([91.206.110.153]) by smtp.gmail.com with ESMTPSA id r21sm2643055ljp.29.2020.03.27.02.45.51 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 27 Mar 2020 02:45:52 -0700 (PDT) From: Andrii Kolomoiets Message-Id: <7F9C5AFC-02F1-490B-9DA0-6BC7C27A50E5@gmail.com> Content-Type: multipart/mixed; boundary="Apple-Mail=_E02126A4-EBA4-4D0B-9407-1D825BA9C2F7" Mime-Version: 1.0 (Mac OS X Mail 13.0 \(3608.60.0.2.5\)) Date: Fri, 27 Mar 2020 11:45:50 +0200 In-Reply-To: <20200326212125.GA66331@breton.holly.idiocy.org> References: <20200326212125.GA66331@breton.holly.idiocy.org> X-Mailer: Apple Mail (2.3608.60.0.2.5) X-Spam-Score: 0.0 (/) 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.0 (-) --Apple-Mail=_E02126A4-EBA4-4D0B-9407-1D825BA9C2F7 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=us-ascii On 26 Mar 2020, at 23:21, Alan Third wrote: >=20 > Hopefully this works better. >=20 It is! But can the following line be removed? > + ns_clear_frame (emacsframe); This removal resolves following issues for me: 1. Frames have white background color on creation. This flashing is = noticeable while using dark background for default face. 2. I'm experimenting with enabling macos native tabs by replacing = NSWindowTabbingModeDisallowed with NSWindowTabbingModePreferred in = nsterm.m. Crash occurs on tabbed frame deletion (s-n s-w). Backtrace is = attached. Thanks! --Apple-Mail=_E02126A4-EBA4-4D0B-9407-1D825BA9C2F7 Content-Disposition: attachment; filename=emacs-crash-tab-close.txt Content-Type: text/plain; x-unix-mode=0644; name="emacs-crash-tab-close.txt" Content-Transfer-Encoding: quoted-printable Exception Type: EXC_BAD_ACCESS (SIGABRT) Exception Codes: KERN_INVALID_ADDRESS at 0x0000000000000020 Exception Note: EXC_CORPSE_NOTIFY VM Regions Near 0x20: --> __TEXT 000000010aac2000-000000010ad09000 [ 2332K] = r-x/r-x SM=3DCOW /Users/USER/*/Emacs.app/Contents/MacOS/Emacs Thread 0 Crashed:: Dispatch queue: com.apple.main-thread 0 libsystem_kernel.dylib 0x00007fff6d2097fa = __pthread_kill + 10 1 libsystem_pthread.dylib 0x00007fff6d2c6bc1 pthread_kill = + 432 2 libsystem_c.dylib 0x00007fff6d1203a2 raise + 26 3 org.gnu.Emacs 0x000000010acc87a9 = terminate_due_to_signal + 153 (emacs.c:404) 4 org.gnu.Emacs 0x000000010acc90eb emacs_abort + = 15 5 org.gnu.Emacs 0x000000010ac90f60 = ns_term_shutdown + 80 (lisp.h:1586) 6 org.gnu.Emacs 0x000000010ab808e4 = shut_down_emacs + 340 (emacs.c:2462) 7 org.gnu.Emacs 0x000000010acc8776 = terminate_due_to_signal + 102 (emacs.c:385) 8 org.gnu.Emacs 0x000000010aba10be = handle_fatal_signal + 14 9 org.gnu.Emacs 0x000000010aba1141 = deliver_thread_signal + 129 10 org.gnu.Emacs 0x000000010ab9faf9 = deliver_fatal_thread_signal + 9 11 org.gnu.Emacs 0x000000010aba11f8 = handle_sigsegv + 168 12 libsystem_platform.dylib 0x00007fff6d2bb42d _sigtramp + = 29 13 ??? 000000000000000000 0 + 0 14 com.apple.CoreFoundation 0x00007fff35a1435f = __CFNOTIFICATIONCENTER_IS_CALLING_OUT_TO_AN_OBSERVER__ + 12 15 com.apple.CoreFoundation 0x00007fff35a142f3 = ___CFXRegistrationPost1_block_invoke + 63 16 com.apple.CoreFoundation 0x00007fff35a14268 = _CFXRegistrationPost1 + 372 17 com.apple.CoreFoundation 0x00007fff35a13ebe = ___CFXNotificationPost_block_invoke + 97 18 com.apple.CoreFoundation 0x00007fff359e37e2 = -[_CFXNotificationRegistrar find:object:observer:enumerator:] + 1575 19 com.apple.CoreFoundation 0x00007fff359e2c82 = _CFXNotificationPost + 1351 20 com.apple.AppKit 0x00007fff32c23719 -[NSView = _postFrameChangeNotification] + 304 21 com.apple.AppKit 0x00007fff32c1c1a9 -[NSView = setFrameSize:] + 2917 22 com.apple.AppKit 0x00007fff32c2dca2 -[NSView = setFrame:] + 423 23 org.gnu.Emacs 0x000000010ac972ac -[EmacsView = setFrame:] + 60 (nsterm.m:7329) 24 com.apple.AppKit 0x00007fff32c412ee -[NSView = resizeWithOldSuperviewSize:] + 1193 25 com.apple.AppKit 0x00007fff32c40a13 -[NSView = resizeSubviewsWithOldSize:] + 525 26 com.apple.AppKit 0x00007fff32c1bcf6 -[NSView = setFrameSize:] + 1714 27 com.apple.AppKit 0x00007fff32c2dca2 -[NSView = setFrame:] + 423 28 com.apple.AppKit 0x00007fff32c604f7 = -[NSThemeFrame _relayoutAuxiliaryViewsOfType:] + 149 29 com.apple.AppKit 0x00007fff32c6044f = -[NSThemeFrame relayoutAuxiliaryViewsOfType:] + 27 30 com.apple.AppKit 0x00007fff32e284fe = -[NSTitlebarViewController removeChildViewControllerAtIndex:] + 430 31 com.apple.AppKit 0x00007fff3341b9f1 = -[NSWindowStackController = _removeTabBarAccessoryViewControllerForWindow:] + 212 32 com.apple.AppKit 0x00007fff3341cc7a = -[NSWindowStackController removeWindow:] + 297 33 com.apple.AppKit 0x00007fff32e988af = -[NSWindow(NSWindowTabbing) _doTabbedWindowCleanupForOrderOut] + 97 34 com.apple.AppKit 0x00007fff3347be55 -[NSWindow = _finishClosingWindow] + 73 35 com.apple.AppKit 0x00007fff32f590cd -[NSWindow = _close] + 352 36 org.gnu.Emacs 0x000000010ac8dd4a = ns_free_frame_resources + 202 (nsterm.m:1705) 37 org.gnu.Emacs 0x000000010ac9fd5a = ns_destroy_window + 106 (nsterm.m:1733) 38 org.gnu.Emacs 0x000000010aad1faa delete_frame = + 1642 (frame.c:2137) 39 org.gnu.Emacs 0x000000010ac0d891 funcall_subr = + 257 40 org.gnu.Emacs 0x000000010ac0ce7b Ffuncall + = 843 41 org.gnu.Emacs 0x000000010ac06459 = Ffuncall_interactively + 73 (callint.c:254) 42 org.gnu.Emacs 0x000000010ac0ce7b Ffuncall + = 843 43 org.gnu.Emacs 0x000000010ac07948 = Fcall_interactively + 5336 44 org.gnu.Emacs 0x000000010ac0d8b1 funcall_subr = + 289 45 org.gnu.Emacs 0x000000010ac0ce7b Ffuncall + = 843 46 org.gnu.Emacs 0x000000010ac50737 = exec_byte_code + 1815 (bytecode.c:633) 47 org.gnu.Emacs 0x000000010ac0ce19 Ffuncall + = 745 48 org.gnu.Emacs 0x000000010ac0d4ec call1 + 44 49 org.gnu.Emacs 0x000000010ab84ab9 = command_loop_1 + 2009 (lisp.h:1272) 50 org.gnu.Emacs 0x000000010ac0b4c7 = internal_condition_case + 263 (eval.c:1357) 51 org.gnu.Emacs 0x000000010ab94830 = command_loop_2 + 48 (lisp.h:1272) 52 org.gnu.Emacs 0x000000010ac0acdb = internal_catch + 267 (eval.c:1118) 53 org.gnu.Emacs 0x000000010acc8b75 = command_loop.cold.1 + 69 54 org.gnu.Emacs 0x000000010ab838e3 command_loop = + 131 55 org.gnu.Emacs 0x000000010ab83813 = recursive_edit_1 + 115 (keyboard.c:714) 56 org.gnu.Emacs 0x000000010ab83a6b = Frecursive_edit + 347 (keyboard.c:787) 57 org.gnu.Emacs 0x000000010ab82651 main + 7425 = (emacs.c:2036) 58 libdyld.dylib 0x00007fff6d0c27fd start + 1 --Apple-Mail=_E02126A4-EBA4-4D0B-9407-1D825BA9C2F7-- From unknown Sun Jun 22 22:45:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#40200: [PATCH v2] Fix NS frame resizing issues (bug#40200, bug#28872) Resent-From: Andrii Kolomoiets Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Fri, 27 Mar 2020 13:23:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 40200 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Alan Third Cc: 40200@debbugs.gnu.org, aaronjensen@gmail.com, 28872@debbugs.gnu.org Received: via spool by 40200-submit@debbugs.gnu.org id=B40200.158531533914480 (code B ref 40200); Fri, 27 Mar 2020 13:23:02 +0000 Received: (at 40200) by debbugs.gnu.org; 27 Mar 2020 13:22:19 +0000 Received: from localhost ([127.0.0.1]:60619 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1jHowF-0003lU-3s for submit@debbugs.gnu.org; Fri, 27 Mar 2020 09:22:19 -0400 Received: from mail-lj1-f196.google.com ([209.85.208.196]:35451) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1jHowD-0003lF-5Q; Fri, 27 Mar 2020 09:22:17 -0400 Received: by mail-lj1-f196.google.com with SMTP id k21so10183368ljh.2; Fri, 27 Mar 2020 06:22:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:subject:from:in-reply-to:date:cc :content-transfer-encoding:message-id:references:to; bh=JNx91Wkb8S4WNQTyDKKN7K0vXm6J+Kj4qlsBkR5/hAw=; b=dzXpJKmwY+G1xmyN2fCWhJL8XlFe7T+optEie3eT6vKCjmRihy5mpDDIoTfFlJeiAQ Il9+jbu0NWVvq368rZh9h1oDOUEBlXjBS/AETTTl9MDAfOUqTSBBd/LLoFVXiwUSTyaA D80LcJu66SO2lMdvwAyd3hLsI86ldsBdM0xZn1R+crhczTScPn2I9YEFNzn45p23T6tn 0O6MGoJjYYuxvC7fIVs+GlE2hqEJ8k/uEBIAAykOluL/TSNCFbydqHRpb3/bCT4rUbHq ZLyPz7RHoOulyZ+S+1G6C2ptCjwKtDReWtpAKRCs4UN3mNafPoTxp21i3Q4ZVVtg0jZv 1UZQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:subject:from:in-reply-to:date:cc :content-transfer-encoding:message-id:references:to; bh=JNx91Wkb8S4WNQTyDKKN7K0vXm6J+Kj4qlsBkR5/hAw=; b=bnvSlWz6mGWg73VVysh0ovny+UqTMgwWsgebMDYXviCs5nQv5yZ6/TK15lANG9vZI1 A5bY4xnMm+zG14wfONxp0SQho3q32aONSglgbhQ5Z7eAqXNwVcZLTU8mQfU69nAzFxb3 e83b7oNM2rwH6QlX4y7rhdPD2YNWRXVCY6KlzMbh0OnEI5XR/nC1OjeaxlXKOG6Dsc2d HMkFuINCpjgz+z5nCldumnCCW1V28356vt2lyztYXfn26QVfEF4cRJYfTtxrw4odmYzx qEKZdGidk+Q5qRPJ1mdznLpjXfssDAh7Otezb6VuALoaHF9Ai1k3BNrStTFP4y4PIhOL 9KDQ== X-Gm-Message-State: AGi0PuZW1VkjaZtw3jmr/TK+tcy6hmy+aKMnrahxJ8rtfGqdwAutGOVs oolQzAiFpEp0o38lf7yQoc4= X-Google-Smtp-Source: ADFU+vuxQofva6GdU8RjdNpnYnsnDQf1KuGfD7mfTbhc6Du5V2GlR7BH7k+aJr4FZW3NtgiKu+DCKg== X-Received: by 2002:a2e:9e03:: with SMTP id e3mr8455878ljk.186.1585315331063; Fri, 27 Mar 2020 06:22:11 -0700 (PDT) Received: from [192.168.0.102] ([91.206.110.153]) by smtp.gmail.com with ESMTPSA id i30sm3394107lfp.36.2020.03.27.06.22.09 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 27 Mar 2020 06:22:10 -0700 (PDT) Content-Type: text/plain; charset=us-ascii Mime-Version: 1.0 (Mac OS X Mail 13.0 \(3608.60.0.2.5\)) From: Andrii Kolomoiets In-Reply-To: <20200326212125.GA66331@breton.holly.idiocy.org> Date: Fri, 27 Mar 2020 15:22:08 +0200 Content-Transfer-Encoding: 7bit Message-Id: References: <20200326212125.GA66331@breton.holly.idiocy.org> X-Mailer: Apple Mail (2.3608.60.0.2.5) X-Spam-Score: 0.0 (/) 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.0 (-) On 26 Mar 2020, at 23:21, Alan Third wrote: > Hopefully this works better. Found another changed behavior: 1. emacs -Q 2. (setq test/frame (make-frame `((parent-frame . ,(selected-frame))))) 3. (modify-frame-parameters test/frame '((height . 1) (top . (- 40)))) Old behavior: child frame is at bottom of the parent frame. New behavior: child frame is at top of the parent frame. Child frame moves to bottom after code from step 3 applied one more time. Step 3 can be replaced with these two steps to achieve old behavior: (modify-frame-parameters test/frame '((height . 1))) (modify-frame-parameters test/frame '((top . (- 40)))) From unknown Sun Jun 22 22:45:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#40200: [PATCH v2] Fix NS frame resizing issues (bug#40200, bug#28872) Resent-From: Alan Third Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sat, 28 Mar 2020 01:58:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 40200 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Andrii Kolomoiets Cc: 40200@debbugs.gnu.org, aaronjensen@gmail.com, 28872@debbugs.gnu.org Received: via spool by 40200-submit@debbugs.gnu.org id=B40200.158536063113045 (code B ref 40200); Sat, 28 Mar 2020 01:58:02 +0000 Received: (at 40200) by debbugs.gnu.org; 28 Mar 2020 01:57:11 +0000 Received: from localhost ([127.0.0.1]:33563 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1jI0ik-0003OG-PD for submit@debbugs.gnu.org; Fri, 27 Mar 2020 21:57:10 -0400 Received: from mailout-l3b-97.contactoffice.com ([212.3.242.97]:57948) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1jI0ih-0003Nd-MQ; Fri, 27 Mar 2020 21:57:09 -0400 Received: from smtpauth1.co-bxl (smtpauth1.co-bxl [10.2.0.15]) by mailout-l3b-97.contactoffice.com (Postfix) with ESMTP id 2DC6F569; Sat, 28 Mar 2020 02:57:01 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1585360621; s=20200222-6h9o; d=idiocy.org; i=alan@idiocy.org; h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version:Content-Type:Content-Transfer-Encoding:In-Reply-To; l=1512; bh=JbpLq6D54BVkg37xFu2xtP7LyEaAlAY9HKjrtZl5oGM=; b=nhN3VLX9tGAqrYD47CiRiZgmrIanxPQhCzk9skAqPoYIvvS8Qqs0ddFK6fdoUWl0 wf00DVzJEt81iFprNf45q2V8UUrGlbiwkmHwTrhBpJNUSL6VbEbi9hb2KosOmNyt/wP wsJJL+kIOLcPDuFCoQ7oRPpsKN69zUDe04cf5GIoECrUnnOIYsZVOqTbAoD3ZGlaA9W ILqdg3OAARphZc2BZKS/Ja4hVHRMUCw2UPjafsrT4a+EUhOzcKvXfajx9LJXjhioOQw D6I+rlvMqPxjmpB/q3rAe5WfBApPm8imTuDGreqisVt47r1FTPb9NDDuarX9pOc49jW xQlrCDDPvQ== Received: by smtp.mailfence.com with ESMTPA ; Sat, 28 Mar 2020 02:56:58 +0100 (CET) Received: by idiocy.org (Postfix, from userid 501) id 5A0402020AAF8D; Sat, 28 Mar 2020 01:56:57 +0000 (GMT) Date: Sat, 28 Mar 2020 02:56:59 +0100 (CET) From: Alan Third Message-ID: <20200328015657.GA66478@breton.holly.idiocy.org> Mail-Followup-To: Alan Third , Andrii Kolomoiets , 40200@debbugs.gnu.org, 28872@debbugs.gnu.org, aaronjensen@gmail.com References: <20200326212125.GA66331@breton.holly.idiocy.org> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: X-Spam-Flag: NO X-Spam-Status: No, hits=-2.9 required=4.7 symbols=ALL_TRUSTED, BAYES_00 device=10.2.0.20 X-ContactOffice-Account: com:241649512 X-Spam-Score: -0.7 (/) 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 (-) On Fri, Mar 27, 2020 at 03:22:08PM +0200, Andrii Kolomoiets wrote: > On 26 Mar 2020, at 23:21, Alan Third wrote: > > Hopefully this works better. > > Found another changed behavior: > 1. emacs -Q > 2. (setq test/frame (make-frame `((parent-frame . ,(selected-frame))))) > 3. (modify-frame-parameters test/frame '((height . 1) (top . (- 40)))) > > Old behavior: child frame is at bottom of the parent frame. This is wrong. > New behavior: child frame is at top of the parent frame. This is wrong too. > Child frame moves to bottom after code from step 3 applied one more time. Still wrong. The bottom of the child frame should be 40 pixels from the bottom of the parent frame. This is quite annoying, it means Emacs 27 behaves wrongly. I wonder if Emacs 26 does too, or has it been broken the whole time? > Step 3 can be replaced with these two steps to achieve old behavior: > (modify-frame-parameters test/frame '((height . 1))) > (modify-frame-parameters test/frame '((top . (- 40)))) I inadvertently made order of operations matter when they shouldn’t. I’ve got a fix for this, but it’s opening up a whole other can of worms regarding frame positioning and the reporting of positions. I think I know what to do but the last time I worked on this we had a lot of edge cases that weren’t easy to test, with multiple monitors and spaces. I think I’ll have to look at the old bug reports to work out how we handle that. -- Alan Third From unknown Sun Jun 22 22:45:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#40200: [PATCH v3] Fix NS frame resizing issues (bug#40200, bug#28872) Resent-From: Alan Third Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sat, 04 Apr 2020 14:18:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 40200 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Andrii Kolomoiets Cc: 40200@debbugs.gnu.org, aaronjensen@gmail.com, 28872@debbugs.gnu.org Received: via spool by 40200-submit@debbugs.gnu.org id=B40200.158600988028201 (code B ref 40200); Sat, 04 Apr 2020 14:18:02 +0000 Received: (at 40200) by debbugs.gnu.org; 4 Apr 2020 14:18:00 +0000 Received: from localhost ([127.0.0.1]:44566 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1jKjcV-0007Kg-Sd for submit@debbugs.gnu.org; Sat, 04 Apr 2020 10:18:00 -0400 Received: from idiocy.org ([217.169.17.33]:52484 helo=breton.holly.idiocy.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1jKjcS-0007K1-Dw; Sat, 04 Apr 2020 10:17:57 -0400 Received: by breton.holly.idiocy.org (Postfix, from userid 501) id C57722021684D4; Sat, 4 Apr 2020 15:17:49 +0100 (BST) Date: Sat, 4 Apr 2020 15:17:49 +0100 From: Alan Third Message-ID: <20200404141749.GA10895@breton.holly.idiocy.org> Mail-Followup-To: Alan Third , Andrii Kolomoiets , 40200@debbugs.gnu.org, 28872@debbugs.gnu.org, aaronjensen@gmail.com References: <20200328015657.GA66478@breton.holly.idiocy.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20200328015657.GA66478@breton.holly.idiocy.org> X-Spam-Score: 0.0 (/) 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.0 (-) * src/nsmenu.m (update_frame_tool_bar): Remove reference to updateFrameSize. * src/nsterm.h: ([EmacsView updateFrameSize]): ([EmacsView setRows:andColumns:]): Remove unused method definitions. (NS_PARENT_WINDOW_LEFT_POS): (NS_PARENT_WINDOW_TOP_POS): Move to nsterm.m. * src/nsterm.m (ns_parent_window_rect): New function. (NS_PARENT_WINDOW_LEFT_POS): (NS_PARENT_WINDOW_TOP_POS): Move to nsterm.m and simplify. (ns_set_offset): Fix strange behaviours when using negative values. (ns_set_window_size): (ns_set_undecorated): ([EmacsView windowDidResize:]): ([EmacsView windowDidExitFullScreen]): (ns_judge_scroll_bars): Remove references to updateFrameSize. ([EmacsView dealloc]): Unset resize notification and release buffer. ([EmacsView updateFrameSize:]): Remove function. ([EmacsView windowWillResize:toSize:]): Move some code to viewDidResize. ([EmacsView viewDidResize]): New function. ([EmacsView initFrameFromEmacs:]): Set up resize notification and move buffer creation until after the prerequisite objects are created. ([EmacsView toggleFullScreen:]): Set frame to the size of the contentview, not the whole window, and remove reference to updateFrameSize. ([EmacsView setRows:andColumns:]): Remove unused method. ([EmacsView windowDidMove:]): Tidy up. --- Once again, I think this is right. Please test and let me know how you get on. src/nsmenu.m | 2 - src/nsterm.h | 15 --- src/nsterm.m | 309 +++++++++++++++++++++++---------------------------- 3 files changed, 142 insertions(+), 184 deletions(-) diff --git a/src/nsmenu.m b/src/nsmenu.m index 67f9a45a40..b7e4cbd565 100644 --- a/src/nsmenu.m +++ b/src/nsmenu.m @@ -1141,8 +1141,6 @@ - (Lisp_Object)runMenuAt: (NSPoint)p forFrame: (struct frame *)f } #endif - if (oldh != FRAME_TOOLBAR_HEIGHT (f)) - [view updateFrameSize:YES]; if (view->wait_for_tool_bar && FRAME_TOOLBAR_HEIGHT (f) > 0) { view->wait_for_tool_bar = NO; diff --git a/src/nsterm.h b/src/nsterm.h index 8396a542f7..e142dbd4f0 100644 --- a/src/nsterm.h +++ b/src/nsterm.h @@ -439,7 +439,6 @@ #define NS_DRAW_TO_BUFFER 1 #endif @public struct frame *emacsframe; - int rows, cols; int scrollbarsNeedingUpdate; EmacsToolbar *toolbar; NSRect ns_userRect; @@ -458,11 +457,9 @@ #define NS_DRAW_TO_BUFFER 1 /* Emacs-side interface */ - (instancetype) initFrameFromEmacs: (struct frame *) f; - (void) createToolbar: (struct frame *)f; -- (void) setRows: (int) r andColumns: (int) c; - (void) setWindowClosing: (BOOL)closing; - (EmacsToolbar *) toolbar; - (void) deleteWorkingText; -- (void) updateFrameSize: (BOOL) delay; - (void) handleFS; - (void) setFSValue: (int)value; - (void) toggleFullScreen: (id) sender; @@ -1084,18 +1081,6 @@ #define NS_SCROLL_BAR_ADJUST_HORIZONTALLY(w, f) \ (FRAME_SCROLL_BAR_LINES (f) * FRAME_LINE_HEIGHT (f) \ - NS_SCROLL_BAR_HEIGHT (f)) : 0) -/* Calculate system coordinates of the left and top of the parent - window or, if there is no parent window, the screen. */ -#define NS_PARENT_WINDOW_LEFT_POS(f) \ - (FRAME_PARENT_FRAME (f) != NULL \ - ? [FRAME_NS_VIEW (FRAME_PARENT_FRAME (f)) window].frame.origin.x : 0) -#define NS_PARENT_WINDOW_TOP_POS(f) \ - (FRAME_PARENT_FRAME (f) != NULL \ - ? ([FRAME_NS_VIEW (FRAME_PARENT_FRAME (f)) window].frame.origin.y \ - + [FRAME_NS_VIEW (FRAME_PARENT_FRAME (f)) window].frame.size.height \ - - FRAME_NS_TITLEBAR_HEIGHT (FRAME_PARENT_FRAME (f))) \ - : [[[NSScreen screens] objectAtIndex: 0] frame].size.height) - #define FRAME_NS_FONT_TABLE(f) (FRAME_DISPLAY_INFO (f)->font_table) #define FRAME_FONTSET(f) ((f)->output_data.ns->fontset) diff --git a/src/nsterm.m b/src/nsterm.m index 04fc051223..461431622f 100644 --- a/src/nsterm.m +++ b/src/nsterm.m @@ -843,6 +843,32 @@ Free a pool and temporary objects it refers to (callable from C) } +/* Get the frame rect, in system coordinates, of the parent window or, + if there is no parent window, the main screen. */ +static inline NSRect +ns_parent_window_rect (struct frame *f) +{ + NSRect parentRect; + + if (FRAME_PARENT_FRAME (f) != NULL) + { + EmacsView *parentView = FRAME_NS_VIEW (FRAME_PARENT_FRAME (f)); + parentRect = [parentView convertRect:[parentView frame] + toView:nil]; + parentRect = [[parentView window] convertRectToScreen:parentRect]; + } + else + parentRect = [[[NSScreen screens] objectAtIndex:0] frame]; + + return parentRect; +} + +/* Calculate system coordinates of the left and top of the parent + window or, if there is no parent window, the main screen. */ +#define NS_PARENT_WINDOW_LEFT_POS(f) NSMinX (ns_parent_window_rect (f)) +#define NS_PARENT_WINDOW_TOP_POS(f) NSMaxY (ns_parent_window_rect (f)) + + static NSRect ns_row_rect (struct window *w, struct glyph_row *row, enum glyph_row_area area) @@ -1741,61 +1767,64 @@ Hide the window (X11 semantics) -------------------------------------------------------------------------- */ { NSView *view = FRAME_NS_VIEW (f); - NSScreen *screen = [[view window] screen]; + NSRect windowFrame = [[view window] frame]; + NSPoint topLeft; NSTRACE ("ns_set_offset"); block_input (); - f->left_pos = xoff; - f->top_pos = yoff; + if (FRAME_PARENT_FRAME (f)) + { + /* Convert the parent frame's view rectangle into screen + coords. */ + EmacsView *parentView = FRAME_NS_VIEW (FRAME_PARENT_FRAME (f)); + NSRect parentRect = [parentView convertRect:[parentView frame] + toView:nil]; + parentRect = [[parentView window] convertRectToScreen:parentRect]; + + if (f->size_hint_flags & XNegative) + topLeft.x = NSMaxX (parentRect) - NSWidth (windowFrame) + xoff; + else + topLeft.x = NSMinX (parentRect) + xoff; - if (view != nil) + if (f->size_hint_flags & YNegative) + topLeft.y = NSMinY (parentRect) + NSHeight (windowFrame) - yoff; + else + topLeft.y = NSMaxY (parentRect) - yoff; + } + else { - if (FRAME_PARENT_FRAME (f) == NULL && screen) - { - f->left_pos = f->size_hint_flags & XNegative - ? [screen visibleFrame].size.width + f->left_pos - FRAME_PIXEL_WIDTH (f) - : f->left_pos; - /* We use visibleFrame here to take menu bar into account. - Ideally we should also adjust left/top with visibleFrame.origin. */ - - f->top_pos = f->size_hint_flags & YNegative - ? ([screen visibleFrame].size.height + f->top_pos - - FRAME_PIXEL_HEIGHT (f) - FRAME_NS_TITLEBAR_HEIGHT (f) - - FRAME_TOOLBAR_HEIGHT (f)) - : f->top_pos; -#ifdef NS_IMPL_GNUSTEP - if (f->left_pos < 100) - f->left_pos = 100; /* don't overlap menu */ -#endif - } - else if (FRAME_PARENT_FRAME (f) != NULL) - { - struct frame *parent = FRAME_PARENT_FRAME (f); + /* If there is no parent frame then just convert to screen + coordinates, UNLESS we have negative values, in which case I + think it's best to position from the bottom and right of the + current screen rather than the main screen or whole + display. */ + NSRect screenFrame = [[[view window] screen] frame]; - /* On X negative values for child frames always result in - positioning relative to the bottom right corner of the - parent frame. */ - if (f->left_pos < 0) - f->left_pos = FRAME_PIXEL_WIDTH (parent) - FRAME_PIXEL_WIDTH (f) + f->left_pos; + if (f->size_hint_flags & XNegative) + topLeft.x = NSMaxX (screenFrame) - NSWidth (windowFrame) + xoff; + else + topLeft.x = xoff; - if (f->top_pos < 0) - f->top_pos = FRAME_PIXEL_HEIGHT (parent) + FRAME_TOOLBAR_HEIGHT (parent) - - FRAME_PIXEL_HEIGHT (f) + f->top_pos; - } + if (f->size_hint_flags & YNegative) + topLeft.y = NSMinY (screenFrame) + NSHeight (windowFrame) - yoff; + else + topLeft.y = NSMaxY ([[[NSScreen screens] objectAtIndex:0] frame]) - yoff; + +#ifdef NS_IMPL_GNUSTEP + /* Don't overlap the menu. - /* Constrain the setFrameTopLeftPoint so we don't move behind the - menu bar. */ - NSPoint pt = NSMakePoint (SCREENMAXBOUND (f->left_pos - + NS_PARENT_WINDOW_LEFT_POS (f)), - SCREENMAXBOUND (NS_PARENT_WINDOW_TOP_POS (f) - - f->top_pos)); - NSTRACE_POINT ("setFrameTopLeftPoint", pt); - [[view window] setFrameTopLeftPoint: pt]; - f->size_hint_flags &= ~(XNegative|YNegative); + FIXME: Surely there's a better way than just hardcoding 100 + in here? */ + boundsRect.origin.x = 100; +#endif } + NSTRACE_POINT ("setFrameTopLeftPoint", topLeft); + [[view window] setFrameTopLeftPoint:topLeft]; + f->size_hint_flags &= ~(XNegative|YNegative); + unblock_input (); } @@ -1864,7 +1893,6 @@ Hide the window (X11 semantics) [window setFrame: wr display: YES]; - [view updateFrameSize: NO]; unblock_input (); } @@ -1913,7 +1941,6 @@ Hide the window (X11 semantics) so some key presses (TAB) are swallowed by the system. */ [window makeFirstResponder: view]; - [view updateFrameSize: NO]; unblock_input (); } } @@ -5024,9 +5051,6 @@ in certain situations (rapid incoming events). if ([view judge]) removed = YES; } - - if (removed) - [eview updateFrameSize: NO]; } /* ========================================================================== @@ -6198,6 +6222,15 @@ - (void) setWindowClosing: (BOOL)closing - (void)dealloc { NSTRACE ("[EmacsView dealloc]"); + + /* Clear the view resize notification. */ + [[NSNotificationCenter defaultCenter] + removeObserver:self + name:NSViewFrameDidChangeNotification + object:nil]; + + CGContextRelease (drawingBuffer); + [toolbar release]; if (fs_state == FULLSCREEN_BOTH) [nonfs_window release]; @@ -7039,108 +7072,12 @@ - (BOOL)windowShouldClose: (id)sender return NO; } -- (void) updateFrameSize: (BOOL) delay -{ - NSWindow *window = [self window]; - NSRect wr = [window frame]; - int extra = 0; - int oldc = cols, oldr = rows; - int oldw = FRAME_PIXEL_WIDTH (emacsframe); - int oldh = FRAME_PIXEL_HEIGHT (emacsframe); - int neww, newh; - - NSTRACE ("[EmacsView updateFrameSize:]"); - NSTRACE_SIZE ("Original size", NSMakeSize (oldw, oldh)); - NSTRACE_RECT ("Original frame", wr); - NSTRACE_MSG ("Original columns: %d", cols); - NSTRACE_MSG ("Original rows: %d", rows); - - if (! [self isFullscreen]) - { - int toolbar_height; -#ifdef NS_IMPL_GNUSTEP - // GNUstep does not always update the tool bar height. Force it. - if (toolbar && [toolbar isVisible]) - update_frame_tool_bar (emacsframe); -#endif - - toolbar_height = FRAME_TOOLBAR_HEIGHT (emacsframe); - if (toolbar_height < 0) - toolbar_height = 35; - - extra = FRAME_NS_TITLEBAR_HEIGHT (emacsframe) - + toolbar_height; - } - - if (wait_for_tool_bar) - { - /* The toolbar height is always 0 in fullscreen and undecorated - frames, so don't wait for it to become available. */ - if (FRAME_TOOLBAR_HEIGHT (emacsframe) == 0 - && FRAME_UNDECORATED (emacsframe) == false - && ! [self isFullscreen]) - { - NSTRACE_MSG ("Waiting for toolbar"); - return; - } - wait_for_tool_bar = NO; - } - - neww = (int)wr.size.width - emacsframe->border_width; - newh = (int)wr.size.height - extra; - - NSTRACE_SIZE ("New size", NSMakeSize (neww, newh)); - NSTRACE_MSG ("FRAME_TOOLBAR_HEIGHT: %d", FRAME_TOOLBAR_HEIGHT (emacsframe)); - NSTRACE_MSG ("FRAME_NS_TITLEBAR_HEIGHT: %d", FRAME_NS_TITLEBAR_HEIGHT (emacsframe)); - - cols = FRAME_PIXEL_WIDTH_TO_TEXT_COLS (emacsframe, neww); - rows = FRAME_PIXEL_HEIGHT_TO_TEXT_LINES (emacsframe, newh); - - if (cols < MINWIDTH) - cols = MINWIDTH; - - if (rows < MINHEIGHT) - rows = MINHEIGHT; - - NSTRACE_MSG ("New columns: %d", cols); - NSTRACE_MSG ("New rows: %d", rows); - - if (oldr != rows || oldc != cols || neww != oldw || newh != oldh) - { - NSView *view = FRAME_NS_VIEW (emacsframe); - - change_frame_size (emacsframe, - FRAME_PIXEL_TO_TEXT_WIDTH (emacsframe, neww), - FRAME_PIXEL_TO_TEXT_HEIGHT (emacsframe, newh), - 0, delay, 0, 1); - SET_FRAME_GARBAGED (emacsframe); - cancel_mouse_face (emacsframe); - - /* The next two lines set the frame to the same size as we've - already set above. We need to do this when we switch back - from non-native fullscreen, in other circumstances it appears - to be a noop. (bug#28872) */ - wr = NSMakeRect (0, 0, neww, newh); - [view setFrame: wr]; -#ifdef NS_DRAW_TO_BUFFER - [self createDrawingBuffer]; -#endif - - // To do: consider using [NSNotificationCenter postNotificationName:]. - [self windowDidMove: // Update top/left. - [NSNotification notificationWithName:NSWindowDidMoveNotification - object:[view window]]]; - } - else - { - NSTRACE_MSG ("No change"); - } -} - (NSSize)windowWillResize: (NSWindow *)sender toSize: (NSSize)frameSize /* Normalize frame to gridded text size. */ { int extra = 0; + int cols, rows; NSTRACE ("[EmacsView windowWillResize:toSize: " NSTRACE_FMT_SIZE "]", NSTRACE_ARG_SIZE (frameSize)); @@ -7277,11 +7214,6 @@ - (void)windowDidResize: (NSNotification *)notification sz = [self windowWillResize: theWindow toSize: sz]; #endif /* NS_IMPL_GNUSTEP */ - if (cols > 0 && rows > 0) - { - [self updateFrameSize: YES]; - } - ns_send_appdefined (-1); } @@ -7302,6 +7234,51 @@ - (void)viewDidEndLiveResize #endif /* NS_IMPL_COCOA */ +- (void)viewDidResize:(NSNotification *)notification +{ + NSRect frame = [self frame]; + int oldw, oldh, neww, newh; + + if (! FRAME_LIVE_P (emacsframe)) + return; + +#ifdef NS_DRAW_TO_BUFFER + CGFloat scale = [[self window] backingScaleFactor]; + oldw = (CGFloat)CGBitmapContextGetWidth (drawingBuffer) / scale; + oldh = (CGFloat)CGBitmapContextGetHeight (drawingBuffer) / scale; +#else + oldw = FRAME_PIXEL_WIDTH (emacsframe); + oldh = FRAME_PIXEL_HEIGHT (emacsframe); +#endif + neww = (int)NSWidth (frame); + newh = (int)NSHeight (frame); + + NSTRACE ("[EmacsView viewDidResize]"); + + /* Don't want to do anything when the view size hasn't changed. */ + if ((oldh == newh && oldw == neww)) + { + NSTRACE_MSG ("No change"); + return; + } + + NSTRACE_SIZE ("Original size", NSMakeSize (oldw, oldh)); + NSTRACE_SIZE ("New size", NSMakeSize (neww, newh)); + + change_frame_size (emacsframe, + FRAME_PIXEL_TO_TEXT_WIDTH (emacsframe, neww), + FRAME_PIXEL_TO_TEXT_HEIGHT (emacsframe, newh), + 0, YES, 0, 1); + +#ifdef NS_DRAW_TO_BUFFER + [self createDrawingBuffer]; +#endif + ns_clear_frame (emacsframe); + SET_FRAME_GARBAGED (emacsframe); + cancel_mouse_face (emacsframe); +} + + - (void)windowDidBecomeKey: (NSNotification *)notification /* cf. x_detect_focus_change(), x_focus_changed(), x_new_focus_frame() */ { @@ -7463,10 +7440,6 @@ - (instancetype) initFrameFromEmacs: (struct frame *)f maximizing_resize = NO; #endif -#ifdef NS_DRAW_TO_BUFFER - [self createDrawingBuffer]; -#endif - win = [[EmacsWindow alloc] initWithContentRect: r styleMask: (FRAME_UNDECORATED (f) @@ -7572,6 +7545,17 @@ - (instancetype) initFrameFromEmacs: (struct frame *)f [NSApp registerServicesMenuSendTypes: ns_send_types returnTypes: [NSArray array]]; +#ifdef NS_DRAW_TO_BUFFER + [self createDrawingBuffer]; +#endif + + /* Set up view resize notifications. */ + [self setPostsFrameChangedNotifications:YES]; + [[NSNotificationCenter defaultCenter] + addObserver:self + selector:@selector (viewDidResize:) + name:NSViewFrameDidChangeNotification object:nil]; + /* macOS Sierra automatically enables tabbed windows. We can't allow this to be enabled until it's available on a Free system. Currently it only happens by accident and is buggy anyway. */ @@ -7601,9 +7585,8 @@ - (void)windowDidMove: sender return; if (screen != nil) { - emacsframe->left_pos = r.origin.x - NS_PARENT_WINDOW_LEFT_POS (emacsframe); - emacsframe->top_pos = - NS_PARENT_WINDOW_TOP_POS (emacsframe) - (r.origin.y + r.size.height); + emacsframe->left_pos = NSMinX (r) - NS_PARENT_WINDOW_LEFT_POS (emacsframe); + emacsframe->top_pos = NS_PARENT_WINDOW_TOP_POS (emacsframe) - NSMaxY (r); // FIXME: after event part below didExitFullScreen is not received // if (emacs_event) @@ -7902,7 +7885,6 @@ - (void)windowDidExitFullScreen /* provided for direct calls */ { [toolbar setVisible:YES]; update_frame_tool_bar (emacsframe); - [self updateFrameSize:YES]; [[self window] display]; } else @@ -8115,11 +8097,11 @@ - (void)toggleFullScreen: (id)sender // send notifications. [self windowWillExitFullScreen]; - [fw setFrame: [w frame] display:YES animate:ns_use_fullscreen_animation]; + [fw setFrame:[[w contentView] frame] + display:YES animate:ns_use_fullscreen_animation]; [fw close]; [w makeKeyAndOrderFront:NSApp]; [self windowDidExitFullScreen]; - [self updateFrameSize:YES]; } } @@ -8628,13 +8610,6 @@ - (instancetype)setMiniwindowImage: (BOOL) setMini } -- (void) setRows: (int) r andColumns: (int) c -{ - NSTRACE ("[EmacsView setRows:%d andColumns:%d]", r, c); - rows = r; - cols = c; -} - - (int) fullscreenState { return fs_state; -- 2.24.0 -- Alan Third From unknown Sun Jun 22 22:45:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#40200: [PATCH v3] Fix NS frame resizing issues (bug#40200, bug#28872) Resent-From: Andrii Kolomoiets Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Mon, 06 Apr 2020 06:58:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 40200 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Alan Third Cc: 40200@debbugs.gnu.org, aaronjensen@gmail.com, 28872@debbugs.gnu.org Received: via spool by 40200-submit@debbugs.gnu.org id=B40200.158615624823638 (code B ref 40200); Mon, 06 Apr 2020 06:58:02 +0000 Received: (at 40200) by debbugs.gnu.org; 6 Apr 2020 06:57:28 +0000 Received: from localhost ([127.0.0.1]:47083 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1jLLhH-000696-Ul for submit@debbugs.gnu.org; Mon, 06 Apr 2020 02:57:28 -0400 Received: from mail-lf1-f65.google.com ([209.85.167.65]:32910) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1jLLhE-00068S-TN; Mon, 06 Apr 2020 02:57:25 -0400 Received: by mail-lf1-f65.google.com with SMTP id h6so6369911lfc.0; Sun, 05 Apr 2020 23:57:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:references:date:in-reply-to:message-id :user-agent:mime-version; bh=cEMuEGAkt0vuV7pFCBDRJdj41ZutSyV7SizRNIfNaak=; b=cdgCt3CgbTi2f2nxaMrPJQjQ36lWSo87A6pcsPD6/6GWmi3qniN5KRDZ10gMFCANcJ CWLS2+4vpNsi/WKTaPVrJXtWAJSH4Wd6a3rycRJUNumujNoSk9DEC8KbvZEBgnyWS4Bs qEL76VH45yMYYDhFlBVu0GaYB+Gfbr2+TgHMmGE9BPzF00W9fJTAKenK41HQZJm/nvRw KKhzmzo05530PNWslzgSgvzomXFvZi8+3u/MCWc9FLPtxCPV5+xOHkukw7XznXgFBWGp 0CMg9Fn7OROjS7C3D7fEnQ7bCYIRz2iz/gSPoLXON8BbRqt7oblwBhaorWgWf5sZUPvH yjLQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:references:date:in-reply-to :message-id:user-agent:mime-version; bh=cEMuEGAkt0vuV7pFCBDRJdj41ZutSyV7SizRNIfNaak=; b=hQJuDesTXVGphhFT6E9jA5SxRL4Wsqb+OhLO8EacTnvki/UV5nt9CWYtYVLi5jW3m2 uGozYwNH7TAQaPH1k+WZc3tDVHW1kAoBduHQVzCBJmt/6HUwjHOu+16wvlizFyfXrgHn VDBCL35Xkq42sudW0qNu8T9EWL+ruL4DiVJUDN/u+fMIu82vMIW2dMzLyUJvmDN1IRX1 OOOjzWWrEZdqP9d6WKddSSf2P0s6atIYtGEgsV6m8CNlmXJDYE149L6PtT0aTrytGFVI S9Hb9B6O0TVTzcqqOK/cRIGfVp985IGVJO1viHSXAkVIgc/M8LNuKcXnXIx/SfwPgXNh phuA== X-Gm-Message-State: AGi0PuaNQrt66tmtRqjX0UsZnq7oTRqRlGDs2aS37PmRrFMvyE4xZxtv qxUYWaCFHs7snZzZCiZc1UU= X-Google-Smtp-Source: APiQypKLhmODMX/2DXx6yOZrtmbGJNFXbIRWdIRWfFzrS92UZcW0qdA/uyru8WdK4cj9umixSHycaQ== X-Received: by 2002:a19:3857:: with SMTP id d23mr6398247lfj.214.1586156238596; Sun, 05 Apr 2020 23:57:18 -0700 (PDT) Received: from muffinmac.local ([91.206.110.145]) by smtp.gmail.com with ESMTPSA id j22sm11189507lfg.96.2020.04.05.23.57.16 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 05 Apr 2020 23:57:17 -0700 (PDT) From: Andrii Kolomoiets References: <20200328015657.GA66478@breton.holly.idiocy.org> <20200404141749.GA10895@breton.holly.idiocy.org> Date: Mon, 06 Apr 2020 09:57:16 +0300 In-Reply-To: <20200404141749.GA10895@breton.holly.idiocy.org> (Alan Third's message of "Sat, 4 Apr 2020 15:17:49 +0100") Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (darwin) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: 0.0 (/) 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.0 (-) Alan Third writes: > Once again, I think this is right. Please test and let me know how you > get on. This code works differently in the patched version: (progn (tool-bar-mode -1) (let ((child-frame (make-frame `((parent-frame . ,(selected-frame)) (top . 0) (left . 0) (width . 1.0) (height . 1)))) (new-frame (make-frame))) (set-frame-width new-frame (+ 20 (frame-parameter new-frame 'width))) (modify-frame-parameters child-frame `((parent-frame . ,new-frame))) (modify-frame-parameters child-frame '((top . 0) (left . 0) (width . 1.0) (height . 1))))) Child frame doesn't occupy full width of the parent frame. > + ns_clear_frame (emacsframe); Can this line be removed from the patch? I've described reasons to remove it in another letter: https://lists.gnu.org/archive/html/bug-gnu-emacs/2020-03/msg01060.html Thanks! From unknown Sun Jun 22 22:45:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#40200: [PATCH v4] Fix NS frame resizing issues (bug#40200, bug#28872) Resent-From: Alan Third Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Mon, 06 Apr 2020 18:45:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 40200 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Andrii Kolomoiets Cc: 40200@debbugs.gnu.org, aaronjensen@gmail.com, 28872@debbugs.gnu.org Received: via spool by 40200-submit@debbugs.gnu.org id=B40200.158619866224414 (code B ref 40200); Mon, 06 Apr 2020 18:45:02 +0000 Received: (at 40200) by debbugs.gnu.org; 6 Apr 2020 18:44:22 +0000 Received: from localhost ([127.0.0.1]:49224 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1jLWjN-0006Lb-PN for submit@debbugs.gnu.org; Mon, 06 Apr 2020 14:44:22 -0400 Received: from idiocy.org ([217.169.17.33]:55217 helo=breton.holly.idiocy.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1jLWjL-0006LB-3z; Mon, 06 Apr 2020 14:44:20 -0400 Received: by breton.holly.idiocy.org (Postfix, from userid 501) id 26F5B2021A24A0; Mon, 6 Apr 2020 19:44:11 +0100 (BST) Date: Mon, 6 Apr 2020 19:44:11 +0100 From: Alan Third Message-ID: <20200406184411.GA48827@breton.holly.idiocy.org> Mail-Followup-To: Alan Third , Andrii Kolomoiets , 40200@debbugs.gnu.org, 28872@debbugs.gnu.org, aaronjensen@gmail.com References: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: X-Spam-Score: 0.0 (/) 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.0 (-) * src/nsmenu.m (update_frame_tool_bar): Remove reference to updateFrameSize. * src/nsterm.h: ([EmacsView updateFrameSize]): ([EmacsView setRows:andColumns:]): Remove unused method definitions. (NS_PARENT_WINDOW_LEFT_POS): (NS_PARENT_WINDOW_TOP_POS): Move to nsterm.m. * src/nsterm.m (ns_parent_window_rect): New function. (NS_PARENT_WINDOW_LEFT_POS): (NS_PARENT_WINDOW_TOP_POS): Move to nsterm.m and simplify. (ns_set_offset): Fix strange behaviours when using negative values. (ns_set_window_size): (ns_set_undecorated): ([EmacsView windowDidResize:]): ([EmacsView windowDidExitFullScreen]): (ns_judge_scroll_bars): Remove references to updateFrameSize. ([EmacsView dealloc]): Unset resize notification and release buffer. ([EmacsView updateFrameSize:]): Remove function. ([EmacsView windowWillResize:toSize:]): Move some code to viewDidResize. ([EmacsView viewDidResize]): New function. ([EmacsView initFrameFromEmacs:]): Set up resize notification and move buffer creation until after the prerequisite objects are created. ([EmacsView toggleFullScreen:]): Set frame to the size of the contentview, not the whole window, and remove reference to updateFrameSize. ([EmacsView setRows:andColumns:]): Remove unused method. ([EmacsView windowDidMove:]): Tidy up. --- Out of interest, do you have a test suite, or are you just coming up with these tests on the fly? src/nsmenu.m | 2 - src/nsterm.h | 15 --- src/nsterm.m | 318 ++++++++++++++++++++++++--------------------------- 3 files changed, 150 insertions(+), 185 deletions(-) diff --git a/src/nsmenu.m b/src/nsmenu.m index 67f9a45a40..b7e4cbd565 100644 --- a/src/nsmenu.m +++ b/src/nsmenu.m @@ -1141,8 +1141,6 @@ - (Lisp_Object)runMenuAt: (NSPoint)p forFrame: (struct frame *)f } #endif - if (oldh != FRAME_TOOLBAR_HEIGHT (f)) - [view updateFrameSize:YES]; if (view->wait_for_tool_bar && FRAME_TOOLBAR_HEIGHT (f) > 0) { view->wait_for_tool_bar = NO; diff --git a/src/nsterm.h b/src/nsterm.h index 8396a542f7..e142dbd4f0 100644 --- a/src/nsterm.h +++ b/src/nsterm.h @@ -439,7 +439,6 @@ #define NS_DRAW_TO_BUFFER 1 #endif @public struct frame *emacsframe; - int rows, cols; int scrollbarsNeedingUpdate; EmacsToolbar *toolbar; NSRect ns_userRect; @@ -458,11 +457,9 @@ #define NS_DRAW_TO_BUFFER 1 /* Emacs-side interface */ - (instancetype) initFrameFromEmacs: (struct frame *) f; - (void) createToolbar: (struct frame *)f; -- (void) setRows: (int) r andColumns: (int) c; - (void) setWindowClosing: (BOOL)closing; - (EmacsToolbar *) toolbar; - (void) deleteWorkingText; -- (void) updateFrameSize: (BOOL) delay; - (void) handleFS; - (void) setFSValue: (int)value; - (void) toggleFullScreen: (id) sender; @@ -1084,18 +1081,6 @@ #define NS_SCROLL_BAR_ADJUST_HORIZONTALLY(w, f) \ (FRAME_SCROLL_BAR_LINES (f) * FRAME_LINE_HEIGHT (f) \ - NS_SCROLL_BAR_HEIGHT (f)) : 0) -/* Calculate system coordinates of the left and top of the parent - window or, if there is no parent window, the screen. */ -#define NS_PARENT_WINDOW_LEFT_POS(f) \ - (FRAME_PARENT_FRAME (f) != NULL \ - ? [FRAME_NS_VIEW (FRAME_PARENT_FRAME (f)) window].frame.origin.x : 0) -#define NS_PARENT_WINDOW_TOP_POS(f) \ - (FRAME_PARENT_FRAME (f) != NULL \ - ? ([FRAME_NS_VIEW (FRAME_PARENT_FRAME (f)) window].frame.origin.y \ - + [FRAME_NS_VIEW (FRAME_PARENT_FRAME (f)) window].frame.size.height \ - - FRAME_NS_TITLEBAR_HEIGHT (FRAME_PARENT_FRAME (f))) \ - : [[[NSScreen screens] objectAtIndex: 0] frame].size.height) - #define FRAME_NS_FONT_TABLE(f) (FRAME_DISPLAY_INFO (f)->font_table) #define FRAME_FONTSET(f) ((f)->output_data.ns->fontset) diff --git a/src/nsterm.m b/src/nsterm.m index 04fc051223..4318622377 100644 --- a/src/nsterm.m +++ b/src/nsterm.m @@ -843,6 +843,32 @@ Free a pool and temporary objects it refers to (callable from C) } +/* Get the frame rect, in system coordinates, of the parent window or, + if there is no parent window, the main screen. */ +static inline NSRect +ns_parent_window_rect (struct frame *f) +{ + NSRect parentRect; + + if (FRAME_PARENT_FRAME (f) != NULL) + { + EmacsView *parentView = FRAME_NS_VIEW (FRAME_PARENT_FRAME (f)); + parentRect = [parentView convertRect:[parentView frame] + toView:nil]; + parentRect = [[parentView window] convertRectToScreen:parentRect]; + } + else + parentRect = [[[NSScreen screens] objectAtIndex:0] frame]; + + return parentRect; +} + +/* Calculate system coordinates of the left and top of the parent + window or, if there is no parent window, the main screen. */ +#define NS_PARENT_WINDOW_LEFT_POS(f) NSMinX (ns_parent_window_rect (f)) +#define NS_PARENT_WINDOW_TOP_POS(f) NSMaxY (ns_parent_window_rect (f)) + + static NSRect ns_row_rect (struct window *w, struct glyph_row *row, enum glyph_row_area area) @@ -1741,61 +1767,64 @@ Hide the window (X11 semantics) -------------------------------------------------------------------------- */ { NSView *view = FRAME_NS_VIEW (f); - NSScreen *screen = [[view window] screen]; + NSRect windowFrame = [[view window] frame]; + NSPoint topLeft; NSTRACE ("ns_set_offset"); block_input (); - f->left_pos = xoff; - f->top_pos = yoff; + if (FRAME_PARENT_FRAME (f)) + { + /* Convert the parent frame's view rectangle into screen + coords. */ + EmacsView *parentView = FRAME_NS_VIEW (FRAME_PARENT_FRAME (f)); + NSRect parentRect = [parentView convertRect:[parentView frame] + toView:nil]; + parentRect = [[parentView window] convertRectToScreen:parentRect]; + + if (f->size_hint_flags & XNegative) + topLeft.x = NSMaxX (parentRect) - NSWidth (windowFrame) + xoff; + else + topLeft.x = NSMinX (parentRect) + xoff; - if (view != nil) + if (f->size_hint_flags & YNegative) + topLeft.y = NSMinY (parentRect) + NSHeight (windowFrame) - yoff; + else + topLeft.y = NSMaxY (parentRect) - yoff; + } + else { - if (FRAME_PARENT_FRAME (f) == NULL && screen) - { - f->left_pos = f->size_hint_flags & XNegative - ? [screen visibleFrame].size.width + f->left_pos - FRAME_PIXEL_WIDTH (f) - : f->left_pos; - /* We use visibleFrame here to take menu bar into account. - Ideally we should also adjust left/top with visibleFrame.origin. */ - - f->top_pos = f->size_hint_flags & YNegative - ? ([screen visibleFrame].size.height + f->top_pos - - FRAME_PIXEL_HEIGHT (f) - FRAME_NS_TITLEBAR_HEIGHT (f) - - FRAME_TOOLBAR_HEIGHT (f)) - : f->top_pos; -#ifdef NS_IMPL_GNUSTEP - if (f->left_pos < 100) - f->left_pos = 100; /* don't overlap menu */ -#endif - } - else if (FRAME_PARENT_FRAME (f) != NULL) - { - struct frame *parent = FRAME_PARENT_FRAME (f); + /* If there is no parent frame then just convert to screen + coordinates, UNLESS we have negative values, in which case I + think it's best to position from the bottom and right of the + current screen rather than the main screen or whole + display. */ + NSRect screenFrame = [[[view window] screen] frame]; - /* On X negative values for child frames always result in - positioning relative to the bottom right corner of the - parent frame. */ - if (f->left_pos < 0) - f->left_pos = FRAME_PIXEL_WIDTH (parent) - FRAME_PIXEL_WIDTH (f) + f->left_pos; + if (f->size_hint_flags & XNegative) + topLeft.x = NSMaxX (screenFrame) - NSWidth (windowFrame) + xoff; + else + topLeft.x = xoff; - if (f->top_pos < 0) - f->top_pos = FRAME_PIXEL_HEIGHT (parent) + FRAME_TOOLBAR_HEIGHT (parent) - - FRAME_PIXEL_HEIGHT (f) + f->top_pos; - } + if (f->size_hint_flags & YNegative) + topLeft.y = NSMinY (screenFrame) + NSHeight (windowFrame) - yoff; + else + topLeft.y = NSMaxY ([[[NSScreen screens] objectAtIndex:0] frame]) - yoff; + +#ifdef NS_IMPL_GNUSTEP + /* Don't overlap the menu. - /* Constrain the setFrameTopLeftPoint so we don't move behind the - menu bar. */ - NSPoint pt = NSMakePoint (SCREENMAXBOUND (f->left_pos - + NS_PARENT_WINDOW_LEFT_POS (f)), - SCREENMAXBOUND (NS_PARENT_WINDOW_TOP_POS (f) - - f->top_pos)); - NSTRACE_POINT ("setFrameTopLeftPoint", pt); - [[view window] setFrameTopLeftPoint: pt]; - f->size_hint_flags &= ~(XNegative|YNegative); + FIXME: Surely there's a better way than just hardcoding 100 + in here? */ + boundsRect.origin.x = 100; +#endif } + NSTRACE_POINT ("setFrameTopLeftPoint", topLeft); + [[view window] setFrameTopLeftPoint:topLeft]; + f->size_hint_flags &= ~(XNegative|YNegative); + unblock_input (); } @@ -1862,9 +1891,16 @@ Hide the window (X11 semantics) make_fixnum (FRAME_NS_TITLEBAR_HEIGHT (f)), make_fixnum (FRAME_TOOLBAR_HEIGHT (f)))); - [window setFrame: wr display: YES]; + /* Usually it seems safe to delay changing the frame size, but when a + series of actions are taken with no redisplay between them then we + can end up using old values so don't delay here. */ + change_frame_size (f, + FRAME_PIXEL_TO_TEXT_WIDTH (f, pixelwidth), + FRAME_PIXEL_TO_TEXT_HEIGHT (f, pixelheight), + 0, NO, 0, 1); + + [window setFrame:wr display:NO]; - [view updateFrameSize: NO]; unblock_input (); } @@ -1913,7 +1949,6 @@ Hide the window (X11 semantics) so some key presses (TAB) are swallowed by the system. */ [window makeFirstResponder: view]; - [view updateFrameSize: NO]; unblock_input (); } } @@ -5024,9 +5059,6 @@ in certain situations (rapid incoming events). if ([view judge]) removed = YES; } - - if (removed) - [eview updateFrameSize: NO]; } /* ========================================================================== @@ -6198,6 +6230,15 @@ - (void) setWindowClosing: (BOOL)closing - (void)dealloc { NSTRACE ("[EmacsView dealloc]"); + + /* Clear the view resize notification. */ + [[NSNotificationCenter defaultCenter] + removeObserver:self + name:NSViewFrameDidChangeNotification + object:nil]; + + CGContextRelease (drawingBuffer); + [toolbar release]; if (fs_state == FULLSCREEN_BOTH) [nonfs_window release]; @@ -7039,108 +7080,12 @@ - (BOOL)windowShouldClose: (id)sender return NO; } -- (void) updateFrameSize: (BOOL) delay -{ - NSWindow *window = [self window]; - NSRect wr = [window frame]; - int extra = 0; - int oldc = cols, oldr = rows; - int oldw = FRAME_PIXEL_WIDTH (emacsframe); - int oldh = FRAME_PIXEL_HEIGHT (emacsframe); - int neww, newh; - - NSTRACE ("[EmacsView updateFrameSize:]"); - NSTRACE_SIZE ("Original size", NSMakeSize (oldw, oldh)); - NSTRACE_RECT ("Original frame", wr); - NSTRACE_MSG ("Original columns: %d", cols); - NSTRACE_MSG ("Original rows: %d", rows); - - if (! [self isFullscreen]) - { - int toolbar_height; -#ifdef NS_IMPL_GNUSTEP - // GNUstep does not always update the tool bar height. Force it. - if (toolbar && [toolbar isVisible]) - update_frame_tool_bar (emacsframe); -#endif - - toolbar_height = FRAME_TOOLBAR_HEIGHT (emacsframe); - if (toolbar_height < 0) - toolbar_height = 35; - - extra = FRAME_NS_TITLEBAR_HEIGHT (emacsframe) - + toolbar_height; - } - - if (wait_for_tool_bar) - { - /* The toolbar height is always 0 in fullscreen and undecorated - frames, so don't wait for it to become available. */ - if (FRAME_TOOLBAR_HEIGHT (emacsframe) == 0 - && FRAME_UNDECORATED (emacsframe) == false - && ! [self isFullscreen]) - { - NSTRACE_MSG ("Waiting for toolbar"); - return; - } - wait_for_tool_bar = NO; - } - - neww = (int)wr.size.width - emacsframe->border_width; - newh = (int)wr.size.height - extra; - - NSTRACE_SIZE ("New size", NSMakeSize (neww, newh)); - NSTRACE_MSG ("FRAME_TOOLBAR_HEIGHT: %d", FRAME_TOOLBAR_HEIGHT (emacsframe)); - NSTRACE_MSG ("FRAME_NS_TITLEBAR_HEIGHT: %d", FRAME_NS_TITLEBAR_HEIGHT (emacsframe)); - - cols = FRAME_PIXEL_WIDTH_TO_TEXT_COLS (emacsframe, neww); - rows = FRAME_PIXEL_HEIGHT_TO_TEXT_LINES (emacsframe, newh); - - if (cols < MINWIDTH) - cols = MINWIDTH; - - if (rows < MINHEIGHT) - rows = MINHEIGHT; - - NSTRACE_MSG ("New columns: %d", cols); - NSTRACE_MSG ("New rows: %d", rows); - - if (oldr != rows || oldc != cols || neww != oldw || newh != oldh) - { - NSView *view = FRAME_NS_VIEW (emacsframe); - - change_frame_size (emacsframe, - FRAME_PIXEL_TO_TEXT_WIDTH (emacsframe, neww), - FRAME_PIXEL_TO_TEXT_HEIGHT (emacsframe, newh), - 0, delay, 0, 1); - SET_FRAME_GARBAGED (emacsframe); - cancel_mouse_face (emacsframe); - - /* The next two lines set the frame to the same size as we've - already set above. We need to do this when we switch back - from non-native fullscreen, in other circumstances it appears - to be a noop. (bug#28872) */ - wr = NSMakeRect (0, 0, neww, newh); - [view setFrame: wr]; -#ifdef NS_DRAW_TO_BUFFER - [self createDrawingBuffer]; -#endif - - // To do: consider using [NSNotificationCenter postNotificationName:]. - [self windowDidMove: // Update top/left. - [NSNotification notificationWithName:NSWindowDidMoveNotification - object:[view window]]]; - } - else - { - NSTRACE_MSG ("No change"); - } -} - (NSSize)windowWillResize: (NSWindow *)sender toSize: (NSSize)frameSize /* Normalize frame to gridded text size. */ { int extra = 0; + int cols, rows; NSTRACE ("[EmacsView windowWillResize:toSize: " NSTRACE_FMT_SIZE "]", NSTRACE_ARG_SIZE (frameSize)); @@ -7277,11 +7222,6 @@ - (void)windowDidResize: (NSNotification *)notification sz = [self windowWillResize: theWindow toSize: sz]; #endif /* NS_IMPL_GNUSTEP */ - if (cols > 0 && rows > 0) - { - [self updateFrameSize: YES]; - } - ns_send_appdefined (-1); } @@ -7302,6 +7242,50 @@ - (void)viewDidEndLiveResize #endif /* NS_IMPL_COCOA */ +- (void)viewDidResize:(NSNotification *)notification +{ + NSRect frame = [self frame]; + int oldw, oldh, neww, newh; + + if (! FRAME_LIVE_P (emacsframe)) + return; + +#ifdef NS_DRAW_TO_BUFFER + CGFloat scale = [[self window] backingScaleFactor]; + oldw = (CGFloat)CGBitmapContextGetWidth (drawingBuffer) / scale; + oldh = (CGFloat)CGBitmapContextGetHeight (drawingBuffer) / scale; +#else + oldw = FRAME_PIXEL_WIDTH (emacsframe); + oldh = FRAME_PIXEL_HEIGHT (emacsframe); +#endif + neww = (int)NSWidth (frame); + newh = (int)NSHeight (frame); + + NSTRACE ("[EmacsView viewDidResize]"); + + /* Don't want to do anything when the view size hasn't changed. */ + if ((oldh == newh && oldw == neww)) + { + NSTRACE_MSG ("No change"); + return; + } + + NSTRACE_SIZE ("Original size", NSMakeSize (oldw, oldh)); + NSTRACE_SIZE ("New size", NSMakeSize (neww, newh)); + + change_frame_size (emacsframe, + FRAME_PIXEL_TO_TEXT_WIDTH (emacsframe, neww), + FRAME_PIXEL_TO_TEXT_HEIGHT (emacsframe, newh), + 0, YES, 0, 1); + +#ifdef NS_DRAW_TO_BUFFER + [self createDrawingBuffer]; +#endif + SET_FRAME_GARBAGED (emacsframe); + cancel_mouse_face (emacsframe); +} + + - (void)windowDidBecomeKey: (NSNotification *)notification /* cf. x_detect_focus_change(), x_focus_changed(), x_new_focus_frame() */ { @@ -7463,10 +7447,6 @@ - (instancetype) initFrameFromEmacs: (struct frame *)f maximizing_resize = NO; #endif -#ifdef NS_DRAW_TO_BUFFER - [self createDrawingBuffer]; -#endif - win = [[EmacsWindow alloc] initWithContentRect: r styleMask: (FRAME_UNDECORATED (f) @@ -7572,6 +7552,17 @@ - (instancetype) initFrameFromEmacs: (struct frame *)f [NSApp registerServicesMenuSendTypes: ns_send_types returnTypes: [NSArray array]]; +#ifdef NS_DRAW_TO_BUFFER + [self createDrawingBuffer]; +#endif + + /* Set up view resize notifications. */ + [self setPostsFrameChangedNotifications:YES]; + [[NSNotificationCenter defaultCenter] + addObserver:self + selector:@selector (viewDidResize:) + name:NSViewFrameDidChangeNotification object:nil]; + /* macOS Sierra automatically enables tabbed windows. We can't allow this to be enabled until it's available on a Free system. Currently it only happens by accident and is buggy anyway. */ @@ -7601,9 +7592,8 @@ - (void)windowDidMove: sender return; if (screen != nil) { - emacsframe->left_pos = r.origin.x - NS_PARENT_WINDOW_LEFT_POS (emacsframe); - emacsframe->top_pos = - NS_PARENT_WINDOW_TOP_POS (emacsframe) - (r.origin.y + r.size.height); + emacsframe->left_pos = NSMinX (r) - NS_PARENT_WINDOW_LEFT_POS (emacsframe); + emacsframe->top_pos = NS_PARENT_WINDOW_TOP_POS (emacsframe) - NSMaxY (r); // FIXME: after event part below didExitFullScreen is not received // if (emacs_event) @@ -7902,7 +7892,6 @@ - (void)windowDidExitFullScreen /* provided for direct calls */ { [toolbar setVisible:YES]; update_frame_tool_bar (emacsframe); - [self updateFrameSize:YES]; [[self window] display]; } else @@ -8115,11 +8104,11 @@ - (void)toggleFullScreen: (id)sender // send notifications. [self windowWillExitFullScreen]; - [fw setFrame: [w frame] display:YES animate:ns_use_fullscreen_animation]; + [fw setFrame:[[w contentView] frame] + display:YES animate:ns_use_fullscreen_animation]; [fw close]; [w makeKeyAndOrderFront:NSApp]; [self windowDidExitFullScreen]; - [self updateFrameSize:YES]; } } @@ -8628,13 +8617,6 @@ - (instancetype)setMiniwindowImage: (BOOL) setMini } -- (void) setRows: (int) r andColumns: (int) c -{ - NSTRACE ("[EmacsView setRows:%d andColumns:%d]", r, c); - rows = r; - cols = c; -} - - (int) fullscreenState { return fs_state; -- 2.26.0 -- Alan Third From unknown Sun Jun 22 22:45:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#40200: [PATCH v4] Fix NS frame resizing issues (bug#40200, bug#28872) Resent-From: Andrii Kolomoiets Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 07 Apr 2020 08:15:03 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 40200 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Alan Third Cc: 40200@debbugs.gnu.org, aaronjensen@gmail.com, 28872@debbugs.gnu.org Received: via spool by 40200-submit@debbugs.gnu.org id=B40200.158624725322672 (code B ref 40200); Tue, 07 Apr 2020 08:15:03 +0000 Received: (at 40200) by debbugs.gnu.org; 7 Apr 2020 08:14:13 +0000 Received: from localhost ([127.0.0.1]:49517 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1jLjN5-0005tS-0G for submit@debbugs.gnu.org; Tue, 07 Apr 2020 04:14:13 -0400 Received: from mail-lf1-f65.google.com ([209.85.167.65]:34753) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1jLjN3-0005sq-37; Tue, 07 Apr 2020 04:14:09 -0400 Received: by mail-lf1-f65.google.com with SMTP id x23so1666944lfq.1; Tue, 07 Apr 2020 01:14:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:references:date:in-reply-to:message-id :user-agent:mime-version; bh=CeVkPNUpnwidKXNkOU1EDoxAZVB4FajTe/4zFsIBzog=; b=TZuIGSYRbtuSUemmYYL5Mjkb74UEszXExm0mBAynfmfxRY+whnxgTHfZL+WnrTtpGC GQwADgBO4Zy+Kw0wvREJHYgwpoAeZyARkklhlQFox/KBXhp8z48gSQUTiLoE27UVENxD vhB/iYVULn0d0le3UptUG4pSxTvWpsQ80yACTxk8rBR6E95dN7TLHqzAYkLjGAP610Wn igZkTiVHPQN5uHe4sAbzg+vrVocfhsgShpseCsO4ptWZtgQrK+kcAXD714o62oGSVO3O HYof4iFLsHaXsGYcfsvqn0gF8yWEs+oxBTGs5Ju++n+XZkxfmuM+AKOSKbUFzJ8dfPRY eO5A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:references:date:in-reply-to :message-id:user-agent:mime-version; bh=CeVkPNUpnwidKXNkOU1EDoxAZVB4FajTe/4zFsIBzog=; b=gGWEJdJ4OelH/T9f+o1DHprL9Zt3mpklJc52iF/2gFGEcYoESPAtGlZiKDpAyhp39m Vwiq0Zt5LJyM3wxsZs4QU8NU6znC2AKrdPiyDZ93H7RvvoOXbAovIYC30dE881n7X5xm XcAFLvLxRYgWFkSshXE+EIeurr6FBSlImKmocq7VwCrni53M3fzdo1VnB6V7E21PkHN+ xA3IuNZYKjjLuxjN0Zm6oJsIl64p7whg3FhmqgJqHpzblR2aXlqCDSG/dJAKGw5EzD7q SlTRiuak4Cp+WlnZtAD1TvZDTbvVAvZodNM4Wkc3XJ0qQc8QUYe7ZBSJ6ItGgoF0pQFp wi7Q== X-Gm-Message-State: AGi0PuZaVhDJWi5pltpKUB1XAlutiJmtJ3iu3PF1VJkT8aSA4JmWIrSB +d0Y9nW7IND1kN7IuTxQ5NA= X-Google-Smtp-Source: APiQypISYPLutPpmGB5FF3XzRIw0n+mMj0AOThV+toaYrGs5hPCrGlV/oaVCr6oOvCVJXxS3st2Gag== X-Received: by 2002:a05:6512:3049:: with SMTP id b9mr793697lfb.176.1586247242951; Tue, 07 Apr 2020 01:14:02 -0700 (PDT) Received: from muffinmac.local ([91.206.110.145]) by smtp.gmail.com with ESMTPSA id u7sm5507803lfu.3.2020.04.07.01.14.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 07 Apr 2020 01:14:02 -0700 (PDT) From: Andrii Kolomoiets References: <20200406184411.GA48827@breton.holly.idiocy.org> Date: Tue, 07 Apr 2020 11:14:00 +0300 In-Reply-To: <20200406184411.GA48827@breton.holly.idiocy.org> (Alan Third's message of "Mon, 6 Apr 2020 19:44:11 +0100") Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (darwin) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: 0.0 (/) 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.0 (-) Alan Third writes: > Out of interest, do you have a test suite, or are you just coming up > with these tests on the fly? I'm using these minor modes which utilize child frame to display minibuffer and completions buffer: https://github.com/muffinmad/emacs-mini-frame https://github.com/muffinmad/emacs-completions-frame Single child frame moves across all frames so child frame positioning issues are quickly comes in sight for me. And then the fun part: narrow down the code so the issue can be reproduced in `emacs -Q`. The patch v4 works good so far, thank you! From unknown Sun Jun 22 22:45:42 2025 MIME-Version: 1.0 X-Mailer: MIME-tools 5.505 (Entity 5.505) X-Loop: help-debbugs@gnu.org From: help-debbugs@gnu.org (GNU bug Tracking System) To: Andrii Kolomoiets Subject: bug#40200: closed (Re: [PATCH v4] Fix NS frame resizing issues (bug#40200, bug#28872)) Message-ID: References: <20200416182410.GC52374@breton.holly.idiocy.org> X-Gnu-PR-Message: they-closed 40200 X-Gnu-PR-Package: emacs Reply-To: 40200@debbugs.gnu.org Date: Thu, 16 Apr 2020 18:25:03 +0000 Content-Type: multipart/mixed; boundary="----------=_1587061503-4244-1" This is a multi-part message in MIME format... ------------=_1587061503-4244-1 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Your bug report #40200: 28.0.50; NS: text drawing glitches in maximized frame with frame-in= hibit-implied-resize which was filed against the emacs package, has been closed. The explanation is attached below, along with your original report. If you require more details, please reply to 40200@debbugs.gnu.org. --=20 40200: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=3D40200 GNU Bug Tracking System Contact help-debbugs@gnu.org with problems ------------=_1587061503-4244-1 Content-Type: message/rfc822 Content-Disposition: inline Content-Transfer-Encoding: 7bit Received: (at 40200-done) by debbugs.gnu.org; 16 Apr 2020 18:24:19 +0000 Received: from localhost ([127.0.0.1]:39383 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1jP9BT-00014n-Mr for submit@debbugs.gnu.org; Thu, 16 Apr 2020 14:24:19 -0400 Received: from idiocy.org ([217.169.17.33]:61972 helo=breton.holly.idiocy.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1jP9BR-00014R-L1; Thu, 16 Apr 2020 14:24:17 -0400 Received: by breton.holly.idiocy.org (Postfix, from userid 501) id 1667B2021FFF81; Thu, 16 Apr 2020 19:24:10 +0100 (BST) Date: Thu, 16 Apr 2020 19:24:10 +0100 From: Alan Third To: Andrii Kolomoiets Subject: Re: [PATCH v4] Fix NS frame resizing issues (bug#40200, bug#28872) Message-ID: <20200416182410.GC52374@breton.holly.idiocy.org> Mail-Followup-To: Alan Third , Andrii Kolomoiets , 40200-done@debbugs.gnu.org, 28872-done@debbugs.gnu.org, aaronjensen@gmail.com References: <20200406184411.GA48827@breton.holly.idiocy.org> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 40200-done Cc: 40200-done@debbugs.gnu.org, aaronjensen@gmail.com, 28872-done@debbugs.gnu.org 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.0 (-) On Tue, Apr 07, 2020 at 11:14:00AM +0300, Andrii Kolomoiets wrote: > The patch v4 works good so far, thank you! Since I’ve not heard anything bad for over a week now I’ve pushed the change to the master branch. Thanks for your help. -- Alan Third ------------=_1587061503-4244-1 Content-Type: message/rfc822 Content-Disposition: inline Content-Transfer-Encoding: 7bit Received: (at submit) by debbugs.gnu.org; 23 Mar 2020 18:13:57 +0000 Received: from localhost ([127.0.0.1]:53525 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1jGRaH-0002nT-CM for submit@debbugs.gnu.org; Mon, 23 Mar 2020 14:13:57 -0400 Received: from lists.gnu.org ([209.51.188.17]:34705) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1jGRaE-0002nI-SH for submit@debbugs.gnu.org; Mon, 23 Mar 2020 14:13:55 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:59487) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jGRaD-0002Wo-PQ for bug-gnu-emacs@gnu.org; Mon, 23 Mar 2020 14:13:54 -0400 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: **** X-Spam-Status: No, score=4.1 required=5.0 tests=BAYES_50,FREEMAIL_FROM, RCVD_IN_SBL_CSS,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 1jGRaC-0005xJ-Lj for bug-gnu-emacs@gnu.org; Mon, 23 Mar 2020 14:13:53 -0400 Received: from mail-lf1-x136.google.com ([2a00:1450:4864:20::136]:42796) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1jGRaC-0005x0-FY for bug-gnu-emacs@gnu.org; Mon, 23 Mar 2020 14:13:52 -0400 Received: by mail-lf1-x136.google.com with SMTP id t21so11006537lfe.9 for ; Mon, 23 Mar 2020 11:13:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:subject:date:message-id:mime-version; bh=l6zludlVzukEQjC1bA4ivuhfbG4Yxu9BPAcPrPu8vMQ=; b=rSPLZO514rxvTdxW0Zrlbtvt8tUfsDMMdAJDK5Bjr5jIon6iJRexT39Q0rJr12imKc MwuAtlM6dsqCr4dr+D3yTskOzUJpwPH3zbrJbAsiIw2xUKyKF0vOgLMmDVlMbvNBF/o2 u7kKWHzHA71iVhJhgVDJfYvQ1F0cvnBTSp3zm9xlC29V9BLEnlfNoBa3O85pMfehJXaP /RBfRLWzMFgYd2c5kSRsMK3rrKX/pKPvoIFzSkifXO+syUndBrIaPzpFX6Zi9LpcWZhb VHi9ZjwmuDIYbhJ+PlGBeagnH8E+Bos5aHRQv7b1rFe9FRY7lvY7TVhjM/eA2BElmpoI fcZw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:mime-version; bh=l6zludlVzukEQjC1bA4ivuhfbG4Yxu9BPAcPrPu8vMQ=; b=i6/E10zXop1JFQ+Yd07Y+lpY82x86ua5smcha5v/+MdT/P7MKt2pasPCgvbPMRDwqt pZMgUnHLEcwMOVFwA7ugU4jCpViqzT1P39I8qndpLDDwsmRuwAob5DmO3l+3EMIU2OfD 6xKlV9nL7e56lZmh3fuksVSxEm4TcMO3w4xDwQ4yRsoG9yx3U0/phyuSBtVFdNCNs9DV p6oR8O51wdszv8Dnf3U40ltGgY7REbhePV+Ne6OQ+nNrjPzIxuGl/WjDQpc7ySjJrou8 fosK/YPWe4Z+BDFXRVDWMbDnIU5m9cGZQfDadlOc3RipXsqeEZrm3+72U8ktzdZTf0IJ B93g== X-Gm-Message-State: ANhLgQ2pOdDtwcE8qeuHT7aps8tKtb/EoF//XtPxAVvqcg6BokzV6EXu gKMkmBaa7zZqxQXUVt1Dkhk7wmdj X-Google-Smtp-Source: ADFU+vs8mtOUNFvc3GgrkpJG3e9NDTm+c3zWnoLIb1LyaqaAVjcFzOqXe2U4kVJSM4lp/4xKdaVbZw== X-Received: by 2002:a05:6512:2e4:: with SMTP id m4mr8570272lfq.202.1584987230409; Mon, 23 Mar 2020 11:13:50 -0700 (PDT) Received: from muffinmac.local ([91.206.110.153]) by smtp.gmail.com with ESMTPSA id c2sm8729342lja.84.2020.03.23.11.13.48 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 23 Mar 2020 11:13:49 -0700 (PDT) From: Andrii Kolomoiets To: bug-gnu-emacs@gnu.org Subject: 28.0.50; NS: text drawing glitches in maximized frame with frame-inhibit-implied-resize Date: Mon, 23 Mar 2020 20:13:19 +0200 Message-ID: MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:4864:20::136 X-Spam-Score: 3.8 (+++) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: 1. emacs -Q 2. (setq frame-inhibit-implied-resize t) 3. M-x toggle-frame-maximized 4. C-x b RET (to open *Messages* buffer) 5. M-x tool-bar-mode After some up-down mouse scroll, buffer text is drawn incorrectly. Content analysis details: (3.8 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- 0.0 URIBL_BLOCKED ADMINISTRATOR NOTICE: The query to URIBL was blocked. See http://wiki.apache.org/spamassassin/DnsBlocklists#dnsbl-block for more information. [URIs: imgur.com] 3.6 RCVD_IN_SBL_CSS RBL: Received via a relay in Spamhaus SBL-CSS [91.206.110.153 listed in zen.spamhaus.org] 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider (andreyk.mad[at]gmail.com) 1.0 SPF_SOFTFAIL SPF: sender does not match SPF record (softfail) -0.7 RCVD_IN_DNSWL_LOW RBL: Sender listed at https://www.dnswl.org/, low trust [209.51.188.17 listed in list.dnswl.org] 0.0 SPOOFED_FREEMAIL No description available. X-Debbugs-Envelope-To: submit 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.8 (++) X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: 1. emacs -Q 2. (setq frame-inhibit-implied-resize t) 3. M-x toggle-frame-maximized 4. C-x b RET (to open *Messages* buffer) 5. M-x tool-bar-mode After some up-down mouse scroll, buffer text is drawn incorrectly. Content analysis details: (2.8 points, 10.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- 0.0 URIBL_BLOCKED ADMINISTRATOR NOTICE: The query to URIBL was blocked. See http://wiki.apache.org/spamassassin/DnsBlocklists#dnsbl-block for more information. [URIs: imgur.com] 3.6 RCVD_IN_SBL_CSS RBL: Received via a relay in Spamhaus SBL-CSS [91.206.110.153 listed in zen.spamhaus.org] -0.7 RCVD_IN_DNSWL_LOW RBL: Sender listed at https://www.dnswl.org/, low trust [209.51.188.17 listed in list.dnswl.org] 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider (andreyk.mad[at]gmail.com) 1.0 SPF_SOFTFAIL SPF: sender does not match SPF record (softfail) -1.0 MAILING_LIST_MULTI Multiple indicators imply a widely-seen list manager 1. emacs -Q 2. (setq frame-inhibit-implied-resize t) 3. M-x toggle-frame-maximized 4. C-x b RET (to open *Messages* buffer) 5. M-x tool-bar-mode After some up-down mouse scroll, buffer text is drawn incorrectly. Not sure if image attaches are allowed here, so screenshot is on imgur: https://imgur.com/a/QSSNePE In GNU Emacs 28.0.50 (build 2, x86_64-apple-darwin19.3.0, NS appkit-1894.30 Version 10.15.3 (Build 19D76)) of 2020-03-18 built on muffinmac.local Windowing system distributor 'Apple', version 10.3.1894 System Description: Mac OS X 10.15.3 ------------=_1587061503-4244-1-- From unknown Sun Jun 22 22:45:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#40200: bug#28872: [PATCH v4] Fix NS frame resizing issues (bug#40200, bug#28872) Resent-From: HaiJun Zhang Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sat, 18 Apr 2020 01:54:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 40200 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Andrii Kolomoiets , Alan Third Cc: 40200-done@debbugs.gnu.org, aaronjensen@gmail.com, 28872-done@debbugs.gnu.org Received: via spool by 40200-done@debbugs.gnu.org id=D40200.15871747932871 (code D ref 40200); Sat, 18 Apr 2020 01:54:02 +0000 Received: (at 40200-done) by debbugs.gnu.org; 18 Apr 2020 01:53:13 +0000 Received: from localhost ([127.0.0.1]:41891 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1jPcfR-0000kE-Lw for submit@debbugs.gnu.org; Fri, 17 Apr 2020 21:53:13 -0400 Received: from mail-oln040092255087.outbound.protection.outlook.com ([40.92.255.87]:21408 helo=APC01-HK2-obe.outbound.protection.outlook.com) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1jPcfO-0000jv-AV; Fri, 17 Apr 2020 21:53:12 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=WyMwqf/lQcdLdrs/4h5MbztU9FpBKiOb0vMeNUC+hNAXQ2pCdhP7m8sUJWWY/sWFAckp0Ptu/M05t6K5tI+RLkEr0cDjZVbqkxFGUXIpiPavnIAUscxrBAZWECOtxzoYh5MTij2XCZnAxMlEJD8DfyBS+CFoVfk7gG9A0KbzgORMGk9o7P4EYhXSq5IbYzFGjwLNuJwot81FNUQE3jR1rKm3dFTkCRjD6iJ56FOxLhCxd5b5GUgfvXSGLbJ/fcwpeSu8UFr+gXDF6ziuHbQ4qoDCJ3keGSCf634WBXEWZnzBTpEbKbnhjl/JsRkVc8zdkbIJBoRAu75skLVlpsLEPg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=qy0OKn02KUClMy/AQFS2z5b03HohOwzRuWJC6Jc4K+I=; b=PX7P+g4eVDfkBG0CTJHJGxNaUdPgHlU8nL5q9RQ049MBAi3Z1wNd+p8sI5DvcCDNlY7SndwWphtg30MHhWl6YHGlLNzmdVbUU00k6ypSbwHb3siOi+5qdWJh+dnJBaHYa6uf7n5fSLpCaust5EHN3/MLa5PyAJ5Xw8JAe2gFtKgazz9a3ySLewcMLXz2PMEcWr2EReJNRdnt2ZTgvuc3yil2yllrfZIFav8kODuqIla3oTom0g0WbfwfI/qQokdvCfP7MdCZRMN/Fii57nvtvq5FBfKPFS+I0rbdyVDX3GU81uyHZ1J8HYabfBIW84U+EUIJtH+rKGWmvPI30D1gHA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=outlook.com; dmarc=pass action=none header.from=outlook.com; dkim=pass header.d=outlook.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=outlook.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=qy0OKn02KUClMy/AQFS2z5b03HohOwzRuWJC6Jc4K+I=; b=h+znllGWrks/t7drpR4cx61XX+sjmgV0fRxwz0O6f6ypaVhdIHJ+bhYrKN3Jn4uC0jQfTh8tcaCzP3613S6r/aN0VmvU4b7LXeNnH/C0QZXp3p1j7aXOg77ZyiQnR5nxdIc1Hce7T6qg0UczpIeoqLcnGA0ArS4Pkxsdc1jkPVKrHGWWnK9y6lS7BVgvEc7bzl4qSJWNx+T9ySn4UpD2Oe30q9SNMzgWtst5SYUFoJEKn9ewvzFAme1R/usuk1GWwYWBr1tp+Tzax2YTMa6flK9scG7jWbIiDorKW7d9Pmwl4uVtd6c0sAL8bRHb//XP2IzL4UKULW1/HM6HaaQq7w== Received: from PU1APC01FT008.eop-APC01.prod.protection.outlook.com (2a01:111:e400:7ebe::47) by PU1APC01HT114.eop-APC01.prod.protection.outlook.com (2a01:111:e400:7ebe::385) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2921.25; Sat, 18 Apr 2020 01:53:01 +0000 Received: from PS1PR03MB3606.apcprd03.prod.outlook.com (2a01:111:e400:7ebe::46) by PU1APC01FT008.mail.protection.outlook.com (2a01:111:e400:7ebe::66) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2921.25 via Frontend Transport; Sat, 18 Apr 2020 01:53:01 +0000 X-IncomingTopHeaderMarker: OriginalChecksum:0C96891E9C572E9967A3BEEF240740FD03AB88CC3AA0C6722FDC35712665ECDB; UpperCasedChecksum:2898893A293668E14E8F8B973AA0C5764B8EFC0188C3043FD4287F8833E3293C; SizeAsReceived:8988; Count:49 Received: from PS1PR03MB3606.apcprd03.prod.outlook.com ([fe80::85cb:c430:1173:7716]) by PS1PR03MB3606.apcprd03.prod.outlook.com ([fe80::85cb:c430:1173:7716%5]) with mapi id 15.20.2921.027; Sat, 18 Apr 2020 01:53:01 +0000 Date: Sat, 18 Apr 2020 09:52:47 +0800 From: HaiJun Zhang Message-ID: In-Reply-To: <20200416182410.GC52374@breton.holly.idiocy.org> References: <20200406184411.GA48827@breton.holly.idiocy.org> <20200416182410.GC52374@breton.holly.idiocy.org> X-Readdle-Message-ID: 78983ac2-28ed-4f48-9d87-b73156de690e@Spark Content-Type: multipart/mixed; boundary="5e9a5d74_613efdc5_336d" X-ClientProxiedBy: HK2PR04CA0045.apcprd04.prod.outlook.com (2603:1096:202:14::13) To PS1PR03MB3606.apcprd03.prod.outlook.com (2603:1096:803:4e::17) X-Microsoft-Original-Message-ID: <78983ac2-28ed-4f48-9d87-b73156de690e@Spark> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from [192.168.1.150] (1.193.169.149) by HK2PR04CA0045.apcprd04.prod.outlook.com (2603:1096:202:14::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2921.25 via Frontend Transport; Sat, 18 Apr 2020 01:52:56 +0000 X-Readdle-Message-ID: 78983ac2-28ed-4f48-9d87-b73156de690e@Spark X-Microsoft-Original-Message-ID: <78983ac2-28ed-4f48-9d87-b73156de690e@Spark> X-TMN: [kF/KPCeAUCaXjJarIDQDvAu1Tt1H/uW8] X-MS-PublicTrafficType: Email X-IncomingHeaderCount: 49 X-EOPAttributedMessage: 0 X-MS-Office365-Filtering-Correlation-Id: ce184912-136a-421d-bcb1-08d7e33b383c X-MS-TrafficTypeDiagnostic: PU1APC01HT114: X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: o3vO4bWef/xp2ZpUg761CaqJkS3MfiJAxnvRrYvv7AEJlT/1bhEsvtIkPAUzX0r1wH+CvIDgEkhk9EQaFkeTkzMsliH6mFhoid5hIb80PjlWWQial6LMH0FZeWf2vSodZTYcp2h0CJuWWvfFkIRRO9t0mOq+esvAG+xQx9c6n2qxqUBYqOCTa8axg/6ewsrj4oZslplMM4Q+S4b74ZkEVA== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:0; SRV:; IPV:NLI; SFV:NSPM; H:PS1PR03MB3606.apcprd03.prod.outlook.com; PTR:; CAT:NONE; SFTY:; SFS:; DIR:OUT; SFP:1901; X-MS-Exchange-AntiSpam-MessageData: Xn62T50SVinjja1oSCWk2RqL6I+l3k2eKGv5QVjivDQ8L/RFO8NzDYWr+0G+yDaevs187EJMYFaYsl+m/rZJBb5TVnYjUf2YfQ59kReHJEBHKcTEUTcNqa+AlvqMNEz/TDLEYbWcSTCdPN380hiZDw== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: ce184912-136a-421d-bcb1-08d7e33b383c X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 Apr 2020 01:53:01.2577 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-FromEntityHeader: Internet X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: PU1APC01HT114 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" --5e9a5d74_613efdc5_336d Content-Type: multipart/alternative; boundary="5e9a5d74_51d9c564_336d" --5e9a5d74_51d9c564_336d Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Content-Disposition: inline There is problem here. After emacs startups, there is no mini buffer wind= ow and there is a blank rectangle at the right edge of the frame. It is with my profile and it can=E2=80=99t be reproduced with emacs -Q. No problem before the commit. =E5=9C=A8 2020=E5=B9=B44=E6=9C=8817=E6=97=A5 +0800 AM2:25=EF=BC=8CAlan Th= ird =EF=BC=8C=E5=86=99=E9=81=93=EF=BC=9A > On Tue, Apr 07, 2020 at 11:14:00AM +0300, Andrii Kolomoiets wrote: > > The patch v4 works good so far, thank you=21 > > Since I=E2=80=99ve not heard anything bad for over a week now I=E2=80=99= ve pushed the > change to the master branch. > > Thanks for your help. > -- > Alan Third > > > --5e9a5d74_51d9c564_336d Content-Type: text/html; charset="utf-8" Content-Transfer-Encoding: quoted-printable Content-Disposition: inline
There is problem here. After emacs startups, there is no = mini buffer window and there is a blank rectangle at the right edge of the = frame.

It is with my profile and it can=E2=80=99t be reproduced = with emacs -Q.

No problem before the commit.

=E5=9C=A8 2020=E5=B9=B44=E6=9C=8817=E6=97= =A5 +0800 AM2:25=EF=BC=8CAlan Third <alan@idiocy.org>=EF=BC=8C=E5= =86=99=E9=81=93=EF=BC=9A
On Tue, Apr 07, 2020 a= t 11:14:00AM +0300, Andrii Kolomoiets wrote:
The patch v4 works goo= d so far, thank you!

Since I=E2=80=99ve not heard anything bad for over a week now I=E2=80=99ve = pushed the
change to the master branch.

Thanks for your help.
--
Alan Third



--5e9a5d74_51d9c564_336d-- --5e9a5d74_613efdc5_336d Content-Type: image/png Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="=?utf-8?Q?WX20200417-153341=402x.png?=" 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 f2fPX6afPwn1L5+kffIiR12/XsuTVTySJFxrO8RppP7xGJFUyV8yz5/p8ZN/d39+e3qQtW0otj0N yo7F0ILZse6NbVO3XdORgzv6yjl65LZrPcGxBr3+t1/o+jvdLqhVuv/66/Xo65siPbJyNW7K+br9 kXt0pV9vMPNMq4fvmaebrpuhSy78vM647Cb9ddlap5LhHl3DdOq0xPj923r1g+rogfTt7/2VE12d 1kysa2fMr72Mpxxvu9yGp6oXf6erZicEx8ym8n2HKMsT0XfT+73GJUvrwyHT4/fuxHy8eBejFTRv +riKhTd0/fmXysrdO2jsXTSVqnDvlonWJX4mvr3aD6dkk7ulVu8t9w+O2Zzx5SUrK/l68rvOyY1S bcEPv1Tto71ttB/aT3ttJNV22g/tJ1X7aG8b7Yf2014bSbWd9kP7SdU+2ttG+6H9tNdGUm2n/dB+ UrWP9rbtLe0n3VYQakx4ZIoB2vTkb7XQM2bfsEMnqCB6/WyHNm52FXOU5c628+q9/pYdiIbY2uTK 3L9NkR2KkIXKp2uKO2SkKeq1v/9MrKdQAABAAElEQVTFp8Dkq3Z7/X2qVmeCNVF/82CwfJ807qqO Xr9087mvvu3unfdVG20/ISWOtOnmta+++SOxJm+6ZPNd7V9WMcEJDlu/hk1v+Q9l6amMrb/3GLzz nmRJZ530nkye2aR5vBsyP/6O7tG7d64/d4V/+9EbzxsiscNP/OnIbOndd7dGC6h55ynd9pNb9JSJ EJef/8nI+lzl1K/Q7d+5RI9Mma5vX36uxhTZXwn1+vD1dkLJtoT1y7TgJhNsm7dIp4/MdcoM+Xw8 BZpjBzzi2HNVPm+ZCbV1YjJvYvtGtmZpu2XH9r1++fO+Oz1lyihTXiRd9IPON6m5A8W+wWzaVMGe +LyZHX+s/knfno5J2/p3/fkv19d+9ENNzIvVqeWdB3T2jHviD9iztOapl1UzfaJ5yKmZCofLt3NY +bEaWxgrszHVbxhP2cwigAACCCCAAAIIIIAAAggggAACCOy9ArGrRbE5v6Nd/8SLqjKjdblP3ArV rtSP5jwRl/SEw8ZGr/81r31Zj7nP/lrzf1r0t/4aZZ66Ygc4igZhzLy9XtgYytdhx01Wiblkapff efGfem9nUDvfeiGu/O5Y8FzWNPVKfw9Tzzku2ltOze/oscVpXOdNv/i0U3a2/n47OH9qefT8NWxc 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 fWbT2iveU5IcS4aX/f6XJMf2mbvvQgkQIECAAAECBAgQIECAAAECBAgQmE+B6X3N5q30Z8dLnjk1 uGI6nuXmr/XFdXWM8jZepaS8Z02Vl67r//rfxrUD81ZhBRFYEIFnn9sTl154SvzpH/XHDzZ8I77y 1Q1x5w82xKbBrjjzTW+J//3234/Vh001zZ13fz6unuP72xbkQpyk+QInr42L154QsWv/OOGMV8Y5 zzmp5Jzb4osfvqrks0UCBAgQIECAAAECBAgQIECAAAECBAgQmK3A1K/wsz1i1vvdGZ+78bOx+aj9 Jo7YFl+9opGBwO6Mz9/0udjcvXysvEJhW3ztihtnXRs7EmgVgcLO3ZH2qFx20FHxnLPPH/tTWrfx 3pbFNffHVW+9svjBfB8TePZ/64lL3nrKtKtOY2TbDz8Rl0mcTrOxggABAgQIECBAgAABAgQIECBA gAABArMRaGKCLOKmK98xr8N/3XjFJSElNpvbap+WFsjtl/SnzE1WsVAolAynGJPbdm7+frzv3PPi prp7XU6ewsIiFShPlk5dxK57vx4XvlbidErEEgECBAgQIECAAAECBAgQIECAAAECBOYm0NQE2dyq Ym8C+4bAxqv+IN7yq7Pj5S9+UZz29JOi8+CDY3nSMbK9vT1JlI3GI7/+WXzr89fFpdfcum+AuMoZ BR742b/GPfceELmRkUgTqXse64/vfeXjccWNG2Y8xgYCBAgQIECAAAECBAgQIECAAAECBAgQqC0g QVbbyB4E5llgIDasv3bszzwXrLglJjC4/rJYu36JXZTLIUCAAAECBAgQIECAAAECBAgQIECAQAsI tLVAHVSBAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAwIIJSJAtGLUTESBAgAABAgQIECBAgAAB AgQIECBAgAABAgQItIKABFkr3AV1IECAAAECBAgQIECAAAECBAgQIECAAAECBAgQWDABCbIFo3Yi AgQIECBAgAABAgQIECBAgAABAgQIECBAgACBVhCQIGuFu6AOBAgQIECAAAECBAgQIECAAAECBAgQ IECAAAECCyYgQbZg1E5EgAABAgQIECBAgAABAgQIECBAgAABAgQIECDQCgISZK1wF9SBAAECBAgQ IECAAAECBAgQIECAAAECBAgQIEBgwQSqJshykWuoIo7n10gAiR/xI37qF9B+tJ/6oyeSb39+/OoX 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 Pxu/Pmq/sSoUCtvia1fcWKM61TZvjM+VlBexLb76vpuqHWAbAQIECBAgQIAAAQIECBAgQIAAAQIE CBAgQIAAgWkCTUyQRdx05TtiPlNYNyblNZJim3b1VhAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIE COxzAk19B9k+p+mCCRAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEWl5Agqzlb5EKEiBAgAABAgQI ECBAgAABAgQIECBAgAABAgQIzKeABNl8aiqLAAECBAgQIECAAAECBAgQIECAAAECBAgQIECg5QWq JshykWvoAhzPr5EAEj/iR/zUL6D9aD/1R08k3/78+NUvIH60n/qjx/NH+9F+tJ/6BbQf7af+6PH9 o/1oP9pP/QLaj/ZTf/T4/mmF9lM1QVaIQiP3Nzna8Y0A8hM/4qd+Ae1H+6k/esL3l+/vRsJH/Igf 8dOAgO9v398NhI/nr+dvI+EjfsSP+GlAwPe37+8Gwsfz1/O3kfARP+Kn4fipmiBrqHQHEyBAgAAB AgQIECBAgAABAgQIECBAgAABAgQIEGhBAQmyFrwpqkSAAAECBAgQIECAAAECBAgQIECAAAECBAgQ INA8AQmy5tkqmQABAgQIECBAgAABAgQIECBAgAABAgQIECBAoAUFJMha8KaoEgECBAgQIECAAAEC BAgQIECAAAECBAgQIECAQPMEJMiaZ6tkAgQIECBAgAABAgQIECBAgAABAgQIECBAgACBFhSQIGvB m6JKBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECzROQIGuerZIJECBAgAABAgQIECBAgAABAgQI ECBAgAABAgRaUECCrAVviioRIECAAAECBAgQIECAAAECBAgQIECAAAECBAg0T0CCrHm2SiZAgAAB AgQIECBAgAABAgQIECBAgAABAgQIEGhBAQmyFrwpqkSAAAECBAgQIECAAAECBAgQIECAAAECBAgQ INA8AQmy5tkqmQABAgQIECBAgAABAgQIECBAgAABAgQIECBAoAUFJMha8KaoEgECBAgQIECAAAEC BAgQIECAAAECBAgQIECAQPMEJMiaZ6tkAgQIECBAgAABAgQIECBAgAABAgQIECBAgACBFhSQIGvB m6JKBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECzROomiDLRa6hMzueXyMBJH7Ej/ipX0D70X7q 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 ECBAgACBbRJYO8ViVVXH2rX6+thBLwgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAhcUIGq3+/P o27T6XRRxVardTh7LLaRUnE1GBapFVdTLHY6ncX1dggQIECAAAECBAgQIECAAAECBAgQIECAAAEC l0FgOX7SpD3iJ03UNn9NMcVirDF29erVzd/dHQgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAic s8DaKRbPuV5uR4AAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQGAjAsUZZO12O+3s7KTYlkqkWByP xylmmp1WqlSlef6naXE9P/3H98f40UzA+Gn8NH4aP5uNHin/7c33x/fH98f3p5mA8cP4afw0fjYb Pfz9w/hp/DR+Gj+Nn80EjJ/Gz1sdP4trkPV6vXTlypXDdchKXXM0GqXBYJBiWxc5NGsJWwIEqSTg pgAAQABJREFUCBAgQIAAAQIECBAgQIAAAQIECBAgQOCyCFiD7LI8yePtKKZYrKrq2Fn163obB5f3 j53sBQECBAgQIECAAAECBAgQIECAAAECBAgQIECAAIELLFCcQdZqtdLu7u6xFIvz+XwRFIsUi5PJ JMW2LmaQ1RK2BAgQIECAAAECBAgQIECAAAECBAgQIECAwGURMIPssjzJ4+0orkEWa4sNh8PjZ3pF gAABAgQIECBAgAABAgQIECBAgAABAgQIECBA4BIIFFMsXoJ2aQIBAgQIECBAgAABAgQIECBAgAAB AgQIECBAgACBokBxBlm73T5MsRipFpdTK9afUEqxWB+zJUCAAAECBAgQIECAAAECBAgQIECAAAEC BAgQIHCRBYoBsm63m/b29lKv1yvWfTQapcFgkGKrECBAgAABAgQIECBAgAABAgQIECBAgAABAgQI ENgmgbVSLFZVtU1tUlcCBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECJwpU/X5/Hken0+nipEix uLOzk2K7borFTqezuN4OAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQOAyCCzHT5q0R/ykidrmrymm WIw1xobD4ebv7g4ECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEzllgrRSL51wntyNAgAABAgQI ECBAgAABAgQIECBAgAABAgQIECCwMYHiDLJFisVWO6WV5cci5eJsNkuTySTFTDOFAAECBAgQIECA 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 jZSKq8GwSK24mmKx0+ksrrdDgAABAgQIECBAgAABAgQIECBAgAABAgQIELgMAsvxkybtET9porb5 a4opFmONsatXr27+7u5AgAABAgQIECBAgAABAgQIECBAgAABAgQIECBA4JwF1k6xeM71cjsCBAgQ IECAAAECBAgQIECAAAECBAgQIECAAAECGxEoziBrt9tpZ2cnxbZUIsXieDxOMdPstFKlKs3zP02L 6/npP74/xo9mAsZP46fx0/jZbPRI+W9vvj++P74/vj/NBIwfxk/jp/Gz2ejh7x/GT+On8dP4afxs JmD8NH7e6vhZXIOs1+ulK1euHK5DVuqao9EoDQaDFNu6yKFZS9gSIECAAAECBAgQIECAAAECBAgQ IECAAAECl0XAGmSX5Ukeb0cxxWJVVcfOql/X2zi4vH/sZC8IECBAgAABAgQIECBAgAABAgQIECBA gAABAgQIXGCB4gyyVquVdnd3j6VYnM/ni6BYpFicTCYptnUxg6yWsCVAgAABAgQIECBAgAABAgQI ECBAgAABAgQui4AZZJflSR5vR3ENslhbbDgcHj/TKwIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAA AQKXQKCYYvEStEsTCBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBQFijPI2u32YYrFSLW4nFqx /oRSisX6mC0BAgQIECBAgAABAgQIECBAgAABAgQIECBAgACBiyxQDJB1u920t7eXer1ese6j0SgN BoMUW4UAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIDANgmslWKxqqptapO6EiBAgAABAgQIECBA gAABAgQIECBAgAABAgQIEDhRoOr3+/M4Op1OFydFisWdnZ0U23VTLHY6ncX1dggQIECAAAECBAgQ IECAAAECBAgQIECAAAECl0FgOX7SpD3iJ03UNn9NMcVirDE2HA43f3d3IECAAAECBAgQIECAAAEC BAgQIECAAAECBAgQIHDOAmulWDznOrkdAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAgY0JFGeQ LVIsttoprSw/FikXZ7NZmkwmKWaaKQQIECBAgAABAgQIECBAgAABAgQIECBAgAABAgS2SaAYIOt2 u2l/fz/1er1iW0ajURoMBim2CgECBAgQIECAAAECBAgQIECAAAECBAgQIECAAIFtElgrxWJVXZtG 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 rz/j1OJh1/Mrdow139R/9J81u0rxNP1H/yl2jDXf1H/0nzW7SvE0/Uf/KXaMNd/Uf/SfNbtK8TT9 R/8pdow139R/9J81u0rxNP1H/yl2jDXf1H/0nzW7SvE0/Uf/KXaMNd/Uf7a//1T9fn8ez3s6nS4e e6RY3NnZSbGNMp/P03KArJRisdPpLK63Q4AAAQIECBAgQIAAAQIECBAgQIAAAQIECBC4DALL8ZMm 7RE/aaK2+WuKKRYjADYcDjd/d3cgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgcM4Cp6ZYPOe6 uB0BAgQIECBAgAABAgQIECBAgAABAgQIECBAgACBjQsUZ5Ctplisa1GnWpzNZmk8HqeYaaYQIECA AAECBAgQIECAAAECBAgQIECAAAECBAgQ2CaBYoCs2+2m/f391Ov1jrUl1iGLINloNEqDweBwe+wE LwgQIECAAAECBAgQIECAAAECBAgQIECAAAECBAhccIG1UyzWwbEL3h7VI0CAAAECBAgQIECAAAEC BAgQIECAAAECBAgQIHCqQNXv9+dxxnQ6XZzYarXS7u5uilSLUerUivW2lGKx0+ksrrdDgAABAgQI ECBAgAABAgQIECBAgAABAgQIELgMAsvxkybtET9porb5a4opFiMANhwON393dyBAgAABAgQIECBA gAABAgQIECBAgAABAgQIECBwzgJrp1g853q5HQECBAgQIECAAAECBAgQIECAAAECBAgQIECAAIGN CBRnkEVqxZ2dnUWKxeU7R5rFmGE2mUzSwcHB8iH7BAgQIECAAAECBAgQIECAAAECBAgQIECAAAEC BC68QDFA1u120/7+fur1esUGjEajNBgMUmwVAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAtsk sHaKxaqqjrVr9fWxg14QIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQuKACVb/fn0fdptPpooqt Vutw9lhsI6XiajAsUiuupljsdDqL6+0QIECAAAECBAgQIECAAAECBAgQIECAAAECBC6DwHL8pEl7 xE+aqG3+mmKKxVhj7OrVq5u/uzsQIECAAAECBAgQIECAAAECBAgQIECAAAECBAgQOGeBtVMsnnO9 3I4AAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIDARgSKM8ja7Xba2dlJsS2VSLE4Ho9TzDQ7rVSp SvP8T9Pien76j++P8aOZgPHT+Gn8NH42Gz1S/tub74/vj++P708zAeOH8dP4afxsNnr4+4fx0/hp /DR+Gj+bCRg/jZ+3On4W1yDr9XrpypUrh+uQlbrmaDRKg8EgxbYucmjWErYECBAgQIAAAQIECBAg QIAAAQIECBAgQIDAZRGwBtlleZLH21FMsVhV1bGz6tf1Ng4u7x872QsCBAgQIECAAAECBAgQIECA AAECBAgQIECAAAECF1igOIOs1Wql3d3dYykW5/P5IigWKRYnk0mKbV3MIKslbAkQIECAAAECBAgQ IECAAAECBAgQIECAAIHLImAG2WV5ksfbUVyDLNYWGw6Hx8/0igABAgQIECBAgAABAgQIECBAgAAB AgQIECBAgMAlECimWLwE7dIEAgQIECBAgAABAgQIECBAgAABAgQIECBAgAABAkWB4gyydrt9mGIx Ui0up1asP6GUYrE+ZkuAAAECBAgQIECAAAECBAgQIECAAAECBAgQIEDgIgsUA2Tdbjft7e2lXq9X rPtoNEqDwSDFViFAgAABAgQIECBAgAABAgQIECBAgAABAgQIECCwTQJrpVisqmqb2qSuBAgQIECA AAECBAgQIECAAAECBAgQIECAAAECBE4UqPr9/jyOTqfTxUmRYnFnZyfFdt0Ui51OZ3G9HQIECBAg QIAAAQIECBAgQIAAAQIECBAgQIDAZRBYjp80aY/4SRO1zV9TTLEYa4wNh8PN390dCBAgQIAAAQIE CBAgQIAAAQIECBAgQIAAAQIECJyzwFopFs+5Tm5HgAABAgQIECBAgAABAgQIECBAgAABAgQIECBA YGMCxRlkixSLrXZKK8uPRcrF2WyWJpNJiplmCgECBAgQIECAAAECBAgQIECAAAECBAgQIECAAIFt EigGyLrdbtrf30+9Xq/YltFolAaDQYqtQoAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQGCbBNZK sVhV16aR1dto4PL+NjVYXQkQIECAAAECBAgQIECAAAECBAgQIECAAAECBJ7aAlW/358HwXQ6XUgs Uiy2c4rFXCKtYh0Qi/34Mx6Pj6VY7HQ6i+vtECBAgAABAgQIECBAgAABAgQIECBAgAABAgQug8By /KRJe8RPmqht/ppiisVYW2w4HOblx6qUw2GNa+F6fvqP70/TAcT4Yfwwfhg/jB/NBIyfxk/jp/Gz 2egRy0/7/vj++P74/jQTMH4YP42fxs9mo4e/fxg/jZ/Gzyd3/CzOIGsyoImANlFzDQECBAgQIECA AAECBAgQIECAAAECBAgQIHCRBcwgu8hPp3ndijPI6hSLrVZrkVpxcYsc0DuYHaTJZHIsxeLiuB0C BAgQIECAAAECBAgQIECAAAECBAgQIECAAAECF1igGCDrdrtpf38/9Xq9YtVHo1EaDAYptgoBAgQI ECBAgAABAgQIECBAgAABAgQIECBAgACBbRJolSpbVdXi7eX9xZt2CBAgQIAAAQIECBAgQIAAAQIE CBAgQIAAAQIECGypQHENskituLu7myLVYqkcHByk8XicZrPZ4rA1yBYUdggQIECAAAECBAgQIECA AAECBAgQIECAAIFLImANskvyIFeaUUyxGIGv4XC4cqqXBAgQIECAAAECBAgQIECAAAECBAgQIECA AAECBLZfoJhicfubpQUECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIEygLFGWSRWjFSLEaqxVKJ FIuTySTFViFAgAABAgQIECBAgAABAgQIECBAgAABAgQIECCwTQLFAFm32017e3up1+vd0Jaqqg7T Lw4GgzQajW447g0CBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECF1mgOEUsgmB1Wd2fz+f1IVsC BAgQIECAAAECBAgQIECAAAECBAgQIECAAAECWydQ9fv9w4jXdDpdVD5SK0aKxUi1WJcIjNXBskit OB6P02w2qw+nTqez2LdDgAABAgQIECBAgAABAgQIECBAgAABAgQIELgMAsvxkybtET9porb5a4op FiPwNRwON393dyBAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBwzgLFFIvnXAe3I0CAAAECBAgQ IECAAAECBAgQIECAAAECBAgQIHBuAsUZZJFaMVIsRqrFUokUi5PJJMVWIUCAAAECBAgQIECAAAEC BAgQIECAAAECBAgQILBNAsUAWbfbTXt7e6nX6xXbMhqN0mAwSLFVCBAgQIAAAQIECBAgQIAAAQIE CBAgQIAAAQIECGyTQHmK2FELqqpatGV5f/HmGTtVun79GacWD7ueX7FjrPmm/qP/rNlViqfpP/pP sWOs+ab+o/+s2VWKp+k/+k+xY6z5pv6j/6zZVYqn6T/6T7FjrPmm/qP/rNlViqfpP/pPsWOs+ab+ o/+s2VWKp+k/+k+xY6z5pv6z/f2n6vf783je0+l08dgjxeLOzk6KbZT5fJ6WA2SlFIudTmdxvR0C BAgQIECAAAECBAgQIECAAAECBAgQIECAwGUQWI6fNGmP+EkTtc1fU0yxGAGw4XC4+bu7AwECBAgQ IECAAAECBAgQIECAAAECBAgQIECAAIFzFjg1xeI518XtCBAgQIAAAQIECBAgQIAAAQIECBAgQIAA AQIECGxcoDiDbDXFYl2LOtXibDZL4/E4xUwzhQABAgQIECBAgAABAgQIECBAgAABAgQIECBAgMA2 CRQDZN1uN+3v76der3esLbEOWQTJRqNRGgwGh9tjJ3hBgAABAgQIECBAgAABAgQIECBAgAABAgQI ECBA4IILrJ1isQ6OXfD2qB4BAgQIECBAgAABAgQIECBAgAABAgQIECBAgACBUwWqfr8/jzOm0+ni xFarlXZ3d1OkWoxSp1ast6UUi51OZ3G9HQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIDAZRBYjp80 aY/4SRO1zV9TTLEYAbDhcLj5u7sDAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIAAgXMWWDvF4jnX y+0IECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIbESgOIMsUivu7OwsUiwu3znSLMYMs8lkkg4O DpYP2SdAgAABAgQIECBAgAABAgQIECBAgAABAgQIECBw4QWKAbJut5v29/dTr9crNmA0GqXBYJBi qxAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBDYJoG1UyxWVXWsXauvjx30ggABAgQIECBAgAAB AgQIECBAgAABAgQIECBAgMAFFaj6/f486jadThdVbLVah7PHYhspFVeDYZFacTXFYqfTWVxvhwAB AgQIECBAgAABAgQIECBAgAABAgQIECBwGQSW4ydN2iN+0kRt89cUUyzGGmNXr17d/N3dgQABAgQI ECBAgAABAgQIECBAgAABAgQIECBAgMA5C6ydYvGc6+V2BAgQIECAAAECBAgQIECAAAECBAgQIECA AAECBDYiUJxB1m63087OToptqUSKxfF4nGKm2WmlSlWa53+aFtfz0398f4wfzQSMn8ZP46fxs9no kfLf3nx/fH98f3x/mgkYP4yfxk/jZ7PRw98/jJ/GT+On8dP42UzA+Gn8vNXxs7gGWa/XS1euXDlc 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 AAECBAgQIECAAAECBAgQIECAwBsIZEssvsG4DIEAAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIBA ViC7guzj4+OzxGKUWrwurTj+C7kSi+MxPQECBAgQIECAAAECBAgQIECAAAECBAgQIECAAIFnFsgm yKqqSrvdLtV1nX32rutS0zQpeo0AAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIDAKwnMKrFYFMUr jcmzEiBAgAABAgQIECBAgAABAgQIECBAgAABAgQIEPhVgWK73Z7j6DAM00lRYnG9Xqfo55ZYLMty ut4GAQIECBAgQIAAAQIECBAgQIAAAQIECBAgQOAdBK7zJ0vGI3+yRO3+12RLLMY7xtq2vf/d3YEA AQIECBAgQIAAAQIECBAgQIAAAQIECBAgQIDAgwVmlVh88DO5HQECBAgQIECAAAECBAgQIECAAAEC BAgQIECAAIG7CWRXkE0lFlcfKX15/ViUXDydTqnv+xQrzTQCBAgQIECAAAECBAgQIECAAAECBAgQ IECAAAECrySQTZBVVZX2+32q6zo7lq7rUtM0KXqNAAECBAgQIECAAAECBAgQIECAAAECBAgQIECA wCsJzCqxWBQ/LSMb+xjg9fYrDdizEiBAgAABAgQIECBAgAABAgQIECBAgAABAgQI/HELFNvt9hwE wzBMElOJxY9LicVLi7KKY0IstuO/w+FwU2KxLMvpehsECBAgQIAAAQIECBAgQIAAAQIECBAgQIAA gXcQuM6fLBmP/MkStftfky2xGO8Wa9v28vqxIl3SYYufwvX8zB+/n6UBRPwQP8QP8UP8WCYgfoqf 4qf4uSx6xOun/X78fvx+/H6WCYgf4qf4KX4uix7+/hA/xU/x8w8bP7MryJYENBnQJWquIUCAAAEC BAgQIECAAAECBAgQIECAAAECBJ5ZwAqyZ/52lj9bdgXZWGJxtVpNpRWnW1wSesfTMfV9f1NicTpu gwABAgQIECBAgAABAgQIECBAgAABAgQIECBAgMATC2QTZFVVpf1+n+q6zj5613WpaZoUvUaAAAEC BAgQIECAAAECBAgQIECAAAECBAgQIEDglQRWuYctimLafb097bRBgAABAgQIECBAgAABAgQIECBA gAABAgQIECBA4EUFsu8gi9KKm80mRanFXDsej+lwOKTT6TQd9g6yicIGAQIECBAgQIAAAQIECBAg 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 I0CAAAECBAgQIECAAAECBAgQIECAAAECBAgQIPBKAtkEWVVVabfbpbqufzGWoig+yy82TZO6rvvF cTsIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIPLNAdolYJMHG9nX7fD6Ph/QECBAgQIAAAQIE CBAgQIAAAQIECBAgQIAAAQIEXk6g2G63nxmvYRimh4/SilFiMUotji0SY2OyLEorHg6HdDqdxsOp LMtp2wYBAgQIECBAgAABAgQIECBAgAABAgQIECBA4B0ErvMnS8Yjf7JE7f7XZEssRuKrbdv7390d CBAgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECDxYIFti8cHP4HYECBAgQIAAAQIECBAgQIAAAQIE CBAgQIAAAQIEHiaQXUEWpRWjxGKUWsy1KLHY932KXiNAgAABAgQIECBAgAABAgQIECBAgAABAgQI ECDwSgLZBFlVVWm326W6rrNj6bouNU2TotcIECBAgAABAgQIECBAgAABAgQIECBAgAABAgQIvJJA fonY70ZQFMU0luvtaedvbBTp5+t/49TsYdfzy06MmTvNH/Nn5lTJnmb+mD/ZiTFzp/lj/sycKtnT zB/zJzsxZu40f8yfmVMle5r5Y/5kJ8bMneaP+TNzqmRPM3/Mn+zEmLnT/DF/Zk6V7Gnmj/mTnRgz d5o/rz9/iu12e47vexiG6WuPEovr9TpFH+18PqfrBFmuxGJZltP1NggQIECAAAECBAgQIECAAAEC BAgQIECAAAEC7yBwnT9ZMh75kyVq978mW2IxEmBt297/7u5AgAABAgQIECBAgAABAgQIECBAgAAB AgQIECBA4MECPyyx+OBncTsCBAgQIECAAAECBAgQIECAAAECBAgQIECAAAECdxfIriD7WmJxfIqx 1OLpdEqHwyHFSjONAAECBAgQIECAAAECBAgQIECAAAECBAgQIECAwCsJZBNkVVWl/X6f6rq+GUu8 hyySZF3XpaZpPvubE3wgQIAAAQIECBAgQIAAAQIECBAgQIAAAQIECBAg8OQCs0ssjsmxJx+PxyNA gAABAgQIECBAgAABAgQIECBAgAABAgQIECDwQ4Fiu92e44xhGKYTV6tV2mw2KUotRhtLK459rsRi WZbT9TYIECBAgAABAgQIECBAgAABAgQIECBAgAABAu8gcJ0/WTIe+ZMlave/JltiMRJgbdve/+7u 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 Pf7gZv+XzvTKgoOzmWsueSUlT6go2GkTPbIk6JPXjCvsO6m+l/jVjrTc1J2U2IFC/zz+II98pMMr J01Qe88970q/u1XlT7wlmsq0s7B2YU6Pbvrl0dmvQ3Qqv7c921f092+WCjT98DXZ9/+0Jy2feSUp Y1Uzw0EdlPTKxNyzsvQWD6i2/X1fWr6unrH1NzUtV36h9qcDebq8Sz3/rDTY4sZPb0u3a3F79nxN 0xHCXNHf5Tyj2rNKOTy6u3y7vjDLK2+fkj0H129OypoqAVe7TVSdi3P+no0a6fZffohX3qoCuLrY miIfDHjl/apPWaVbBa/er57J9iG1/EJlqouv0HQ5RfWBh48t/rrqLX/r65eeUtf8N9VP36v+HWnr L3p7B1RgVZ+7VbGUPLW3/PF/TPWf85WfLl/emMz0szMm6X7lK9rmV9R7q1WfL1fcnj9re9Rv/P3T sjZN8cefz//l75Oma8a+jOuH66fVr5/iTxy53r1lyxZZunSp6FSLuugPVvYPmzq1ol6nWqkHJ7Pf OoJr1FfnDb9qXbTi+/i5/+PI9cf1x/XD9VPxBlvlTfoP/adKF6n4Nv2H/lOxg1R5k/5D/6nSRSq+ 3aj+U3pWboqk5I0TvHKYCl4dpKIKX5rtk4++nByQ//7TI5Bu7GyT0BhbtMJ21Pp7gaPGiSwb55OF Kijx6Vf6VMAuu4Kb4x/t9ci4XGTE50lngij/qYJm9u8f9NZ9ar9vn+KReSogduHLfbJJB1hUwOUS ta5+r7ToQNEylYJyvgq0XKyCW6VFh0Os/epP7rrY26+3aL0/xpuWSeqrka65bUVBu0wl9X+j1P6P Ve369uEe+W8VjPq2CsiYyji1U2ub2XBM8Vr2/Re/U/6VDlb9V5nzpQ1fp9p141yv/GRrUr66ydwu v+0c2OJ+ZXdqtxmrRhVaRbdfj7SyjtFarqej1D7UYKx8GatMdRllM8m/qWbaVNvbcsFE+3L7vH4G 341zfXKMhjUUvc+T1Pk/aaJX7ownZUW3+fjtbdDHf6EKmC2ZXmXnhv25OX/2zVC/0JfsLk7n8cPP aV8xrUf/of+Y+oXTZfSf1u8/xgCZDoBFIhGn/YD1EEAAAQQQQAABBBBAAAEEEECgAQI6IGEvanCU LFvfJ3cc0ZYJPBw/3iv/3p6W2+PmAICua4gh2TeZmdfp5G4/vE3so5DW9qTlefVvo0pbOMevg2Oe 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 3Zypdc13fif/vOxMsYfIKu4/t69KE+pXv/7q9nPYfzfcu0IuWL6m0u4qvld0X6i4ZuHNhp//5D4V HN4jfeoHXKMnTJUp40o+tpruP4XmVZ1rePurtKCx++f6r8Kv/utlEK7fCo1g//jb//tZd5XRu5o7 QLbxLR+SvvGTM72a/kv/Le2/FW53/d6i/9B/6D9l/wOu3/VSuoDrh+uH66d1r5/S65nXzSNQ9E2D 9YDDWptXenH2JfbaNvFq9nkvuf6rv8solD7Zl3+xvfhL1/zy6jOl+69eo3gN6ru/uWhJ/Cr57ZP7 rjpHVti+XO9c8i1Zde7RhU5YqXphrbJzJv9RJWuPy40OLb7+cis1YP8lu6/40tT+ihVK3qR+tRMY k0dtwTHNt+a3f5GwCpBlQkSm6mMPkQ9ddrHM71VfSqtfCY+SvfLIilvECtMU/eFoRP2Sc1zppaPz n+6VR3+4PL+ZJR84JT96rHz9Xnnie5fJZbc/na/Xf2ad3Hn3M/J+FSCb0P9NR0vK7n/383Ltuz4u D5TZyppbrpI19y+WO249X2ZWGE027og3y+LOm+V2Hel84Fr5w0dPl9M6ChXK7r/MfksXU990AZQq lX/tyM9h/+07UF9qro079pdvaJl3HLW/TF29uFr9nrX3ysIlN2W2MHfJSrnt3KOKt1Yff9X9F++s /6tq7e9fo3hJo+tz/Rd7l75qtH/p/kpfs//6LuDh6NfMAbJtx8yXXXNPyHfj4eifPzgHMxw/16+D blJ2FfoP/ads53DwBv2H/uOgm5Rdhf4zdP0n/2irsmeHN4ZSoPh7znpTLOp+lvkG3v41vEeKdlJy tNnf8OuFafFl9m+vW7JytZf5/Vdbscz71K/vGXT4GfxUcEHnObSV6aPMV4T+Q6V/DeS61Ok/1PtX h2/wq0GD+ka/3u6/qVSJJeWRB+Xl3QvkOFtUp/j8j5d5Zy+QeflqSZEnVIDskfyCfjMDW7/f5qsv qHT+tz4tP8pHmhbKqUfYDtzackn9dfd+rV9wbMGSi+VNsyfKrm0RWfvXx2X1/Sp4tjt7zRYfv7XR GqZF+98ja5YXB8fOWnyZnP3ag+XFB2+RW+7Ojetbd7t88L8Pkwc+cbJ4y94/psqbz/sXuf3auzON +d59f5HTzi+c2XwLi/afX+p8hvrG688xYCU/h/23bdJ0kc5OOWHSpEzKbOtHT+mdO+XpdbaxoOoL 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 --5e9a5d74_613efdc5_336d-- From unknown Sun Jun 22 22:45:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#40200: bug#28872: [PATCH v4] Fix NS frame resizing issues (bug#40200, bug#28872) Resent-From: Alan Third Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sat, 18 Apr 2020 12:08:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 40200 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: HaiJun Zhang Cc: 40200@debbugs.gnu.org, Andrii Kolomoiets Received: via spool by 40200-submit@debbugs.gnu.org id=B40200.158721164211200 (code B ref 40200); Sat, 18 Apr 2020 12:08:02 +0000 Received: (at 40200) by debbugs.gnu.org; 18 Apr 2020 12:07:22 +0000 Received: from localhost ([127.0.0.1]:42087 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1jPmFm-0002ua-7Q for submit@debbugs.gnu.org; Sat, 18 Apr 2020 08:07:22 -0400 Received: from idiocy.org ([217.169.17.33]:62972 helo=breton.holly.idiocy.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1jPmFl-0002uO-1I for 40200@debbugs.gnu.org; Sat, 18 Apr 2020 08:07:21 -0400 Received: by breton.holly.idiocy.org (Postfix, from userid 501) id 3002A20221AB70; Sat, 18 Apr 2020 13:07:14 +0100 (BST) Date: Sat, 18 Apr 2020 13:07:14 +0100 From: Alan Third Message-ID: <20200418120714.GA53858@breton.holly.idiocy.org> Mail-Followup-To: Alan Third , HaiJun Zhang , Andrii Kolomoiets , 40200@debbugs.gnu.org References: <20200406184411.GA48827@breton.holly.idiocy.org> <20200416182410.GC52374@breton.holly.idiocy.org> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: X-Spam-Score: 0.0 (/) 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.0 (-) On Sat, Apr 18, 2020 at 09:52:47AM +0800, HaiJun Zhang wrote: > There is problem here. After emacs startups, there is no mini buffer > window and there is a blank rectangle at the right edge of the > frame. > > It is with my profile and it can’t be reproduced with emacs -Q. > > No problem before the commit. Can you try working out what part of your configuration is causing this? Probably there’s a place in the code where I need to either force Emacs to update the frame size, which is unlikely, or Emacs updates the frame size and I need to force macOS to do the actual resize. -- Alan Third From unknown Sun Jun 22 22:45:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#40200: bug#28872: [PATCH v4] Fix NS frame resizing issues (bug#40200, bug#28872) Resent-From: HaiJun Zhang Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sat, 18 Apr 2020 14:13:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 40200 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Alan Third Cc: 40200@debbugs.gnu.org, Andrii Kolomoiets Received: via spool by 40200-submit@debbugs.gnu.org id=B40200.158721916824833 (code B ref 40200); Sat, 18 Apr 2020 14:13:01 +0000 Received: (at 40200) by debbugs.gnu.org; 18 Apr 2020 14:12:48 +0000 Received: from localhost ([127.0.0.1]:43360 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1jPoDA-0006ST-Fs for submit@debbugs.gnu.org; Sat, 18 Apr 2020 10:12:48 -0400 Received: from mail-oln040092253078.outbound.protection.outlook.com ([40.92.253.78]:12801 helo=APC01-SG2-obe.outbound.protection.outlook.com) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1jPoD8-0006SC-FR for 40200@debbugs.gnu.org; Sat, 18 Apr 2020 10:12:47 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=AAeK04lE/ZqUe2PYR4pbrATgb2NZ4+xFIVQjlO2KIynIs6+yKSNOLBD0mE2bjIa9KQ1JfubmgMVJ1VxYsBscKuI8dtEXv86gxz4Lp2HDxx65joIrmQDo4ko1KhHPjXCdRC7ZPJXdQig5C5wH+0cDJBGHelQ9tcaa0soW/bc9aKOdlyceE2aiMhPm1HmqvYITYCcEhHOfpdd3ulDMnDFbcOIWZRdssCWBnd40odttCbyeiXxrpCK1+2ygpjqUdqRgx/eIvA1be+Z1Z93hZ26J6fFY3xk8M4Uojvqj8o66f1m/Wyemmsla1i/oqZWZCwNqOWMciavYaAyUaoNpnA3SwA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=GMLWIg8YpTNABgLfNhXaRgnzVVhNIxuA1NuzV0KRanE=; b=GWf6kI0CubVc2XKGbvfMXXtHWAQM5kvgTFZsxSffSNKQBYuH0DzdjIYPIVF0zOB15ddnTGpE6ier4poVOIujxBRtrhRBsN/DD1DqK1uRm3LxijL9LCsu/UTwO8jztCOaQK4duxxOji5AyLcGJDK4T5YwPNr/HtYXsVtEiP5fz0Jd+FNq1wFcxjHENhcDEHWRNGyoAizawNFRPCdeARhFBNA5Rr+wJeianx7jFnojc3FRg+YiSd2ddZoP6C2XV58jJQD85uT5P8bh5Bg37PPsiz/P4UClLLSFER7BOPbaz5KWihnbjFLzS7jv1eVteaWAaYoYNLpozHdzprw6xPIE+A== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=outlook.com; dmarc=pass action=none header.from=outlook.com; dkim=pass header.d=outlook.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=outlook.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=GMLWIg8YpTNABgLfNhXaRgnzVVhNIxuA1NuzV0KRanE=; b=AKjg/MrXXE9jlt4kpWIbc0VFpjGfthqJnA84LkjooxFGuCbIbHC9M5xQ3jNi5l2SXS6DnM54TOa0IVvMkNJdOzuReyada5m8fi28tgVW3nnp8KOgWQziW14gcQkhesPtFOn0PwsepbPdp5iVKHnkQN2xgRbXrS68INs1sFlioYcfosjyvPPItrdbnDkISmDgG3ShU3JCWNcLDxj2wfCJm9NXeasihE4ihHbNRAL+XCX7i4leRAmIN997EBpUlTIs8+C8uA3przEKjwW2BRTFfjD9ThSn1KeyGmeNwWuhRnhbuzVID61gIUHBOMLPUml82W864Da9LF+XZPw8K/XEEg== Received: from SG2APC01FT030.eop-APC01.prod.protection.outlook.com (2a01:111:e400:7ebd::43) by SG2APC01HT168.eop-APC01.prod.protection.outlook.com (2a01:111:e400:7ebd::475) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2921.25; Sat, 18 Apr 2020 14:12:37 +0000 Received: from PS1PR03MB3606.apcprd03.prod.outlook.com (10.152.250.59) by SG2APC01FT030.mail.protection.outlook.com (10.152.250.200) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2921.25 via Frontend Transport; Sat, 18 Apr 2020 14:12:37 +0000 X-IncomingTopHeaderMarker: OriginalChecksum:6F7AE6D02374DEE09BE1B1598AE0CA69E265FFDC3B0BD72C35076085771EC7BA; UpperCasedChecksum:A371C3AE01A2E003B358BE0B3BA02C2048851FD5D107A5E406412B0277007258; SizeAsReceived:9077; Count:49 Received: from PS1PR03MB3606.apcprd03.prod.outlook.com ([fe80::85cb:c430:1173:7716]) by PS1PR03MB3606.apcprd03.prod.outlook.com ([fe80::85cb:c430:1173:7716%5]) with mapi id 15.20.2937.011; Sat, 18 Apr 2020 14:12:37 +0000 Date: Sat, 18 Apr 2020 22:12:27 +0800 From: HaiJun Zhang Message-ID: In-Reply-To: <20200418120714.GA53858@breton.holly.idiocy.org> References: <20200406184411.GA48827@breton.holly.idiocy.org> <20200416182410.GC52374@breton.holly.idiocy.org> <20200418120714.GA53858@breton.holly.idiocy.org> X-Readdle-Message-ID: bdc8cef6-a623-4d56-8233-fb6fe8e237ec@Spark Content-Type: multipart/alternative; boundary="5e9b0ad1_8f2b15e_336d" X-ClientProxiedBy: HK2PR02CA0189.apcprd02.prod.outlook.com (2603:1096:201:21::25) To PS1PR03MB3606.apcprd03.prod.outlook.com (2603:1096:803:4e::17) X-Microsoft-Original-Message-ID: MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from [192.168.1.150] (1.193.169.127) by HK2PR02CA0189.apcprd02.prod.outlook.com (2603:1096:201:21::25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2921.25 via Frontend Transport; Sat, 18 Apr 2020 14:12:36 +0000 X-Readdle-Message-ID: bdc8cef6-a623-4d56-8233-fb6fe8e237ec@Spark X-Microsoft-Original-Message-ID: X-TMN: [RtOmGgSS8C1pmZfWPVAxkd5yklgWS0Qm] X-MS-PublicTrafficType: Email X-IncomingHeaderCount: 49 X-EOPAttributedMessage: 0 X-MS-Office365-Filtering-Correlation-Id: 38b18dd8-6ce6-4a09-9622-08d7e3a28c15 X-MS-TrafficTypeDiagnostic: SG2APC01HT168: X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: KeWH1a+4/YFcHX9oHWw+ks/bvo5/0Iip8K4M4KvTGi4JTgOVzGiCp9VjTmbLStCBH6Y2+xK6zSfpMg+/hchcUdGeATPRa5YtTBnI+0qdLW/qe1RoIvVsOs7ElwQuMfv7vZZz353Z+TGyDv2TrUj1mecrkKhbVW4WenOHLRtTjLLD1Y3eU5k2nQhyo4IJNTrooubEVrY9+edcIFB/lQ7l4Q== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:0; SRV:; IPV:NLI; SFV:NSPM; H:PS1PR03MB3606.apcprd03.prod.outlook.com; PTR:; CAT:NONE; SFTY:; SFS:; DIR:OUT; SFP:1901; X-MS-Exchange-AntiSpam-MessageData: m43gAnEHyjmtpMnhfjfINNMmLq8E5a7ZHDgt2hd16GWADoa/2dtEIYJSjewHZOO9utsDQRGEIIjnrDTYAPrfhD0YN3emwRhywJtXygwl+/sWEbVH/ikPA2z1FGoFAKrl33HxG+UlQBj7UY/gxbiGFg== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 38b18dd8-6ce6-4a09-9622-08d7e3a28c15 X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 Apr 2020 14:12:37.5683 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-FromEntityHeader: Internet X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: SG2APC01HT168 X-Spam-Score: 0.0 (/) 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.0 (-) --5e9b0ad1_8f2b15e_336d Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Content-Disposition: inline I can reproduce it with the following lines in =7E/.emacs: (setq inhibit-startup-message t =C2=A0 =C2=A0inhibit-startup-buffer-menu t) (setq default-frame-alist =E2=80=98( =C2=A0 =C2=A0 =C2=A0 =C2=A0(width . 85) =C2=A0 =C2=A0 =C2=A0 =C2=A0(height . 35) =C2=A0 =C2=A0 =C2=A0 =C2=A0(vertical-scroll-bars . nil) =C2=A0 =C2=A0 =C2=A0 =C2=A0(horizontal-scroll-bars . nil) =C2=A0 =C2=A0 =C2=A0 =C2=A0)) (set-frame-font =E2=80=9CMonospace 16=E2=80=9D) =E5=9C=A8 2020=E5=B9=B44=E6=9C=8818=E6=97=A5 +0800 PM8:07=EF=BC=8CAlan Th= ird =EF=BC=8C=E5=86=99=E9=81=93=EF=BC=9A > On Sat, Apr 18, 2020 at 09:52:47AM +0800, HaiJun Zhang wrote: > > There is problem here. After emacs startups, there is no mini buffer > > window and there is a blank rectangle at the right edge of the > > frame. > > > > It is with my profile and it can=E2=80=99t be reproduced with emacs -= Q. > > > > No problem before the commit. > > Can you try working out what part of your configuration is causing > this=3F > > Probably there=E2=80=99s a place in the code where I need to either for= ce > Emacs to update the frame size, which is unlikely, or Emacs updates > the frame size and I need to force macOS to do the actual resize. > > -- > Alan Third --5e9b0ad1_8f2b15e_336d Content-Type: text/html; charset="utf-8" Content-Transfer-Encoding: quoted-printable Content-Disposition: inline
I can reproduce it with the following lines in ~/.emacs:

(setq inhibit-startup-message t
   inhibit-startup-buffer-menu t)

(setq default-frame-alist =E2=80=98(
       (width . 85)
       (height . 35)
       (vertical-scroll-bars . nil)
       (horizontal-scroll-bars . nil)=
       ))

(set-frame-font =E2=80=9CMonospace 16=E2=80=9D)


=E5=9C=A8 2020=E5=B9=B44=E6=9C=8818=E6=97= =A5 +0800 PM8:07=EF=BC=8CAlan Third <alan@idiocy.org>=EF=BC=8C=E5= =86=99=E9=81=93=EF=BC=9A
On Sat, Apr 18, 2020 a= t 09:52:47AM +0800, HaiJun Zhang wrote:
There is problem here.= After emacs startups, there is no mini buffer
window and there is a blank rectangle at the right edge of the
frame.

It is with my profile and it can=E2=80=99t be reproduced with emacs -Q.

No problem before the commit.

Can you try working out what part of your configuration is causing
this?

Probably there=E2=80=99s a place in the code where I need to either force Emacs to update the frame size, which is unlikely, or Emacs updates
the frame size and I need to force macOS to do the actual resize.

--
Alan Third
--5e9b0ad1_8f2b15e_336d-- From unknown Sun Jun 22 22:45:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#40200: bug#28872: [PATCH v4] Fix NS frame resizing issues (bug#40200, bug#28872) Resent-From: Alan Third Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sat, 18 Apr 2020 15:27:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 40200 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: HaiJun Zhang Cc: 40200@debbugs.gnu.org, Andrii Kolomoiets Received: via spool by 40200-submit@debbugs.gnu.org id=B40200.158722359115419 (code B ref 40200); Sat, 18 Apr 2020 15:27:02 +0000 Received: (at 40200) by debbugs.gnu.org; 18 Apr 2020 15:26:31 +0000 Received: from localhost ([127.0.0.1]:43414 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1jPpMV-00040d-Iw for submit@debbugs.gnu.org; Sat, 18 Apr 2020 11:26:31 -0400 Received: from idiocy.org ([217.169.17.33]:63291 helo=breton.holly.idiocy.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1jPpMU-00040Q-Ag for 40200@debbugs.gnu.org; Sat, 18 Apr 2020 11:26:31 -0400 Received: by breton.holly.idiocy.org (Postfix, from userid 501) id 2284D20221CF52; Sat, 18 Apr 2020 16:26:22 +0100 (BST) Date: Sat, 18 Apr 2020 16:26:22 +0100 From: Alan Third Message-ID: <20200418152622.GA54462@breton.holly.idiocy.org> Mail-Followup-To: Alan Third , HaiJun Zhang , Andrii Kolomoiets , 40200@debbugs.gnu.org References: <20200406184411.GA48827@breton.holly.idiocy.org> <20200416182410.GC52374@breton.holly.idiocy.org> <20200418120714.GA53858@breton.holly.idiocy.org> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="Q68bSM7Ycu6FN28Q" Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: X-Spam-Score: 0.0 (/) 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.0 (-) --Q68bSM7Ycu6FN28Q Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit On Sat, Apr 18, 2020 at 10:12:27PM +0800, HaiJun Zhang wrote: > I can reproduce it with the following lines in ~/.emacs: > > (setq inhibit-startup-message t >    inhibit-startup-buffer-menu t) > > (setq default-frame-alist ‘( >        (width . 85) >        (height . 35) >        (vertical-scroll-bars . nil) >        (horizontal-scroll-bars . nil) >        )) > > (set-frame-font “Monospace 16”) Can you please try the attached patch. -- Alan Third --Q68bSM7Ycu6FN28Q Content-Type: text/plain; charset=us-ascii Content-Disposition: attachment; filename="0001-Fix-initial-frame-resizing-issue-on-NS-bug-40200.patch" >From 836c19eae4802a3aedee887669425f949971eb4a Mon Sep 17 00:00:00 2001 From: Alan Third Date: Sat, 18 Apr 2020 16:22:06 +0100 Subject: [PATCH] Fix initial frame resizing issue on NS (bug#40200) * src/nsterm.m ([EmacsView viewDidResize:]): Don't try to determine the old size when not drawing to the buffer. --- src/nsterm.m | 51 +++++++++++++++++++++------------------------------ 1 file changed, 21 insertions(+), 30 deletions(-) diff --git a/src/nsterm.m b/src/nsterm.m index 9cd1c9d860..d85a579e38 100644 --- a/src/nsterm.m +++ b/src/nsterm.m @@ -7322,48 +7322,39 @@ - (void)viewDidEndLiveResize - (void)viewDidResize:(NSNotification *)notification { NSRect frame = [self frame]; - int oldw, oldh, neww, newh; + int neww, newh; if (! FRAME_LIVE_P (emacsframe)) return; + NSTRACE ("[EmacsView viewDidResize]"); + + neww = (int)NSWidth (frame); + newh = (int)NSHeight (frame); + NSTRACE_SIZE ("New size", NSMakeSize (neww, newh)); + #ifdef NS_DRAW_TO_BUFFER -#if MAC_OS_X_VERSION_MIN_REQUIRED < 101400 if ([self wantsUpdateLayer]) { -#endif CGFloat scale = [[self window] backingScaleFactor]; - oldw = (CGFloat)CGBitmapContextGetWidth (drawingBuffer) / scale; - oldh = (CGFloat)CGBitmapContextGetHeight (drawingBuffer) / scale; -#if MAC_OS_X_VERSION_MIN_REQUIRED < 101400 - } - else - { -#endif -#endif /* NS_DRAW_TO_BUFFER */ -#if !defined (NS_DRAW_TO_BUFFER) || MAC_OS_X_VERSION_MIN_REQUIRED < 101400 - oldw = FRAME_PIXEL_WIDTH (emacsframe); - oldh = FRAME_PIXEL_HEIGHT (emacsframe); -#endif -#if defined (NS_DRAW_TO_BUFFER) && MAC_OS_X_VERSION_MIN_REQUIRED < 101400 - } -#endif - - neww = (int)NSWidth (frame); - newh = (int)NSHeight (frame); + int oldw = (CGFloat)CGBitmapContextGetWidth (drawingBuffer) / scale; + int oldh = (CGFloat)CGBitmapContextGetHeight (drawingBuffer) / scale; - NSTRACE ("[EmacsView viewDidResize]"); + NSTRACE_SIZE ("Original size", NSMakeSize (oldw, oldh)); - /* Don't want to do anything when the view size hasn't changed. */ - if ((oldh == newh && oldw == neww)) - { - NSTRACE_MSG ("No change"); - return; + /* Don't want to do anything when the view size hasn't changed. */ + if ((oldh == newh && oldw == neww)) + { + NSTRACE_MSG ("No change"); + return; + } } +#endif - NSTRACE_SIZE ("Original size", NSMakeSize (oldw, oldh)); - NSTRACE_SIZE ("New size", NSMakeSize (neww, newh)); - + /* I'm not sure if it's safe to call this every time the view + changes size, as Emacs may already know about the change. + Unfortunately there doesn't seem to be a bullet-proof method of + determining whether we need to call it or not. */ change_frame_size (emacsframe, FRAME_PIXEL_TO_TEXT_WIDTH (emacsframe, neww), FRAME_PIXEL_TO_TEXT_HEIGHT (emacsframe, newh), -- 2.26.1 --Q68bSM7Ycu6FN28Q-- From unknown Sun Jun 22 22:45:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#40200: bug#28872: [PATCH v4] Fix NS frame resizing issues (bug#40200, bug#28872) Resent-From: HaiJun Zhang Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sun, 19 Apr 2020 01:51:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 40200 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Alan Third Cc: 40200@debbugs.gnu.org, Andrii Kolomoiets Received: via spool by 40200-submit@debbugs.gnu.org id=B40200.158726101812812 (code B ref 40200); Sun, 19 Apr 2020 01:51:02 +0000 Received: (at 40200) by debbugs.gnu.org; 19 Apr 2020 01:50:18 +0000 Received: from localhost ([127.0.0.1]:43839 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1jPz6A-0003Ka-Gm for submit@debbugs.gnu.org; Sat, 18 Apr 2020 21:50:18 -0400 Received: from mail-oln040092253024.outbound.protection.outlook.com ([40.92.253.24]:20808 helo=APC01-SG2-obe.outbound.protection.outlook.com) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1jPz67-0003KI-IT for 40200@debbugs.gnu.org; Sat, 18 Apr 2020 21:50:16 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=DX7dtZ9f6mQppETwLDd4iJj8Tl2eYsRLLR4kl2oS4rvqY+MJMfD9BksR5bP7YfoFFNp06umlwPSA9LttY2tdAXvQWPHjs5vchBbRLw5HOZFYzMsZR2x8dNytJpT6um1nXs9bLxV+KxgkkJAuF+UGIdeqxKok3Ve8+buvo5tYZima04TufZmKpHwWEnvu8YJTRgd/ZJ9Bc4qBHI3/6dfMf9NYAL3zGa+ctRo+iOmBTL3pWfuwZzI959FyAjI3EZo6+vKVgl9drAuJKKi8cPU+gjKLcsHJbvoOdwnxC8Pn5Q7Fvx63jYU4fXJ0ib+5eHMZnZ34o7ylP/dOdlYNnxOepA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=1p8HR9S6vvTJHDQRWllOauXcT+aLqcVjYFuUHnwc5Is=; b=gcxZ2UrnAF9BEk06n5HFQ5xv52it4OnJDeQRPPyHogw+E7nwJtrtaWUcYiNJCYO6rwlUwYVu0Gm29CplCnSVj+i0IqJIlkyPk4HLlt1LX36vIL6nmhzT24xfl/3ewHwKUTZSPWQ60lzTFUZSnM91RGlKhqctVKbty7A/ptFI4JPYVJgLNNP6KgdApAINWqdR7xzG0VkAJJweG0Eo+220yBJnBY/rvm7PRFI5eMmnRdW7ruK4VX+C/+jbqIZIBVHMMcxU8j/1uV/QwN9GPadm7Y0/QEDxyo6qqmJLZppWDi+KQhKVLhTNPkbW03o1XGagGx5OUsLRUCRKolgKxTrSqw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=outlook.com; dmarc=pass action=none header.from=outlook.com; dkim=pass header.d=outlook.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=outlook.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=1p8HR9S6vvTJHDQRWllOauXcT+aLqcVjYFuUHnwc5Is=; b=g4i9N07+NINqKrUrQOCNevOulj6tLZN3Ssc1+14HH+pWm+mo7xbRvzvOWpnPWPREmAWU4aLuI7VmVR+DIbERxOql3Dz5Ll8PI/R/2bsAuAB3Z0lirpBplvvVZxXkdXATeG5XTrDD1c83q7kajM4lT2d3I9xdstzlJ46PbTO0IwQAgVHCn3SY0Em1qpL7tDEH/OQgxZskD4vex2/GVG2AnpxFhuW93Be5P4Ya3JqQaCUZ3668Sr7sZw8vi/tDp+xPrN+yFRp9sVnAZTzBN7o2/zEz2eLQoYUoRUErrivaiiIYIrbZR7rdd6brF/rv8U9xfvyM2cCcQ50LlRepOCroxg== Received: from PU1APC01FT035.eop-APC01.prod.protection.outlook.com (2a01:111:e400:7ebe::4b) by PU1APC01HT137.eop-APC01.prod.protection.outlook.com (2a01:111:e400:7ebe::160) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2921.25; Sun, 19 Apr 2020 01:50:07 +0000 Received: from PS1PR03MB3606.apcprd03.prod.outlook.com (10.152.252.53) by PU1APC01FT035.mail.protection.outlook.com (10.152.252.214) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2921.25 via Frontend Transport; Sun, 19 Apr 2020 01:50:07 +0000 X-IncomingTopHeaderMarker: OriginalChecksum:A584DC079AA43C80F1746B0BA777EEDD3A647694A9A04A8785227608D35FA890; UpperCasedChecksum:4BDF2E7B71C12D4A263BF9B7617AC9D540DD8B8861B5C977C231608BF198BAC0; SizeAsReceived:9212; Count:49 Received: from PS1PR03MB3606.apcprd03.prod.outlook.com ([fe80::85cb:c430:1173:7716]) by PS1PR03MB3606.apcprd03.prod.outlook.com ([fe80::85cb:c430:1173:7716%5]) with mapi id 15.20.2937.011; Sun, 19 Apr 2020 01:50:07 +0000 Date: Sun, 19 Apr 2020 09:49:58 +0800 From: HaiJun Zhang Message-ID: In-Reply-To: <20200418152622.GA54462@breton.holly.idiocy.org> References: <20200406184411.GA48827@breton.holly.idiocy.org> <20200416182410.GC52374@breton.holly.idiocy.org> <20200418120714.GA53858@breton.holly.idiocy.org> <20200418152622.GA54462@breton.holly.idiocy.org> X-Readdle-Message-ID: 4e0e1487-0dd2-4aa3-aad8-de0b65c3ba2e@Spark Content-Type: multipart/alternative; boundary="5e9bae4b_4962813b_336d" X-ClientProxiedBy: HK0PR03CA0097.apcprd03.prod.outlook.com (2603:1096:203:b0::13) To PS1PR03MB3606.apcprd03.prod.outlook.com (2603:1096:803:4e::17) X-Microsoft-Original-Message-ID: <4e0e1487-0dd2-4aa3-aad8-de0b65c3ba2e@Spark> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from [192.168.1.150] (1.193.169.127) by HK0PR03CA0097.apcprd03.prod.outlook.com (2603:1096:203:b0::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2921.25 via Frontend Transport; Sun, 19 Apr 2020 01:50:05 +0000 X-Readdle-Message-ID: 4e0e1487-0dd2-4aa3-aad8-de0b65c3ba2e@Spark X-Microsoft-Original-Message-ID: <4e0e1487-0dd2-4aa3-aad8-de0b65c3ba2e@Spark> X-TMN: [CKwtPW8Qk3UbDMXfO6YT5chXaF6HeBcJ] X-MS-PublicTrafficType: Email X-IncomingHeaderCount: 49 X-EOPAttributedMessage: 0 X-MS-Office365-Filtering-Correlation-Id: b70acebb-3954-45e2-6ac7-08d7e403fc5e X-MS-TrafficTypeDiagnostic: PU1APC01HT137: X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: pn8b+4FAG8dRME1CB76Upp18gp2582x4CYHuxKyKMPnAgAqcas1wQ6ssa79aUNSojGwOgO5NZvpMLHe1/6MPo2AmUwaZJNFFwkgeK0Om9QMz9Db+NkMhllqKt1vDZc0TA32yiF3DWqKhKeopAn8p38nP7Hxeo0yM548ECv/8hoZuk57kwRzvp8RNWBpaIVBRcZkHmzZ+RPNDvK4wNmeiZg== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:0; SRV:; IPV:NLI; SFV:NSPM; H:PS1PR03MB3606.apcprd03.prod.outlook.com; PTR:; CAT:NONE; SFTY:; SFS:; DIR:OUT; SFP:1901; X-MS-Exchange-AntiSpam-MessageData: vYuda0r0ctiVrdMMOVmoN+FT33KQFvNr24Ybp85rM9iOZBfUeF4IlDI5xiEcgG2Iw0FlbVuhCNzbMGEnvGTaHnxhyCDQCchbmY51rLhxrtxlGDiLRwotlvpPmSsrEGgGFx+W0+UgwLFcO5fm9My1BA== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: b70acebb-3954-45e2-6ac7-08d7e403fc5e X-MS-Exchange-CrossTenant-OriginalArrivalTime: 19 Apr 2020 01:50:07.0882 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-FromEntityHeader: Internet X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: PU1APC01HT137 X-Spam-Score: -0.8 (/) 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.8 (-) --5e9bae4b_4962813b_336d Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Content-Disposition: inline The patch fixes the bug. Thanks. Can you please look at another bug=3F=C2=A0bug=2340541 =E5=9C=A8 2020=E5=B9=B44=E6=9C=8818=E6=97=A5 +0800 PM11:26=EF=BC=8CAlan T= hird =EF=BC=8C=E5=86=99=E9=81=93=EF=BC=9A > On Sat, Apr 18, 2020 at 10:12:27PM +0800, HaiJun Zhang wrote: > > I can reproduce it with the following lines in =7E/.emacs: > > > > (setq inhibit-startup-message t > > =C2=A0 =C2=A0inhibit-startup-buffer-menu t) > > > > (setq default-frame-alist =E2=80=98( > > =C2=A0 =C2=A0 =C2=A0 =C2=A0(width . 85) > > =C2=A0 =C2=A0 =C2=A0 =C2=A0(height . 35) > > =C2=A0 =C2=A0 =C2=A0 =C2=A0(vertical-scroll-bars . nil) > > =C2=A0 =C2=A0 =C2=A0 =C2=A0(horizontal-scroll-bars . nil) > > =C2=A0 =C2=A0 =C2=A0 =C2=A0)) > > > > (set-frame-font =E2=80=9CMonospace 16=E2=80=9D) > > Can you please try the attached patch. > -- > Alan Third --5e9bae4b_4962813b_336d Content-Type: text/html; charset="utf-8" Content-Transfer-Encoding: quoted-printable Content-Disposition: inline
The patch fixes the bug. Thanks.

Can you please look at another bug? bug#40541

=E5=9C=A8 2020=E5=B9=B44=E6=9C=8818=E6=97= =A5 +0800 PM11:26=EF=BC=8CAlan Third <alan@idiocy.org>=EF=BC=8C= =E5=86=99=E9=81=93=EF=BC=9A
On Sat, Apr 18, 2020 a= t 10:12:27PM +0800, HaiJun Zhang wrote:
I can reproduce it wit= h the following lines in ~/.emacs:

(setq inhibit-startup-message t
   inhibit-startup-buffer-menu t)

(setq default-frame-alist =E2=80=98(
       (width . 85)
       (height . 35)
       (vertical-scroll-bars . nil)
       (horizontal-scroll-bars . nil)
       ))

(set-frame-font =E2=80=9CMonospace 16=E2=80=9D)

Can you please try the attached patch.
--
Alan Third
--5e9bae4b_4962813b_336d-- From unknown Sun Jun 22 22:45:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#40200: bug#28872: [PATCH v4] Fix NS frame resizing issues (bug#40200, bug#28872) Resent-From: Alan Third Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sun, 03 May 2020 16:27:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 40200 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: HaiJun Zhang Cc: 40200-done@debbugs.gnu.org, Andrii Kolomoiets Received: via spool by 40200-done@debbugs.gnu.org id=D40200.15885231904054 (code D ref 40200); Sun, 03 May 2020 16:27:02 +0000 Received: (at 40200-done) by debbugs.gnu.org; 3 May 2020 16:26:30 +0000 Received: from localhost ([127.0.0.1]:57752 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1jVHRm-00013K-E3 for submit@debbugs.gnu.org; Sun, 03 May 2020 12:26:30 -0400 Received: from idiocy.org ([217.169.17.33]:62208 helo=breton.holly.idiocy.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1jVHRk-000133-Be for 40200-done@debbugs.gnu.org; Sun, 03 May 2020 12:26:28 -0400 Received: by breton.holly.idiocy.org (Postfix, from userid 501) id BF4EE20228996D; Sun, 3 May 2020 17:26:22 +0100 (BST) Date: Sun, 3 May 2020 17:26:22 +0100 From: Alan Third Message-ID: <20200503162622.GB4071@breton.holly.idiocy.org> Mail-Followup-To: Alan Third , HaiJun Zhang , 40200-done@debbugs.gnu.org, Andrii Kolomoiets References: <20200406184411.GA48827@breton.holly.idiocy.org> <20200416182410.GC52374@breton.holly.idiocy.org> <20200418120714.GA53858@breton.holly.idiocy.org> <20200418152622.GA54462@breton.holly.idiocy.org> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: X-Spam-Score: 0.0 (/) 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.0 (-) On Sun, Apr 19, 2020 at 09:49:58AM +0800, HaiJun Zhang wrote: > The patch fixes the bug. Thanks. I’ve pushed it to master. Thanks! -- Alan Third From unknown Sun Jun 22 22:45:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#40200: bug#28872: [PATCH v4] Fix NS frame resizing issues (bug#40200, bug#28872) Resent-From: Filipp Gunbin Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sun, 03 May 2020 17:14:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 40200 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Alan Third Cc: 40200@debbugs.gnu.org, HaiJun Zhang , Andrii Kolomoiets Received: via spool by 40200-submit@debbugs.gnu.org id=B40200.15885260269178 (code B ref 40200); Sun, 03 May 2020 17:14:01 +0000 Received: (at 40200) by debbugs.gnu.org; 3 May 2020 17:13:46 +0000 Received: from localhost ([127.0.0.1]:57847 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1jVIBV-0002Nu-OO for submit@debbugs.gnu.org; Sun, 03 May 2020 13:13:45 -0400 Received: from out2-smtp.messagingengine.com ([66.111.4.26]:41953) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1jVIBT-0002Nc-6w for 40200@debbugs.gnu.org; Sun, 03 May 2020 13:13:43 -0400 Received: from compute1.internal (compute1.nyi.internal [10.202.2.41]) by mailout.nyi.internal (Postfix) with ESMTP id 07ECC5C0110; Sun, 3 May 2020 13:13:38 -0400 (EDT) Received: from mailfrontend2 ([10.202.2.163]) by compute1.internal (MEProxy); Sun, 03 May 2020 13:13:38 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fastmail.fm; h= from:to:cc:subject:in-reply-to:references:date:message-id :mime-version:content-type; s=fm3; bh=nogDS6SvY3SP8VXftOm41knv06 2tJdK8MjNwT0y1Tyw=; b=ak1A2InURCWKz35W5Khcfevq++lD4w01HJoiUr5LZZ n9cmtSTa1uucVgztjDrmYBYLgsqjLfiMSPPDpuYOk01nRxPowkAP2+tIrP/h8hM/ pia37C/VTM04JUhw33BXD8OrP9Vzc1wk48NWl1GXcAvu5AoXq2DNSqqx2SAfeXbl GrdYBYauUI6RuSIhqfIKUBhJaKE+7g5steHQZFS6pLcF9Mw8dqx6yBi+7YNJbk5s vmEdJHHYt1fkM3WztuKdjVZ2nLu3gd/WY7L6aExaAjKpknewyZ0VikdBDe7xmChN kVwE1QO3dmQ4AEaG/JTKk4mFEtlLgbbCXfewMmfiMhhw== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to:x-me-proxy :x-me-proxy:x-me-sender:x-me-sender:x-sasl-enc; s=fm2; bh=nogDS6 SvY3SP8VXftOm41knv062tJdK8MjNwT0y1Tyw=; b=2/3B2dsGbEnQHWjSrsYXb8 dB69jwSbPLkCzLC2vNrxPYdIVmdmMRPMnKB4mtdlMqxWkwsNel20NErKLnhz0TFD zy760SCQKzVyWhjJAyB83zDptpTD68ufKDuwhhTXNx2/0WlOTtLYt9VtoD7bNpwl WvmhsBtw2FxJoB1475AiN8ZVVD/b2LtNjz8h6S+ftYFnRR4kbPKmVR91iLOnZZqq V8b+LbP03O/x31Wy9gW2ziO3GX0sr/AFabYoF/YhQ28mowIIem97s2Sz/po1U1z1 Q9Wn5TuegLHxspQ3wmlw1yL43RpmJTqtDhOd0UCnJPzQe28aGxXbruDH5YmeHd6Q == X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeduhedrjedvgdduuddtucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen uceurghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmne cujfgurhephffvufgjfhgffffkgggtsehttdertddtredtnecuhfhrohhmpefhihhlihhp phcuifhunhgsihhnuceofhhguhhnsghinhesfhgrshhtmhgrihhlrdhfmheqnecuggftrf grthhtvghrnhepvdevkeffvdeuvefhuddtjeehkedvueefveettddtveduudfgieffieev ieevhfdtnecukfhppeekfedruddtvddrudegjedrleelnecuvehluhhsthgvrhfuihiivg eptdenucfrrghrrghmpehmrghilhhfrhhomhepfhhguhhnsghinhesfhgrshhtmhgrihhl rdhfmh X-ME-Proxy: Received: from fgunbin.local (unknown [83.102.147.99]) by mail.messagingengine.com (Postfix) with ESMTPA id E80CF3065FCE; Sun, 3 May 2020 13:13:36 -0400 (EDT) From: Filipp Gunbin In-Reply-To: <20200503162622.GB4071@breton.holly.idiocy.org> (Alan Third's message of "Sun, 3 May 2020 17:26:22 +0100") References: <20200406184411.GA48827@breton.holly.idiocy.org> <20200416182410.GC52374@breton.holly.idiocy.org> <20200418120714.GA53858@breton.holly.idiocy.org> <20200418152622.GA54462@breton.holly.idiocy.org> <20200503162622.GB4071@breton.holly.idiocy.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (darwin) Date: Sun, 03 May 2020 20:13:35 +0300 Message-ID: MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -0.7 (/) 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 (-) Hi, I've just filed bug#41055 which is also about NS frame resizing, it may have something to do with this... Filipp From unknown Sun Jun 22 22:45:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#40200: bug#28872: [PATCH v4] Fix NS frame resizing issues (bug#40200, bug#28872) Resent-From: Alan Third Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sun, 03 May 2020 18:42:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 40200 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Filipp Gunbin Cc: 40200@debbugs.gnu.org, HaiJun Zhang , Andrii Kolomoiets Received: via spool by 40200-submit@debbugs.gnu.org id=B40200.158853131217791 (code B ref 40200); Sun, 03 May 2020 18:42:02 +0000 Received: (at 40200) by debbugs.gnu.org; 3 May 2020 18:41:52 +0000 Received: from localhost ([127.0.0.1]:58015 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1jVJYl-0004ct-Md for submit@debbugs.gnu.org; Sun, 03 May 2020 14:41:51 -0400 Received: from idiocy.org ([217.169.17.33]:62413 helo=breton.holly.idiocy.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1jVJYk-0004ch-8u for 40200@debbugs.gnu.org; Sun, 03 May 2020 14:41:50 -0400 Received: by breton.holly.idiocy.org (Postfix, from userid 501) id 93A8720228AA6D; Sun, 3 May 2020 19:41:44 +0100 (BST) Date: Sun, 3 May 2020 19:41:44 +0100 From: Alan Third Message-ID: <20200503184144.GB24860@breton.holly.idiocy.org> Mail-Followup-To: Alan Third , Filipp Gunbin , HaiJun Zhang , 40200@debbugs.gnu.org, Andrii Kolomoiets References: <20200406184411.GA48827@breton.holly.idiocy.org> <20200416182410.GC52374@breton.holly.idiocy.org> <20200418120714.GA53858@breton.holly.idiocy.org> <20200418152622.GA54462@breton.holly.idiocy.org> <20200503162622.GB4071@breton.holly.idiocy.org> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: X-Spam-Score: 0.0 (/) 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.0 (-) On Sun, May 03, 2020 at 08:13:35PM +0300, Filipp Gunbin wrote: > Hi, I've just filed bug#41055 which is also about NS frame resizing, it > may have something to do with this... Does this patch make any difference to your issue? Or is it the cause? Most likely the commit that’s broken it is 24cb6908d70c14792c686679cb08091447b9c3b1 -- Alan Third From unknown Sun Jun 22 22:45:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#40200: bug#28872: [PATCH v4] Fix NS frame resizing issues (bug#40200, bug#28872) Resent-From: Filipp Gunbin Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sun, 03 May 2020 19:50:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 40200 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Alan Third Cc: 40200@debbugs.gnu.org, HaiJun Zhang , Andrii Kolomoiets Received: via spool by 40200-submit@debbugs.gnu.org id=B40200.158853536924040 (code B ref 40200); Sun, 03 May 2020 19:50:01 +0000 Received: (at 40200) by debbugs.gnu.org; 3 May 2020 19:49:29 +0000 Received: from localhost ([127.0.0.1]:58066 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1jVKcC-0006Fg-QW for submit@debbugs.gnu.org; Sun, 03 May 2020 15:49:29 -0400 Received: from out5-smtp.messagingengine.com ([66.111.4.29]:50805) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1jVKcB-0006FT-Gu for 40200@debbugs.gnu.org; Sun, 03 May 2020 15:49:28 -0400 Received: from compute1.internal (compute1.nyi.internal [10.202.2.41]) by mailout.nyi.internal (Postfix) with ESMTP id 047D75C00BB; Sun, 3 May 2020 15:49:22 -0400 (EDT) Received: from mailfrontend2 ([10.202.2.163]) by compute1.internal (MEProxy); Sun, 03 May 2020 15:49:22 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fastmail.fm; h= from:to:cc:subject:in-reply-to:references:date:message-id :mime-version:content-type:content-transfer-encoding; s=fm3; bh= dCGvyWvwIpeAQKWdQ3dLCR7NGdKKO+m9h1oFI34RnqY=; b=uffn4j4W3jG7/DN4 I6EImemWqniTI8K+6nURXyLtG765YpzNpnvSaeJD7T21OosU6LBwCkTLvj5hPFCF 6whvH3QJpdl/7h/DxOzEJTYYW6SvH2xt9A7ixwV4aNtU0tUPStOMMxtkIkGsx18U RPYjiDFO4QrSvDYi7d1eWVOna9RTo36ujn42NO9ecf2h6O2WkakWhp76mDK6D3AT VwM/IoHxUzwCnBPIOWi9bxvGEj4tSazzc7wYCd0gbVmtf7HIh8M0j2a31PWmu2/Z ByDENAOOdEN5EeZc0Iqp6KLEzghuSTYztqsRF0fps65aKcTO4gnXF6IWmxI6yp9/ kukNNw== DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d= messagingengine.com; h=cc:content-transfer-encoding:content-type :date:from:in-reply-to:message-id:mime-version:references :subject:to:x-me-proxy:x-me-proxy:x-me-sender:x-me-sender :x-sasl-enc; s=fm2; bh=dCGvyWvwIpeAQKWdQ3dLCR7NGdKKO+m9h1oFI34Rn qY=; b=KPgXWcECTEzhJWCYLO5oPoiQPilR4jtsTyjHK/eHYf+HSu7WDSpqsfu9K nyXpIKIW0kHcBjkvjETOqUv3fsueI5HHBNZi2uA4Bk71rVGneYhYWfq6SIXeUY7t 2+reYdn6XmcrXtuSw+uz+QKKJPnx+ZjKAs0J1X8f3ovyGdBAMciMXT71qE+ESvr/ CNs44bhJ6OMJ1fwOdZzyDgog/OtNjTeWbaqDEzXk5lPmISYdycEwJ++TzBLTs/qu g/22GbAyRcMZz1cH1gTUxWWe1MknWdAYswcSXGg0at40ax3SilJ5DN9phPN5msD8 GP2DnNYmg+axh6paCvJj+IV5RPSSQ== X-ME-Sender: X-ME-Proxy-Cause: gggruggvucftvghtrhhoucdtuddrgeduhedrjedvgddugeduucetufdoteggodetrfdotf fvucfrrhhofhhilhgvmecuhfgrshhtofgrihhlpdfqfgfvpdfurfetoffkrfgpnffqhgen uceurghilhhouhhtmecufedttdenucesvcftvggtihhpihgvnhhtshculddquddttddmne cujfgurhephffvufgjfhgffffkgggtgfesthhqredttderjeenucfhrhhomhephfhilhhi phhpucfiuhhnsghinhcuoehfghhunhgsihhnsehfrghsthhmrghilhdrfhhmqeenucggtf frrghtthgvrhhnpeekvdekudelvddtvdelveejgeetudfgvdelgfeftefgkeejheehvefh gfetffeigfenucfkphepkeefrddutddvrddugeejrdelleenucevlhhushhtvghrufhiii gvpedtnecurfgrrhgrmhepmhgrihhlfhhrohhmpehfghhunhgsihhnsehfrghsthhmrghi lhdrfhhm X-ME-Proxy: Received: from fgunbin.local (unknown [83.102.147.99]) by mail.messagingengine.com (Postfix) with ESMTPA id BA17E3065FB4; Sun, 3 May 2020 15:49:20 -0400 (EDT) From: Filipp Gunbin In-Reply-To: <20200503184144.GB24860@breton.holly.idiocy.org> (Alan Third's message of "Sun, 3 May 2020 19:41:44 +0100") References: <20200406184411.GA48827@breton.holly.idiocy.org> <20200416182410.GC52374@breton.holly.idiocy.org> <20200418120714.GA53858@breton.holly.idiocy.org> <20200418152622.GA54462@breton.holly.idiocy.org> <20200503162622.GB4071@breton.holly.idiocy.org> <20200503184144.GB24860@breton.holly.idiocy.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (darwin) Date: Sun, 03 May 2020 22:49:19 +0300 Message-ID: MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Spam-Score: -0.7 (/) 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 (-) On 03/05/2020 19:41 +0100, Alan Third wrote: > On Sun, May 03, 2020 at 08:13:35PM +0300, Filipp Gunbin wrote: >> Hi, I've just filed bug#41055 which is also about NS frame resizing, it >> may have something to do with this... > > Does this patch make any difference to your issue? Or is it the cause? No, not really. > Most likely the commit that=E2=80=99s broken it is > 24cb6908d70c14792c686679cb08091447b9c3b1 Yes, I think so too.