From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED.blaine.gmane.org!not-for-mail From: Alex Newsgroups: gmane.emacs.bugs Subject: bug#34885: [PATCH] Define macros to abstract support for external menu/tool-bars Date: Sat, 16 Mar 2019 12:12:13 -0600 Message-ID: <87lg1elmde.fsf@gmail.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" Injection-Info: blaine.gmane.org; posting-host="blaine.gmane.org:195.159.176.226"; logging-data="165582"; mail-complaints-to="usenet@blaine.gmane.org" User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.1 (gnu/linux) To: 34885@debbugs.gnu.org Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Sat Mar 16 19:17:26 2019 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([209.51.188.17]) by blaine.gmane.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1h5Ds3-000gwp-Nd for geb-bug-gnu-emacs@m.gmane.org; Sat, 16 Mar 2019 19:17:24 +0100 Original-Received: from localhost ([127.0.0.1]:44810 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1h5Ds2-0001xU-Le for geb-bug-gnu-emacs@m.gmane.org; Sat, 16 Mar 2019 14:17:22 -0400 Original-Received: from eggs.gnu.org ([209.51.188.92]:47081) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1h5Drm-0001vq-NE for bug-gnu-emacs@gnu.org; Sat, 16 Mar 2019 14:17:11 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1h5Dri-0006xo-R0 for bug-gnu-emacs@gnu.org; Sat, 16 Mar 2019 14:17:06 -0400 Original-Received: from debbugs.gnu.org ([209.51.188.43]:33148) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1h5Dri-0006wC-AW for bug-gnu-emacs@gnu.org; Sat, 16 Mar 2019 14:17:02 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1h5Dri-00037h-3g for bug-gnu-emacs@gnu.org; Sat, 16 Mar 2019 14:17:02 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Alex Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sat, 16 Mar 2019 18:17:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 34885 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch X-Debbugs-Original-To: bug-gnu-emacs@gnu.org Original-Received: via spool by submit@debbugs.gnu.org id=B.155276018511948 (code B ref -1); Sat, 16 Mar 2019 18:17:01 +0000 Original-Received: (at submit) by debbugs.gnu.org; 16 Mar 2019 18:16:25 +0000 Original-Received: from localhost ([127.0.0.1]:46692 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1h5Dr6-00036d-PI for submit@debbugs.gnu.org; Sat, 16 Mar 2019 14:16:25 -0400 Original-Received: from eggs.gnu.org ([209.51.188.92]:60741) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1h5Dr4-00036K-M0 for submit@debbugs.gnu.org; Sat, 16 Mar 2019 14:16:23 -0400 Original-Received: from lists.gnu.org ([209.51.188.17]:38296) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1h5Dqz-0006XK-A9 for submit@debbugs.gnu.org; Sat, 16 Mar 2019 14:16:17 -0400 Original-Received: from eggs.gnu.org ([209.51.188.92]:46821) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1h5Dqw-0001T5-VH for bug-gnu-emacs@gnu.org; Sat, 16 Mar 2019 14:16:17 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1h5Dng-0005D5-OJ for bug-gnu-emacs@gnu.org; Sat, 16 Mar 2019 14:12:55 -0400 Original-Received: from mail-it1-x12b.google.com ([2607:f8b0:4864:20::12b]:36690) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1h5Dng-0005CS-3Q for bug-gnu-emacs@gnu.org; Sat, 16 Mar 2019 14:12:52 -0400 Original-Received: by mail-it1-x12b.google.com with SMTP id h9so15788201itl.1 for ; Sat, 16 Mar 2019 11:12:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:subject:date:message-id:user-agent:mime-version; bh=GxObvg1DsHHCog/Ym+/RtqZEoOwHA1IRBOB+ZW9NSOw=; b=rrESGFaiA4qwaMMf2sFQe15X5QKZu//lraP6T3IYCOcD7qCoaS/cjvPatI9brMsWiV /FdFsuuCew+lJ+MlIb8BiBtLU+kESdGejEDnFPn+ERQMVowYJBMicj71KtnWxB4Tc/Wq 65uFmtRrPtaig87VRGh/5zM54ZfPkl1MS5TthyHlrU09XftRg/MdxwRpW9CXMAOJU2dK xW/lvmnDsxme5Y9HG/eJrzOChYLWOQ/SiRGOsEGbjm+s0yQpR18RfrP/Toohcl6oyvQq H93Mr07p4rftvEkYcxfNEq5K0REVFblLOgr4KQdtymvgDVJFCTv8Y80lYOtP2gADn5ze KuLw== 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:user-agent :mime-version; bh=GxObvg1DsHHCog/Ym+/RtqZEoOwHA1IRBOB+ZW9NSOw=; b=EpM2sZiysXXlG/gUCXlijQrUMra4RcV8JINipKaBSiihOLOLoHHkThH/b/x9z/zkhN EXIjJ9hXf9BYCirdxa0ummMExMknExAIkqz6cokezsSKUkxV6KKkMLenEqZYdDiFcpCC 5q8CdFFWGh7jTaHVjKU+n685Y4be10lbBhsb86wUcu8WKDUngrKmKC1u048BGHy6uSq9 09v0P1tdDgdPP78kgmG4kaERT8lil28tYIpsUW+HyXmJfkQ8qEFXn6RrlYaabidA91um wShqEzMPzgUPsl1sUCnniJ2udsVJ943Z5E7mmpKomgdzhfyH6VB3qocxIM1A86ZkPUWz PpZA== X-Gm-Message-State: APjAAAXKxURODJuIAH2uteA/IFAu6inuT/vLKlz3+U6bTZTu4yMITqr6 5mhTncrKPz/gXjAtYQbR4UpNhfLC X-Google-Smtp-Source: APXvYqy13LD40TdifVT3eRKoGOuJ+SgLMu+ijxqpYPP+e3JT63jjG9fNLIsjZeCiOFoorxXCmdkZZw== X-Received: by 2002:a05:660c:1:: with SMTP id q1mr5379281itj.98.1552759970685; Sat, 16 Mar 2019 11:12:50 -0700 (PDT) Original-Received: from lylat (S010664777d9cebe3.ss.shawcable.net. [70.64.85.59]) by smtp.gmail.com with ESMTPSA id t19sm2178168iol.72.2019.03.16.11.12.49 for (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Sat, 16 Mar 2019 11:12:49 -0700 (PDT) X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 209.51.188.43 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.org@gnu.org Original-Sender: "bug-gnu-emacs" Xref: news.gmane.org gmane.emacs.bugs:156412 Archived-At: --=-=-= Content-Type: text/plain This should help readability and to ease possible addition of new window systems that support external menu bars or tool-bars. Is this okay to apply? --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=0001-Define-macros-to-abstract-support-for-external-menu-.patch Content-Description: Macros >From 0588fb635645ab954bdf8b9557970455c217b591 Mon Sep 17 00:00:00 2001 From: Alexander Gramiak Date: Sat, 16 Mar 2019 11:46:39 -0600 Subject: [PATCH] Define macros to abstract support for external menu/tool-bars * src/window.h (HAVE_EXT_MENU_BAR): (HAVE_EXT_TOOL_BAR): Define and use. *src/dispnew.c: *src/frame.c: *src/frame.h: *src/keyboard.c: *src/menu.c: *src/menu.h: *src/window.c: *src/xdisp.c: *src/xfns: Use the new macros. --- src/dispnew.c | 10 +++++----- src/frame.c | 6 +++--- src/frame.h | 22 ++++++++++------------ src/keyboard.c | 13 +++++-------- src/menu.c | 5 ++--- src/menu.h | 3 +-- src/window.c | 4 ++-- src/window.h | 13 ++++++++++++- src/xdisp.c | 43 ++++++++++++++++++++----------------------- src/xfns.c | 4 ++-- 10 files changed, 62 insertions(+), 61 deletions(-) diff --git a/src/dispnew.c b/src/dispnew.c index 7596528fed..ccb08ec1b9 100644 --- a/src/dispnew.c +++ b/src/dispnew.c @@ -767,7 +767,7 @@ clear_current_matrices (register struct frame *f) clear_glyph_matrix (XWINDOW (f->menu_bar_window)->current_matrix); #endif -#if defined (HAVE_WINDOW_SYSTEM) && ! defined (USE_GTK) && ! defined (HAVE_NS) +#if defined (HAVE_WINDOW_SYSTEM) && ! defined (HAVE_EXT_TOOL_BAR) /* Clear the matrix of the tool-bar window, if any. */ if (WINDOWP (f->tool_bar_window)) clear_glyph_matrix (XWINDOW (f->tool_bar_window)->current_matrix); @@ -792,7 +792,7 @@ clear_desired_matrices (register struct frame *f) clear_glyph_matrix (XWINDOW (f->menu_bar_window)->desired_matrix); #endif -#if defined (HAVE_WINDOW_SYSTEM) && ! defined (USE_GTK) && ! defined (HAVE_NS) +#if defined (HAVE_WINDOW_SYSTEM) && ! defined (HAVE_EXT_TOOL_BAR) if (WINDOWP (f->tool_bar_window)) clear_glyph_matrix (XWINDOW (f->tool_bar_window)->desired_matrix); #endif @@ -2106,7 +2106,7 @@ adjust_frame_glyphs_for_window_redisplay (struct frame *f) } #endif -#if defined (HAVE_WINDOW_SYSTEM) && ! defined (USE_GTK) && ! defined (HAVE_NS) +#if defined (HAVE_WINDOW_SYSTEM) && ! defined (HAVE_EXT_TOOL_BAR) { /* Allocate/ reallocate matrices of the tool bar window. If we don't have a tool bar window yet, make one. */ @@ -2188,7 +2188,7 @@ free_glyphs (struct frame *f) } #endif -#if defined (HAVE_WINDOW_SYSTEM) && ! defined (USE_GTK) && ! defined (HAVE_NS) +#if defined (HAVE_WINDOW_SYSTEM) && ! defined (HAVE_EXT_TOOL_BAR) /* Free the tool bar window and its glyph matrices. */ if (!NILP (f->tool_bar_window)) { @@ -3082,7 +3082,7 @@ update_frame (struct frame *f, bool force_p, bool inhibit_hairy_id_p) update_window (XWINDOW (f->menu_bar_window), true); #endif -#if defined (HAVE_WINDOW_SYSTEM) && ! defined (USE_GTK) && ! defined (HAVE_NS) +#if defined (HAVE_WINDOW_SYSTEM) && ! defined (HAVE_EXT_TOOL_BAR) /* Update the tool-bar window, if present. */ if (WINDOWP (f->tool_bar_window)) { diff --git a/src/frame.c b/src/frame.c index 46bdf22231..d0c77149ba 100644 --- a/src/frame.c +++ b/src/frame.c @@ -70,7 +70,7 @@ static struct frame *last_nonminibuf_frame; bool frame_garbaged; /* The default tool bar height for future frames. */ -#if defined USE_GTK || defined HAVE_NS +#ifdef HAVE_EXT_TOOL_BAR enum { frame_default_tool_bar_height = 0 }; #else int frame_default_tool_bar_height; @@ -712,7 +712,7 @@ adjust_frame_size (struct frame *f, int new_width, int new_height, int inhibit, if ((FRAME_TERMCAP_P (f) && !pretend) || FRAME_MSDOS_P (f)) FrameCols (FRAME_TTY (f)) = new_cols; -#if defined (HAVE_WINDOW_SYSTEM) && ! defined (USE_GTK) && ! defined (HAVE_NS) +#if defined (HAVE_WINDOW_SYSTEM) && ! defined (HAVE_EXT_TOOL_BAR) if (WINDOWP (f->tool_bar_window)) { XWINDOW (f->tool_bar_window)->pixel_width = new_windows_width; @@ -848,7 +848,7 @@ make_frame (bool mini_p) f->no_accept_focus = false; f->z_group = z_group_none; f->tooltip = false; -#if ! defined (USE_GTK) && ! defined (HAVE_NS) +#ifndef HAVE_EXT_TOOL_BAR f->last_tool_bar_item = -1; #endif #ifdef NS_IMPL_COCOA diff --git a/src/frame.h b/src/frame.h index 5bac24b077..ed62e7ace0 100644 --- a/src/frame.h +++ b/src/frame.h @@ -181,7 +181,7 @@ struct frame Lisp_Object menu_bar_window; #endif -#if defined (HAVE_WINDOW_SYSTEM) && ! defined (USE_GTK) && ! defined (HAVE_NS) +#if defined (HAVE_WINDOW_SYSTEM) && ! defined (HAVE_EXT_TOOL_BAR) /* A window used to display the tool-bar of a frame. */ Lisp_Object tool_bar_window; @@ -209,7 +209,7 @@ struct frame /* Cache of realized faces. */ struct face_cache *face_cache; -#if defined (HAVE_WINDOW_SYSTEM) && ! defined (USE_GTK) && ! defined (HAVE_NS) +#if defined (HAVE_WINDOW_SYSTEM) && ! defined (HAVE_EXT_TOOL_BAR) /* Tool-bar item index of the item on which a mouse button was pressed. */ int last_tool_bar_item; #endif @@ -257,13 +257,13 @@ struct frame /* Set to true when current redisplay has updated frame. */ bool_bf updated_p : 1; -#if defined (HAVE_WINDOW_SYSTEM) && ! defined (USE_GTK) && ! defined (HAVE_NS) +#if defined (HAVE_WINDOW_SYSTEM) && ! defined (HAVE_EXT_TOOL_BAR) /* Set to true to minimize tool-bar height even when auto-resize-tool-bar is set to grow-only. */ bool_bf minimize_tool_bar_window_p : 1; #endif -#if defined (USE_GTK) || defined (HAVE_NS) +#ifdef HAVE_EXT_TOOL_BAR /* True means using a tool bar that comes from the toolkit. */ bool_bf external_tool_bar : 1; #endif @@ -278,9 +278,8 @@ struct frame /* True if it needs to be redisplayed. */ bool_bf redisplay : 1; -#if defined (USE_X_TOOLKIT) || defined (HAVE_NTGUI) \ - || defined (HAVE_NS) || defined (USE_GTK) - /* True means using a menu bar that comes from the X toolkit. */ +#ifdef HAVE_EXT_MENU_BAR + /* True means using a menu bar that comes from the toolkit. */ bool_bf external_menu_bar : 1; #endif @@ -714,7 +713,7 @@ fset_tool_bar_position (struct frame *f, Lisp_Object val) f->tool_bar_position = val; } #endif /* USE_GTK */ -#if defined (HAVE_WINDOW_SYSTEM) && ! defined (USE_GTK) && ! defined (HAVE_NS) +#if defined (HAVE_WINDOW_SYSTEM) && ! defined (HAVE_EXT_TOOL_BAR) INLINE void fset_tool_bar_window (struct frame *f, Lisp_Object val) { @@ -882,7 +881,7 @@ default_pixels_per_inch_y (void) /* True if this frame should display a tool bar in a way that does not use any text lines. */ -#if defined (USE_GTK) || defined (HAVE_NS) +#ifdef HAVE_EXT_TOOL_BAR #define FRAME_EXTERNAL_TOOL_BAR(f) (f)->external_tool_bar #else #define FRAME_EXTERNAL_TOOL_BAR(f) false @@ -911,8 +910,7 @@ default_pixels_per_inch_y (void) /* True if this frame should display a menu bar in a way that does not use any text lines. */ -#if defined (USE_X_TOOLKIT) || defined (HAVE_NTGUI) \ - || defined (HAVE_NS) || defined (USE_GTK) +#ifdef HAVE_EXT_MENU_BAR #define FRAME_EXTERNAL_MENU_BAR(f) (f)->external_menu_bar #else #define FRAME_EXTERNAL_MENU_BAR(f) false @@ -1258,7 +1256,7 @@ SET_FRAME_VISIBLE (struct frame *f, int v) extern Lisp_Object selected_frame; extern Lisp_Object old_selected_frame; -#if ! (defined USE_GTK || defined HAVE_NS) +#ifndef HAVE_EXT_TOOL_BAR extern int frame_default_tool_bar_height; #endif diff --git a/src/keyboard.c b/src/keyboard.c index 760cd623f6..22e4377ee8 100644 --- a/src/keyboard.c +++ b/src/keyboard.c @@ -3869,8 +3869,7 @@ kbd_buffer_get_event (KBOARD **kbp, } break; -#if defined (USE_X_TOOLKIT) || defined (HAVE_NTGUI) \ - || defined (HAVE_NS) || defined (USE_GTK) +#ifdef HAVE_EXT_MENU_BAR case MENU_BAR_ACTIVATE_EVENT: { kbd_fetch_ptr = next_kbd_event (event); @@ -3950,8 +3949,7 @@ kbd_buffer_get_event (KBOARD **kbp, { obj = make_lispy_event (&event->ie); -#if defined (USE_X_TOOLKIT) || defined (HAVE_NTGUI) \ - || defined (HAVE_NS) || defined (USE_GTK) +#ifdef HAVE_EXT_MENU_BAR /* If this was a menu selection, then set the flag to inhibit writing to last_nonmenu_event. Don't do this if the event we're returning is (menu-bar), though; that indicates the @@ -5232,7 +5230,7 @@ make_lispy_position (struct frame *f, Lisp_Object x, Lisp_Object y, static bool toolkit_menubar_in_use (struct frame *f) { -#if defined (USE_X_TOOLKIT) || defined (USE_GTK) || defined (HAVE_NS) || defined (HAVE_NTGUI) +#ifdef HAVE_EXT_MENU_BAR return !(!FRAME_WINDOW_P (f)); #else return false; @@ -5925,8 +5923,7 @@ make_lispy_event (struct input_event *event) return list3 (head, position, files); } -#if defined (USE_X_TOOLKIT) || defined (HAVE_NTGUI) \ - || defined (HAVE_NS) || defined (USE_GTK) +#ifdef HAVE_EXT_MENU_BAR case MENU_BAR_EVENT: if (EQ (event->arg, event->frame_or_window)) /* This is the prefix key. We translate this to @@ -8136,7 +8133,7 @@ parse_tool_bar_item (Lisp_Object key, Lisp_Object item) if (menu_separator_name_p (SSDATA (caption))) { set_prop (TOOL_BAR_ITEM_TYPE, Qt); -#if !defined (USE_GTK) && !defined (HAVE_NS) +#ifndef HAVE_EXT_TOOL_BAR /* If we use build_desired_tool_bar_string to render the tool bar, the separator is rendered as an image. */ set_prop (TOOL_BAR_ITEM_IMAGES, diff --git a/src/menu.c b/src/menu.c index 7d255fddac..7f46e68e73 100644 --- a/src/menu.c +++ b/src/menu.c @@ -170,8 +170,7 @@ ensure_menu_items (int items) } } -#if (defined USE_X_TOOLKIT || defined USE_GTK || defined HAVE_NS \ - || defined HAVE_NTGUI) +#ifdef HAVE_EXT_MENU_BAR /* Begin a submenu. */ @@ -195,7 +194,7 @@ push_submenu_end (void) menu_items_submenu_depth--; } -#endif /* USE_X_TOOLKIT || USE_GTK || HAVE_NS || defined HAVE_NTGUI */ +#endif /* HAVE_EXT_MENU_BAR */ /* Indicate boundary between left and right. */ diff --git a/src/menu.h b/src/menu.h index d425cdf010..0321c27454 100644 --- a/src/menu.h +++ b/src/menu.h @@ -35,8 +35,7 @@ extern void discard_menu_items (void); extern void save_menu_items (void); extern bool parse_single_submenu (Lisp_Object, Lisp_Object, Lisp_Object); extern void list_of_panes (Lisp_Object); -#if defined (USE_X_TOOLKIT) || defined (USE_GTK) || defined (HAVE_NTGUI) \ - || defined (HAVE_NS) +#ifdef HAVE_EXT_MENU_BAR extern void free_menubar_widget_value_tree (widget_value *); extern void update_submenu_strings (widget_value *); extern void find_and_call_menu_selection (struct frame *, int, diff --git a/src/window.c b/src/window.c index ae039b76ad..85d7bcade9 100644 --- a/src/window.c +++ b/src/window.c @@ -1599,7 +1599,7 @@ window_from_coordinates (struct frame *f, int x, int y, cw.window = &window, cw.x = x, cw.y = y; cw.part = part; foreach_window (f, check_window_containing, &cw); -#if defined (HAVE_WINDOW_SYSTEM) && ! defined (USE_GTK) && ! defined (HAVE_NS) +#if defined (HAVE_WINDOW_SYSTEM) && ! defined (HAVE_EXT_TOOL_BAR) /* If not found above, see if it's in the tool bar window, if a tool bar exists. */ if (NILP (window) @@ -6398,7 +6398,7 @@ and redisplay normally--don't erase and redraw the frame. */) /* Invalidate pixel data calculated for all compositions. */ for (i = 0; i < n_compositions; i++) composition_table[i]->font = NULL; -#if defined (HAVE_WINDOW_SYSTEM) && ! defined (USE_GTK) && ! defined (HAVE_NS) +#if defined (HAVE_WINDOW_SYSTEM) && ! defined (HAVE_EXT_TOOL_BAR) WINDOW_XFRAME (w)->minimize_tool_bar_window_p = 1; #endif Fredraw_frame (WINDOW_FRAME (w)); diff --git a/src/window.h b/src/window.h index b450173eb2..8090096fb8 100644 --- a/src/window.h +++ b/src/window.h @@ -728,6 +728,17 @@ wset_next_buffers (struct window *w, Lisp_Object val) (FRAME_INTERNAL_BORDER_WIDTH (WINDOW_XFRAME (W)) \ + WINDOW_RIGHT_PIXEL_EDGE (W)) +/* Define if the windowing system provides a menu bar. */ +#if defined (USE_X_TOOLKIT) || defined (HAVE_NTGUI) \ + || defined (HAVE_NS) || defined (USE_GTK) +#define HAVE_EXT_MENU_BAR true +#endif + +/* Define if the windowing system provides a tool-bar. */ +#if defined (USE_GTK) || defined (HAVE_NS) +#define HAVE_EXT_TOOL_BAR true +#endif + /* True if W is a menu bar window. */ #if defined (HAVE_X_WINDOWS) && ! defined (USE_X_TOOLKIT) && ! defined (USE_GTK) #define WINDOW_MENU_BAR_P(W) \ @@ -739,7 +750,7 @@ wset_next_buffers (struct window *w, Lisp_Object val) #endif /* True if W is a tool bar window. */ -#if defined (HAVE_WINDOW_SYSTEM) && ! defined (USE_GTK) && ! defined (HAVE_NS) +#if defined (HAVE_WINDOW_SYSTEM) && ! defined (HAVE_EXT_TOOL_BAR) #define WINDOW_TOOL_BAR_P(W) \ (WINDOWP (WINDOW_XFRAME (W)->tool_bar_window) \ && (W) == XWINDOW (WINDOW_XFRAME (W)->tool_bar_window)) diff --git a/src/xdisp.c b/src/xdisp.c index 5ae8fc1cf6..3172b3be89 100644 --- a/src/xdisp.c +++ b/src/xdisp.c @@ -12237,8 +12237,7 @@ update_menu_bar (struct frame *f, bool save_match_data, bool hooks_run) if (FRAME_WINDOW_P (f) ? -#if defined (USE_X_TOOLKIT) || defined (HAVE_NTGUI) \ - || defined (HAVE_NS) || defined (USE_GTK) +#ifdef HAVE_EXT_MENU_BAR FRAME_EXTERNAL_MENU_BAR (f) #else FRAME_MENU_BAR_LINES (f) > 0 @@ -12291,8 +12290,7 @@ update_menu_bar (struct frame *f, bool save_match_data, bool hooks_run) fset_menu_bar_items (f, menu_bar_items (FRAME_MENU_BAR_ITEMS (f))); /* Redisplay the menu bar in case we changed it. */ -#if defined (USE_X_TOOLKIT) || defined (HAVE_NTGUI) \ - || defined (HAVE_NS) || defined (USE_GTK) +#ifdef HAVE_EXT_MENU_BAR if (FRAME_WINDOW_P (f)) { #if defined (HAVE_NS) @@ -12306,11 +12304,11 @@ update_menu_bar (struct frame *f, bool save_match_data, bool hooks_run) /* On a terminal screen, the menu bar is an ordinary screen line, and this makes it get updated. */ w->update_mode_line = true; -#else /* ! (USE_X_TOOLKIT || HAVE_NTGUI || HAVE_NS || USE_GTK) */ +#else /* ! (HAVE_EXT_MENU_BAR) */ /* In the non-toolkit version, the menu bar is an ordinary screen line, and this makes it get updated. */ w->update_mode_line = true; -#endif /* ! (USE_X_TOOLKIT || HAVE_NTGUI || HAVE_NS || USE_GTK) */ +#endif /* HAVE_EXT_MENU_BAR */ unbind_to (count, Qnil); set_buffer_internal_1 (prev); @@ -12348,7 +12346,7 @@ fast_set_selected_frame (Lisp_Object frame) static void update_tool_bar (struct frame *f, bool save_match_data) { -#if defined (USE_GTK) || defined (HAVE_NS) +#ifdef HAVE_EXT_TOOL_BAR bool do_update = FRAME_EXTERNAL_TOOL_BAR (f); #else bool do_update = (WINDOWP (f->tool_bar_window) @@ -12433,7 +12431,7 @@ update_tool_bar (struct frame *f, bool save_match_data) } } -#if ! defined (USE_GTK) && ! defined (HAVE_NS) +#ifndef HAVE_EXT_TOOL_BAR /* Set F->desired_tool_bar_string to a Lisp string representing frame F's desired tool-bar contents. F->tool_bar_items must have @@ -12768,7 +12766,7 @@ tool_bar_height (struct frame *f, int *n_rows, bool pixelwise) return (it.current_y + FRAME_LINE_HEIGHT (f) - 1) / FRAME_LINE_HEIGHT (f); } -#endif /* !USE_GTK && !HAVE_NS */ +#endif /* ! (HAVE_EXT_TOOL_BAR) */ DEFUN ("tool-bar-height", Ftool_bar_height, Stool_bar_height, 0, 2, 0, @@ -12779,7 +12777,7 @@ PIXELWISE non-nil means return the height of the tool bar in pixels. */) { int height = 0; -#if ! defined (USE_GTK) && ! defined (HAVE_NS) +#ifndef HAVE_EXT_TOOL_BAR struct frame *f = decode_any_frame (frame); if (WINDOWP (f->tool_bar_window) @@ -12804,13 +12802,13 @@ static bool redisplay_tool_bar (struct frame *f) { f->tool_bar_redisplayed = true; -#if defined (USE_GTK) || defined (HAVE_NS) +#ifdef HAVE_EXT_TOOL_BAR if (FRAME_EXTERNAL_TOOL_BAR (f)) update_frame_tool_bar (f); return false; -#else /* !USE_GTK && !HAVE_NS */ +#else /* ! (HAVE_EXT_TOOL_BAR) */ struct window *w; struct it it; @@ -12959,10 +12957,10 @@ redisplay_tool_bar (struct frame *f) f->minimize_tool_bar_window_p = false; return false; -#endif /* USE_GTK || HAVE_NS */ +#endif /* HAVE_EXT_TOOL_BAR */ } -#if ! defined (USE_GTK) && ! defined (HAVE_NS) +#ifndef HAVE_EXT_TOOL_BAR /* Get information about the tool-bar item which is displayed in GLYPH on frame F. Return in *PROP_IDX the index where tool-bar item @@ -13200,7 +13198,7 @@ note_tool_bar_highlight (struct frame *f, int x, int y) help_echo_string = AREF (f->tool_bar_items, prop_idx + TOOL_BAR_ITEM_CAPTION); } -#endif /* !USE_GTK && !HAVE_NS */ +#endif /* ! (HAVE_EXT_TOOL_BAR) */ #endif /* HAVE_WINDOW_SYSTEM */ @@ -17658,8 +17656,7 @@ redisplay_window (Lisp_Object window, bool just_this_one_p) if (FRAME_WINDOW_P (f)) { -#if defined (USE_X_TOOLKIT) || defined (HAVE_NTGUI) \ - || defined (HAVE_NS) || defined (USE_GTK) +#ifdef HAVE_EXT_MENU_BAR redisplay_menu_p = FRAME_EXTERNAL_MENU_BAR (f); #else redisplay_menu_p = FRAME_MENU_BAR_LINES (f) > 0; @@ -17674,7 +17671,7 @@ redisplay_window (Lisp_Object window, bool just_this_one_p) #ifdef HAVE_WINDOW_SYSTEM if (FRAME_WINDOW_P (f)) { -#if defined (USE_GTK) || defined (HAVE_NS) +#ifdef HAVE_EXT_TOOL_BAR if (FRAME_EXTERNAL_TOOL_BAR (f)) redisplay_tool_bar (f); #else @@ -19709,7 +19706,7 @@ If there's no tool-bar, or if the tool-bar is not drawn by Emacs, do nothing. */) (Lisp_Object row, Lisp_Object glyphs) { -#if defined (HAVE_WINDOW_SYSTEM) && ! defined (USE_GTK) && ! defined (HAVE_NS) +#if defined (HAVE_WINDOW_SYSTEM) && ! defined (HAVE_EXT_TOOL_BAR) struct frame *sf = SELECTED_FRAME (); struct glyph_matrix *m = XWINDOW (sf->tool_bar_window)->current_matrix; EMACS_INT vpos; @@ -20335,7 +20332,7 @@ extend_face_to_end_of_line (struct it *it) /* Mode line and the header line don't have margins, and likewise the frame's tool-bar window, if there is any. */ if (!(it->glyph_row->mode_line_p -#if defined (HAVE_WINDOW_SYSTEM) && ! defined (USE_GTK) && ! defined (HAVE_NS) +#if defined (HAVE_WINDOW_SYSTEM) && ! defined (HAVE_EXT_TOOL_BAR) || (WINDOWP (f->tool_bar_window) && it->w == XWINDOW (f->tool_bar_window)) #endif @@ -30020,7 +30017,7 @@ show_mouse_face (Mouse_HLInfo *hlinfo, enum draw_glyphs_face draw) /* Change the mouse cursor. */ if (FRAME_WINDOW_P (f) && NILP (do_mouse_tracking)) { -#if ! defined (USE_GTK) && ! defined (HAVE_NS) +#ifndef HAVE_EXT_TOOL_BAR if (draw == DRAW_NORMAL_TEXT && !EQ (hlinfo->mouse_face_window, f->tool_bar_window)) FRAME_RIF (f)->define_frame_cursor (f, FRAME_X_OUTPUT (f)->text_cursor); @@ -31422,7 +31419,7 @@ note_mouse_highlight (struct frame *f, int x, int y) w = XWINDOW (window); frame_to_window_pixel_xy (w, &x, &y); -#if defined (HAVE_WINDOW_SYSTEM) && ! defined (USE_GTK) && ! defined (HAVE_NS) +#if defined (HAVE_WINDOW_SYSTEM) && ! defined (HAVE_EXT_TOOL_BAR) /* Handle tool-bar window differently since it doesn't display a buffer. */ if (EQ (window, f->tool_bar_window)) @@ -32447,7 +32444,7 @@ expose_frame (struct frame *f, int x, int y, int w, int h) TRACE ((stderr, "(%d, %d, %d, %d)\n", r.x, r.y, r.width, r.height)); mouse_face_overwritten_p = expose_window_tree (XWINDOW (f->root_window), &r); -#if ! defined (USE_GTK) && ! defined (HAVE_NS) +#ifndef HAVE_EXT_TOOL_BAR if (WINDOWP (f->tool_bar_window)) mouse_face_overwritten_p |= expose_window (XWINDOW (f->tool_bar_window), &r); diff --git a/src/xfns.c b/src/xfns.c index a627b7e19e..f238a3daa1 100644 --- a/src/xfns.c +++ b/src/xfns.c @@ -5132,7 +5132,7 @@ frame_geometry (Lisp_Object frame, Lisp_Object attribute) inner_right = native_right - internal_border_width; inner_bottom = native_bottom - internal_border_width; -#if defined (USE_X_TOOLKIT) || defined (USE_GTK) +#ifdef HAVE_EXT_MENU_BAR menu_bar_external = true; menu_bar_height = FRAME_MENUBAR_HEIGHT (f); native_top += menu_bar_height; @@ -5143,7 +5143,7 @@ frame_geometry (Lisp_Object frame, Lisp_Object attribute) #endif menu_bar_width = menu_bar_height ? native_width : 0; -#if defined (USE_GTK) +#ifdef HAVE_EXT_TOOL_BAR tool_bar_external = true; if (EQ (FRAME_TOOL_BAR_POSITION (f), Qleft)) { -- 2.21.0 --=-=-=--