From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED!not-for-mail From: Alan Third Newsgroups: gmane.emacs.devel Subject: Re: Mac OS Sierra tab feature breaks C-x 5 2 Date: Tue, 18 Jul 2017 23:16:29 +0100 Message-ID: <20170718221629.GA55506@breton.holly.idiocy.org> References: <20170710195220.GA21900@breton.holly.idiocy.org> <20170712182321.GA23391@breton.holly.idiocy.org> <20170713202234.GA23777@breton.holly.idiocy.org> <20170716230109.GA54914@breton.holly.idiocy.org> <1ce59431-ff6b-dc89-31a6-8fc5bd4e3926@aurox.ch> NNTP-Posting-Host: blaine.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="uAKRQypu60I7Lcqm" X-Trace: blaine.gmane.org 1500416216 30304 195.159.176.226 (18 Jul 2017 22:16:56 GMT) X-Complaints-To: usenet@blaine.gmane.org NNTP-Posting-Date: Tue, 18 Jul 2017 22:16:56 +0000 (UTC) User-Agent: Mutt/1.7.2 (2016-11-26) Cc: Paul Michael Reilly , Jean-Christophe Helary , Anders Lindgren , Emacs-Devel devel To: "Charles A. Roelli" Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Wed Jul 19 00:16:47 2017 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by blaine.gmane.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dXanK-0007Cd-P3 for ged-emacs-devel@m.gmane.org; Wed, 19 Jul 2017 00:16:42 +0200 Original-Received: from localhost ([::1]:58866 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dXanQ-0003Nb-9b for ged-emacs-devel@m.gmane.org; Tue, 18 Jul 2017 18:16:48 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:56753) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dXanB-0003LC-JY for emacs-devel@gnu.org; Tue, 18 Jul 2017 18:16:34 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dXanA-0001RR-C2 for emacs-devel@gnu.org; Tue, 18 Jul 2017 18:16:33 -0400 Original-Received: from mail-wr0-x22b.google.com ([2a00:1450:400c:c0c::22b]:36242) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dXan9-0001QP-VR for emacs-devel@gnu.org; Tue, 18 Jul 2017 18:16:32 -0400 Original-Received: by mail-wr0-x22b.google.com with SMTP id y43so48604236wrd.3 for ; Tue, 18 Jul 2017 15:16:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlemail.com; s=20161025; h=sender:date:from:to:cc:subject:message-id:references:mime-version :content-disposition:in-reply-to:user-agent; bh=JVpNAv2HmjclD239Jk3vOP3moW8i0sGu+eYvrRx71co=; b=T1scwlLTgsqKY5Pk9sj4pCxmNSN7QSGCLnk++rl7IQmZTLs4jsdx1lgwnrWCkrAXQO O3ybrZt0a7NWQevo3kgahnr9EhGMJYl/9NMhdFYz1rRAFisXDSmFNwHethGfYFDh/cBl kNkwNWmoUYQuwB4WzW6gmIQCDrzW/OObfjN5mdWl2hGPrvTh8QXJqllnS2ET8O8UjCQT xKpLLRNQ8jk5J3OZO2TyFNq2CfZ/KMrOhbexYfTy3c5y7bIsylie2wrMp4u/6lv0Jsk9 EqfC2REruz0oqj8csDOKH7GmpOx6ZniPAxSdVSxbUp2dyH0S6xp1wp5enfRcNkyNXIWg 9I2w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:date:from:to:cc:subject:message-id :references:mime-version:content-disposition:in-reply-to:user-agent; bh=JVpNAv2HmjclD239Jk3vOP3moW8i0sGu+eYvrRx71co=; b=Qs85Ae7EN3CjMXlSu9KeTd4/Yzb1/4E0VSttZodsHbDFkCGY8ITMI3BZRFFfC+NqF4 7X38wTjc+FZ/g+T+9Z+0THx73J1DHjB39DKnLZW+VdijkQjNoJPikRVt9i/4txa/oSw2 tQ8hgVdbH37I9dLrHp5hNqcIAEB0M3s8SaOelRYY13bKFR5UR0fj2ASyf3hQZsD045x/ WY74wr4FMajz0zdx4S2pdTww05kIyBp+OaV7D1BU52vcbGfeJ0WLrvXBhfcv/ZSl8M2P e5Vl8DaVT+kwENT0abnF6W6ZAh31/pUhpRJrPxnHHzaQAKiW1FJb1u0E9VhAAwGxP2AD 3ZOQ== X-Gm-Message-State: AIVw11018F176kUwkIFBMoRceBLd+2OVbB02dHijPKYSeMy+L1q1mvXq Z/ZhvtZVvcWIwg== X-Received: by 10.28.170.194 with SMTP id t185mr3360503wme.114.1500416189444; Tue, 18 Jul 2017 15:16:29 -0700 (PDT) Original-Received: from breton.holly.idiocy.org (ip6-2001-08b0-03f8-8129-38a3-b7bd-bb2f-3561.holly.idiocy.org. [2001:8b0:3f8:8129:38a3:b7bd:bb2f:3561]) by smtp.gmail.com with ESMTPSA id y12sm5255850wrb.39.2017.07.18.15.16.27 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 18 Jul 2017 15:16:27 -0700 (PDT) Content-Disposition: inline In-Reply-To: X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:400c:c0c::22b X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Original-Sender: "Emacs-devel" Xref: news.gmane.org gmane.emacs.devel:216865 Archived-At: --uAKRQypu60I7Lcqm Content-Type: text/plain; charset=us-ascii Content-Disposition: inline On Tue, Jul 18, 2017 at 08:33:05PM +0200, Charles A. Roelli wrote: > It does seem to be gcc: > > (snippet from output of 'make V=1' when compiling src/nsterm.m): > gcc -std=gnu99 -c -Demacs -I. -I. -I../lib -I../lib -D_REENTRANT -I > [...] -MMD -MF deps/nsterm.d -MP -O0 -g3 nsterm.m Can you check whether the attached patch results in a compilation warning from nsterm.m for you, please? -- Alan Third --uAKRQypu60I7Lcqm Content-Type: text/plain; charset=us-ascii Content-Disposition: attachment; filename="0001-Use-a-run-time-check-for-macOS-Sierra-tabbing-suppor.patch" >From dd73f985107937ee1c593f0878bdd5b01178af1c Mon Sep 17 00:00:00 2001 From: Alan Third Date: Thu, 6 Jul 2017 23:10:49 +0100 Subject: [PATCH] Use a run-time check for macOS Sierra tabbing support * src/nsterm.m (initFrameFromEmacs) [NS_IMPL_COCOA]: Switch from compile-time check to run-time. * src/nsterm.h (NSWindowTabbingMode): Define in pre-Sierra macOS. (NS_SILENCE_MISSING_METHOD_WARNING_BEGIN, NS_SILENCE_MISSING_METHOD_WARNING_BEGIN_END): Add #defines for silencing known missing method warnings. --- src/nsterm.h | 33 +++++++++++++++++++++++++++++++++ src/nsterm.m | 8 +++++--- 2 files changed, 38 insertions(+), 3 deletions(-) diff --git a/src/nsterm.h b/src/nsterm.h index 0f1b36db7b..c5b4b17eed 100644 --- a/src/nsterm.h +++ b/src/nsterm.h @@ -1317,6 +1317,39 @@ extern char gnustep_base_version[]; /* version tracking */ #ifdef __OBJC__ typedef NSUInteger NSWindowStyleMask; #endif + +/* Window tabbing mode enums are new too. */ +enum NSWindowTabbingMode + { + NSWindowTabbingModeAutomatic, + NSWindowTabbingModePreferred, + NSWindowTabbingModeDisallowed + }; +#endif + +/* Surround code with the following macros to silence a missing method + * warning from the compiler. This is useful when testing whether a + * method is available on an object, and then calling it if so. + * + * if ([obj respondsToSelector: @selector(methodName)]) + * [obj methodName]; + * + * Where obj doesn't have a selector methodName, the compiler will + * issue a warning. Sometimes we want to build against libraries + * where we don't know if the method exists, for example when a new + * version of Cocoa adds or removes a method. + */ +#if defined (__GNUC__) && !defined (__clang__) +/* gcc doesn't seem to have any way to silence this warning. */ +#define NS_SILENCE_MISSING_METHOD_WARNING_BEGIN +#define NS_SILENCE_MISSING_METHOD_WARNING_BEGIN_END + +#elif defined (__clang__) +#define NS_SILENCE_MISSING_METHOD_WARNING_BEGIN \ + _Pragma ("clang diagnostic push") \ + _Pragma ("clang diagnostic ignored \"-Wobjc-method-access\"") +#define NS_SILENCE_MISSING_METHOD_WARNING_BEGIN_END \ + _Pragma ("clang diagnostic pop") #endif #endif /* HAVE_NS */ diff --git a/src/nsterm.m b/src/nsterm.m index a3c7031331..e1ce05b978 100644 --- a/src/nsterm.m +++ b/src/nsterm.m @@ -7091,9 +7091,11 @@ - (instancetype) initFrameFromEmacs: (struct frame *)f /* 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. */ -#if defined (NS_IMPL_COCOA) && \ - MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_12 - [win setTabbingMode: NSWindowTabbingModeDisallowed]; +#ifdef NS_IMPL_COCOA + NS_SILENCE_MISSING_METHOD_WARNING_BEGIN + if ([win respondsToSelector: @selector(setTabbingMode:)]) + [win setTabbingMode: NSWindowTabbingModeDisallowed]; + NS_SILENCE_MISSING_METHOD_WARNING_BEGIN_END #endif ns_window_num++; -- 2.12.0 --uAKRQypu60I7Lcqm--