From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Alan Third Newsgroups: gmane.emacs.bugs Subject: bug#54623: No scroll bars on macOS builds Date: Wed, 30 Mar 2022 22:52:59 +0100 Message-ID: References: <542747779.525811.1648554603075@mail1.libero.it> <875ynxapxv.fsf@gnus.org> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="tpRACxC3DaU3rpSp" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="10490"; mail-complaints-to="usenet@ciao.gmane.io" Cc: 54623@debbugs.gnu.org, Angelo Graziosi To: Lars Ingebrigtsen Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Wed Mar 30 23:54:35 2022 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1nZgGu-0002PL-UR for geb-bug-gnu-emacs@m.gmane-mx.org; Wed, 30 Mar 2022 23:54:33 +0200 Original-Received: from localhost ([::1]:40654 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nZgGt-0001EX-Tp for geb-bug-gnu-emacs@m.gmane-mx.org; Wed, 30 Mar 2022 17:54:31 -0400 Original-Received: from eggs.gnu.org ([209.51.188.92]:40662) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nZgGQ-0000UE-Np for bug-gnu-emacs@gnu.org; Wed, 30 Mar 2022 17:54:03 -0400 Original-Received: from debbugs.gnu.org ([209.51.188.43]:43344) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1nZgGQ-0007kS-Ee for bug-gnu-emacs@gnu.org; Wed, 30 Mar 2022 17:54:02 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1nZgGQ-0004Rj-5z for bug-gnu-emacs@gnu.org; Wed, 30 Mar 2022 17:54:02 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Alan Third Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Wed, 30 Mar 2022 21:54:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 54623 X-GNU-PR-Package: emacs Original-Received: via spool by 54623-submit@debbugs.gnu.org id=B54623.164867719217028 (code B ref 54623); Wed, 30 Mar 2022 21:54:02 +0000 Original-Received: (at 54623) by debbugs.gnu.org; 30 Mar 2022 21:53:12 +0000 Original-Received: from localhost ([127.0.0.1]:37241 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nZgFb-0004Qa-NV for submit@debbugs.gnu.org; Wed, 30 Mar 2022 17:53:12 -0400 Original-Received: from outbound.soverin.net ([116.202.126.228]:38383) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nZgFZ-0004QJ-IO for 54623@debbugs.gnu.org; Wed, 30 Mar 2022 17:53:10 -0400 Original-Received: from smtp.soverin.net (unknown [10.10.3.11]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) (No client certificate requested) by outbound.soverin.net (Postfix) with ESMTPS id 831A61F1; Wed, 30 Mar 2022 21:53:02 +0000 (UTC) Original-Received: from smtp.soverin.net (smtp.soverin.net [10.10.4.99]) by soverin.net DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=idiocy.org; s=soverin; t=1648677181; bh=GHqGSp0EJoVnq9UhNBIA3TYxSPZI3s29DVTjrZxSDsc=; h=Date:From:To:Cc:Subject:References:In-Reply-To:From; b=pQqOw+o2yMwUzgNXaN6JiwZpzchahCZZq9wIDgHB4QtRDd0mstZxKsSlHMd2Ox4t3 uTJH5MMprXUeChAc7d8YuQdH7KHohi6qo5SnicbhogutXVXfTPByBv+TCQQHsY6/my efsEWswdc4QRosYOosuP1LU4USfMcEIQEgbvhk564bhgA4pTOZ9hLYkNttwbN/PpuT dbDktoI+m+dsP+EJa4aE+jZg1DcZrjhHNF2IMXRGCJuqaFO+ZJ6pYDTeplL/Td/0cd pVnb6EruCAgacwfVbTJlgvN4ASuTBhAUi6a6XEL3nUQ2QlvSqAV7LXRky99H57lD/P M1etyHPKHzvcg== Original-Received: from alan by faroe.holly.idiocy.org with local (Exim 4.95) (envelope-from ) id 1nZgFP-000DQZ-JC; Wed, 30 Mar 2022 22:52:59 +0100 Mail-Followup-To: Alan Third , Lars Ingebrigtsen , Angelo Graziosi , 54623@debbugs.gnu.org Content-Disposition: inline In-Reply-To: <875ynxapxv.fsf@gnus.org> X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Original-Sender: "bug-gnu-emacs" Xref: news.gmane.io gmane.emacs.bugs:229129 Archived-At: --tpRACxC3DaU3rpSp Content-Type: text/plain; charset=us-ascii Content-Disposition: inline On Tue, Mar 29, 2022 at 02:44:28PM +0200, Lars Ingebrigtsen wrote: > Angelo Graziosi writes: > > > Emacs builds on macOS 10.13.6 do not show scroll bars even if both > > vertical and horizontal ones are enabled. The attached screenshot > > refers to 'Emacs -Q'. > > I can't reproduce this on Macos 12.1. I can't reproduce it on 10.14 either. I suspect it's some subtle difference in layer handling between 10.13 and 10.14+. > > The first build in which scroll bars are gone or hidden looks > > > > 2) > > commit: a4d2c88cdee90a3e4863a62c4ff69896d0c1a347 > > Alan Third 2021-07-31 11:13:05 +0100 > > Simplify macOS drawing code > > Perhaps Alan has some comments; added to the CCs. Maybe the attached will help. -- Alan Third --tpRACxC3DaU3rpSp Content-Type: text/x-diff; charset=us-ascii Content-Disposition: attachment; filename="0001-Fix-scrollbars-on-macOS-10.13-and-below-bug-54623.patch" >From aef95a32f2260fdadbbd0903b5d3bb0b1220a9db Mon Sep 17 00:00:00 2001 From: Alan Third Date: Wed, 30 Mar 2022 22:40:03 +0100 Subject: [PATCH] Fix scrollbars on macOS 10.13 and below (bug#54623) * src/nsterm.h (NSAppKitVersionNumber10_14): Required for makeBackingLayer version check. * src/nsterm.m (USING_EMACSLAYER): Check whether we're using layers and whether the layer is an EmacsLayer class. ([EmacsView makeBackingLayer]): Only use EmacsLayer on macOS 10.14 and above. ([EmacsView lockFocus]): ([EmacsView unlockFocus]): ([EmacsView windowDidChangeBackingProperties:]): ([EmacsView copyRect:to:]): Replace check for wantsLayer with USING_EMACSLAYER. --- src/nsterm.h | 4 ++++ src/nsterm.m | 26 +++++++++++++++++--------- 2 files changed, 21 insertions(+), 9 deletions(-) diff --git a/src/nsterm.h b/src/nsterm.h index f027646123..ea92d8e893 100644 --- a/src/nsterm.h +++ b/src/nsterm.h @@ -1239,6 +1239,10 @@ #define NSAppKitVersionNumber10_7 1138 #ifndef NSAppKitVersionNumber10_10 #define NSAppKitVersionNumber10_10 1343 #endif + +#ifndef NSAppKitVersionNumber10_14 +#define NSAppKitVersionNumber10_14 1671 +#endif #endif /* NS_IMPL_COCOA */ diff --git a/src/nsterm.m b/src/nsterm.m index fd56094c28..b9ae512011 100644 --- a/src/nsterm.m +++ b/src/nsterm.m @@ -5954,6 +5954,9 @@ - (BOOL)fulfillService: (NSString *)name withArg: (NSString *)arg @implementation EmacsView +#define USING_EMACSLAYER \ + ([self wantsLayer] && [[self layer] isKindOfClass:[EmacsLayer class]]) + /* Needed to inform when window closed from lisp. */ - (void) setWindowClosing: (BOOL)closing { @@ -7864,12 +7867,17 @@ - (instancetype)toggleToolbar: (id)sender #ifdef NS_IMPL_COCOA - (CALayer *)makeBackingLayer; { - EmacsLayer *l = [[EmacsLayer alloc] - initWithColorSpace:[[[self window] colorSpace] CGColorSpace]]; - [l setDelegate:(id)self]; - [l setContentsScale:[[self window] backingScaleFactor]]; + if (NSAppKitVersionNumber >= NSAppKitVersionNumber10_14) + { + EmacsLayer *l = [[EmacsLayer alloc] + initWithColorSpace:[[[self window] colorSpace] CGColorSpace]]; + [l setDelegate:(id)self]; + [l setContentsScale:[[self window] backingScaleFactor]]; + + return l; + } - return l; + return [super makeBackingLayer]; } @@ -7877,7 +7885,7 @@ - (void)lockFocus { NSTRACE ("[EmacsView lockFocus]"); - if ([self wantsLayer]) + if (USING_EMACSLAYER) { CGContextRef context = [(EmacsLayer*)[self layer] getContext]; @@ -7897,7 +7905,7 @@ - (void)unlockFocus { NSTRACE ("[EmacsView unlockFocus]"); - if ([self wantsLayer]) + if (USING_EMACSLAYER) { [NSGraphicsContext setCurrentContext:nil]; [self setNeedsDisplay:YES]; @@ -7917,7 +7925,7 @@ - (void)windowDidChangeBackingProperties:(NSNotification *)notification { NSTRACE ("EmacsView windowDidChangeBackingProperties:]"); - if ([self wantsLayer]) + if (USING_EMACSLAYER) { NSRect frame = [self frame]; EmacsLayer *layer = (EmacsLayer *)[self layer]; @@ -7942,7 +7950,7 @@ - (void)copyRect:(NSRect)srcRect to:(NSPoint)dest NSHeight (srcRect)); #ifdef NS_IMPL_COCOA - if ([self wantsLayer]) + if (USING_EMACSLAYER) { double scale = [[self window] backingScaleFactor]; CGContextRef context = [(EmacsLayer *)[self layer] getContext]; -- 2.35.1 --tpRACxC3DaU3rpSp--