aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorAlexander Gramiak2019-03-16 11:46:39 -0600
committerAlexander Gramiak2019-03-16 13:15:07 -0600
commitcc06d76865a7a98b5fd4edd03a044f2baefb85a9 (patch)
treebebc69c07239c84cbaf8693f99d25d099fcd2072 /src
parent7d8fe1f9f66110b23972869496e2000e9c35bb6d (diff)
downloademacs-cc06d76865a7a98b5fd4edd03a044f2baefb85a9.tar.gz
emacs-cc06d76865a7a98b5fd4edd03a044f2baefb85a9.zip
Define macros to abstract support for external menu/tool-bars
* src/lisp.h (HAVE_EXT_MENU_BAR) (HAVE_EXT_TOOL_BAR): Define. *src/dispnew.c: *src/frame.c: *src/frame.h: *src/keyboard.c: *src/menu.c: *src/menu.h: *src/window.c: *src/window.h: *src/xdisp.c: *src/xfns: Use the new macros.
Diffstat (limited to 'src')
-rw-r--r--src/dispnew.c10
-rw-r--r--src/frame.c6
-rw-r--r--src/frame.h22
-rw-r--r--src/keyboard.c13
-rw-r--r--src/lisp.h11
-rw-r--r--src/menu.c5
-rw-r--r--src/menu.h3
-rw-r--r--src/window.c4
-rw-r--r--src/window.h2
-rw-r--r--src/xdisp.c43
-rw-r--r--src/xfns.c4
11 files changed, 62 insertions, 61 deletions
diff --git a/src/dispnew.c b/src/dispnew.c
index 7596528fed9..ccb08ec1b95 100644
--- a/src/dispnew.c
+++ b/src/dispnew.c
@@ -767,7 +767,7 @@ clear_current_matrices (register struct frame *f)
767 clear_glyph_matrix (XWINDOW (f->menu_bar_window)->current_matrix); 767 clear_glyph_matrix (XWINDOW (f->menu_bar_window)->current_matrix);
768#endif 768#endif
769 769
770#if defined (HAVE_WINDOW_SYSTEM) && ! defined (USE_GTK) && ! defined (HAVE_NS) 770#if defined (HAVE_WINDOW_SYSTEM) && ! defined (HAVE_EXT_TOOL_BAR)
771 /* Clear the matrix of the tool-bar window, if any. */ 771 /* Clear the matrix of the tool-bar window, if any. */
772 if (WINDOWP (f->tool_bar_window)) 772 if (WINDOWP (f->tool_bar_window))
773 clear_glyph_matrix (XWINDOW (f->tool_bar_window)->current_matrix); 773 clear_glyph_matrix (XWINDOW (f->tool_bar_window)->current_matrix);
@@ -792,7 +792,7 @@ clear_desired_matrices (register struct frame *f)
792 clear_glyph_matrix (XWINDOW (f->menu_bar_window)->desired_matrix); 792 clear_glyph_matrix (XWINDOW (f->menu_bar_window)->desired_matrix);
793#endif 793#endif
794 794
795#if defined (HAVE_WINDOW_SYSTEM) && ! defined (USE_GTK) && ! defined (HAVE_NS) 795#if defined (HAVE_WINDOW_SYSTEM) && ! defined (HAVE_EXT_TOOL_BAR)
796 if (WINDOWP (f->tool_bar_window)) 796 if (WINDOWP (f->tool_bar_window))
797 clear_glyph_matrix (XWINDOW (f->tool_bar_window)->desired_matrix); 797 clear_glyph_matrix (XWINDOW (f->tool_bar_window)->desired_matrix);
798#endif 798#endif
@@ -2106,7 +2106,7 @@ adjust_frame_glyphs_for_window_redisplay (struct frame *f)
2106 } 2106 }
2107#endif 2107#endif
2108 2108
2109#if defined (HAVE_WINDOW_SYSTEM) && ! defined (USE_GTK) && ! defined (HAVE_NS) 2109#if defined (HAVE_WINDOW_SYSTEM) && ! defined (HAVE_EXT_TOOL_BAR)
2110 { 2110 {
2111 /* Allocate/ reallocate matrices of the tool bar window. If we 2111 /* Allocate/ reallocate matrices of the tool bar window. If we
2112 don't have a tool bar window yet, make one. */ 2112 don't have a tool bar window yet, make one. */
@@ -2188,7 +2188,7 @@ free_glyphs (struct frame *f)
2188 } 2188 }
2189#endif 2189#endif
2190 2190
2191#if defined (HAVE_WINDOW_SYSTEM) && ! defined (USE_GTK) && ! defined (HAVE_NS) 2191#if defined (HAVE_WINDOW_SYSTEM) && ! defined (HAVE_EXT_TOOL_BAR)
2192 /* Free the tool bar window and its glyph matrices. */ 2192 /* Free the tool bar window and its glyph matrices. */
2193 if (!NILP (f->tool_bar_window)) 2193 if (!NILP (f->tool_bar_window))
2194 { 2194 {
@@ -3082,7 +3082,7 @@ update_frame (struct frame *f, bool force_p, bool inhibit_hairy_id_p)
3082 update_window (XWINDOW (f->menu_bar_window), true); 3082 update_window (XWINDOW (f->menu_bar_window), true);
3083#endif 3083#endif
3084 3084
3085#if defined (HAVE_WINDOW_SYSTEM) && ! defined (USE_GTK) && ! defined (HAVE_NS) 3085#if defined (HAVE_WINDOW_SYSTEM) && ! defined (HAVE_EXT_TOOL_BAR)
3086 /* Update the tool-bar window, if present. */ 3086 /* Update the tool-bar window, if present. */
3087 if (WINDOWP (f->tool_bar_window)) 3087 if (WINDOWP (f->tool_bar_window))
3088 { 3088 {
diff --git a/src/frame.c b/src/frame.c
index 46bdf222315..d0c77149ba8 100644
--- a/src/frame.c
+++ b/src/frame.c
@@ -70,7 +70,7 @@ static struct frame *last_nonminibuf_frame;
70bool frame_garbaged; 70bool frame_garbaged;
71 71
72/* The default tool bar height for future frames. */ 72/* The default tool bar height for future frames. */
73#if defined USE_GTK || defined HAVE_NS 73#ifdef HAVE_EXT_TOOL_BAR
74enum { frame_default_tool_bar_height = 0 }; 74enum { frame_default_tool_bar_height = 0 };
75#else 75#else
76int frame_default_tool_bar_height; 76int frame_default_tool_bar_height;
@@ -712,7 +712,7 @@ adjust_frame_size (struct frame *f, int new_width, int new_height, int inhibit,
712 if ((FRAME_TERMCAP_P (f) && !pretend) || FRAME_MSDOS_P (f)) 712 if ((FRAME_TERMCAP_P (f) && !pretend) || FRAME_MSDOS_P (f))
713 FrameCols (FRAME_TTY (f)) = new_cols; 713 FrameCols (FRAME_TTY (f)) = new_cols;
714 714
715#if defined (HAVE_WINDOW_SYSTEM) && ! defined (USE_GTK) && ! defined (HAVE_NS) 715#if defined (HAVE_WINDOW_SYSTEM) && ! defined (HAVE_EXT_TOOL_BAR)
716 if (WINDOWP (f->tool_bar_window)) 716 if (WINDOWP (f->tool_bar_window))
717 { 717 {
718 XWINDOW (f->tool_bar_window)->pixel_width = new_windows_width; 718 XWINDOW (f->tool_bar_window)->pixel_width = new_windows_width;
@@ -848,7 +848,7 @@ make_frame (bool mini_p)
848 f->no_accept_focus = false; 848 f->no_accept_focus = false;
849 f->z_group = z_group_none; 849 f->z_group = z_group_none;
850 f->tooltip = false; 850 f->tooltip = false;
851#if ! defined (USE_GTK) && ! defined (HAVE_NS) 851#ifndef HAVE_EXT_TOOL_BAR
852 f->last_tool_bar_item = -1; 852 f->last_tool_bar_item = -1;
853#endif 853#endif
854#ifdef NS_IMPL_COCOA 854#ifdef NS_IMPL_COCOA
diff --git a/src/frame.h b/src/frame.h
index 5bac24b077e..ed62e7ace0f 100644
--- a/src/frame.h
+++ b/src/frame.h
@@ -181,7 +181,7 @@ struct frame
181 Lisp_Object menu_bar_window; 181 Lisp_Object menu_bar_window;
182#endif 182#endif
183 183
184#if defined (HAVE_WINDOW_SYSTEM) && ! defined (USE_GTK) && ! defined (HAVE_NS) 184#if defined (HAVE_WINDOW_SYSTEM) && ! defined (HAVE_EXT_TOOL_BAR)
185 /* A window used to display the tool-bar of a frame. */ 185 /* A window used to display the tool-bar of a frame. */
186 Lisp_Object tool_bar_window; 186 Lisp_Object tool_bar_window;
187 187
@@ -209,7 +209,7 @@ struct frame
209 /* Cache of realized faces. */ 209 /* Cache of realized faces. */
210 struct face_cache *face_cache; 210 struct face_cache *face_cache;
211 211
212#if defined (HAVE_WINDOW_SYSTEM) && ! defined (USE_GTK) && ! defined (HAVE_NS) 212#if defined (HAVE_WINDOW_SYSTEM) && ! defined (HAVE_EXT_TOOL_BAR)
213 /* Tool-bar item index of the item on which a mouse button was pressed. */ 213 /* Tool-bar item index of the item on which a mouse button was pressed. */
214 int last_tool_bar_item; 214 int last_tool_bar_item;
215#endif 215#endif
@@ -257,13 +257,13 @@ struct frame
257 /* Set to true when current redisplay has updated frame. */ 257 /* Set to true when current redisplay has updated frame. */
258 bool_bf updated_p : 1; 258 bool_bf updated_p : 1;
259 259
260#if defined (HAVE_WINDOW_SYSTEM) && ! defined (USE_GTK) && ! defined (HAVE_NS) 260#if defined (HAVE_WINDOW_SYSTEM) && ! defined (HAVE_EXT_TOOL_BAR)
261 /* Set to true to minimize tool-bar height even when 261 /* Set to true to minimize tool-bar height even when
262 auto-resize-tool-bar is set to grow-only. */ 262 auto-resize-tool-bar is set to grow-only. */
263 bool_bf minimize_tool_bar_window_p : 1; 263 bool_bf minimize_tool_bar_window_p : 1;
264#endif 264#endif
265 265
266#if defined (USE_GTK) || defined (HAVE_NS) 266#ifdef HAVE_EXT_TOOL_BAR
267 /* True means using a tool bar that comes from the toolkit. */ 267 /* True means using a tool bar that comes from the toolkit. */
268 bool_bf external_tool_bar : 1; 268 bool_bf external_tool_bar : 1;
269#endif 269#endif
@@ -278,9 +278,8 @@ struct frame
278 /* True if it needs to be redisplayed. */ 278 /* True if it needs to be redisplayed. */
279 bool_bf redisplay : 1; 279 bool_bf redisplay : 1;
280 280
281#if defined (USE_X_TOOLKIT) || defined (HAVE_NTGUI) \ 281#ifdef HAVE_EXT_MENU_BAR
282 || defined (HAVE_NS) || defined (USE_GTK) 282 /* True means using a menu bar that comes from the toolkit. */
283 /* True means using a menu bar that comes from the X toolkit. */
284 bool_bf external_menu_bar : 1; 283 bool_bf external_menu_bar : 1;
285#endif 284#endif
286 285
@@ -714,7 +713,7 @@ fset_tool_bar_position (struct frame *f, Lisp_Object val)
714 f->tool_bar_position = val; 713 f->tool_bar_position = val;
715} 714}
716#endif /* USE_GTK */ 715#endif /* USE_GTK */
717#if defined (HAVE_WINDOW_SYSTEM) && ! defined (USE_GTK) && ! defined (HAVE_NS) 716#if defined (HAVE_WINDOW_SYSTEM) && ! defined (HAVE_EXT_TOOL_BAR)
718INLINE void 717INLINE void
719fset_tool_bar_window (struct frame *f, Lisp_Object val) 718fset_tool_bar_window (struct frame *f, Lisp_Object val)
720{ 719{
@@ -882,7 +881,7 @@ default_pixels_per_inch_y (void)
882 881
883/* True if this frame should display a tool bar 882/* True if this frame should display a tool bar
884 in a way that does not use any text lines. */ 883 in a way that does not use any text lines. */
885#if defined (USE_GTK) || defined (HAVE_NS) 884#ifdef HAVE_EXT_TOOL_BAR
886#define FRAME_EXTERNAL_TOOL_BAR(f) (f)->external_tool_bar 885#define FRAME_EXTERNAL_TOOL_BAR(f) (f)->external_tool_bar
887#else 886#else
888#define FRAME_EXTERNAL_TOOL_BAR(f) false 887#define FRAME_EXTERNAL_TOOL_BAR(f) false
@@ -911,8 +910,7 @@ default_pixels_per_inch_y (void)
911 910
912/* True if this frame should display a menu bar 911/* True if this frame should display a menu bar
913 in a way that does not use any text lines. */ 912 in a way that does not use any text lines. */
914#if defined (USE_X_TOOLKIT) || defined (HAVE_NTGUI) \ 913#ifdef HAVE_EXT_MENU_BAR
915 || defined (HAVE_NS) || defined (USE_GTK)
916#define FRAME_EXTERNAL_MENU_BAR(f) (f)->external_menu_bar 914#define FRAME_EXTERNAL_MENU_BAR(f) (f)->external_menu_bar
917#else 915#else
918#define FRAME_EXTERNAL_MENU_BAR(f) false 916#define FRAME_EXTERNAL_MENU_BAR(f) false
@@ -1258,7 +1256,7 @@ SET_FRAME_VISIBLE (struct frame *f, int v)
1258extern Lisp_Object selected_frame; 1256extern Lisp_Object selected_frame;
1259extern Lisp_Object old_selected_frame; 1257extern Lisp_Object old_selected_frame;
1260 1258
1261#if ! (defined USE_GTK || defined HAVE_NS) 1259#ifndef HAVE_EXT_TOOL_BAR
1262extern int frame_default_tool_bar_height; 1260extern int frame_default_tool_bar_height;
1263#endif 1261#endif
1264 1262
diff --git a/src/keyboard.c b/src/keyboard.c
index 760cd623f63..22e4377ee86 100644
--- a/src/keyboard.c
+++ b/src/keyboard.c
@@ -3869,8 +3869,7 @@ kbd_buffer_get_event (KBOARD **kbp,
3869 } 3869 }
3870 break; 3870 break;
3871 3871
3872#if defined (USE_X_TOOLKIT) || defined (HAVE_NTGUI) \ 3872#ifdef HAVE_EXT_MENU_BAR
3873 || defined (HAVE_NS) || defined (USE_GTK)
3874 case MENU_BAR_ACTIVATE_EVENT: 3873 case MENU_BAR_ACTIVATE_EVENT:
3875 { 3874 {
3876 kbd_fetch_ptr = next_kbd_event (event); 3875 kbd_fetch_ptr = next_kbd_event (event);
@@ -3950,8 +3949,7 @@ kbd_buffer_get_event (KBOARD **kbp,
3950 { 3949 {
3951 obj = make_lispy_event (&event->ie); 3950 obj = make_lispy_event (&event->ie);
3952 3951
3953#if defined (USE_X_TOOLKIT) || defined (HAVE_NTGUI) \ 3952#ifdef HAVE_EXT_MENU_BAR
3954 || defined (HAVE_NS) || defined (USE_GTK)
3955 /* If this was a menu selection, then set the flag to inhibit 3953 /* If this was a menu selection, then set the flag to inhibit
3956 writing to last_nonmenu_event. Don't do this if the event 3954 writing to last_nonmenu_event. Don't do this if the event
3957 we're returning is (menu-bar), though; that indicates the 3955 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,
5232static bool 5230static bool
5233toolkit_menubar_in_use (struct frame *f) 5231toolkit_menubar_in_use (struct frame *f)
5234{ 5232{
5235#if defined (USE_X_TOOLKIT) || defined (USE_GTK) || defined (HAVE_NS) || defined (HAVE_NTGUI) 5233#ifdef HAVE_EXT_MENU_BAR
5236 return !(!FRAME_WINDOW_P (f)); 5234 return !(!FRAME_WINDOW_P (f));
5237#else 5235#else
5238 return false; 5236 return false;
@@ -5925,8 +5923,7 @@ make_lispy_event (struct input_event *event)
5925 return list3 (head, position, files); 5923 return list3 (head, position, files);
5926 } 5924 }
5927 5925
5928#if defined (USE_X_TOOLKIT) || defined (HAVE_NTGUI) \ 5926#ifdef HAVE_EXT_MENU_BAR
5929 || defined (HAVE_NS) || defined (USE_GTK)
5930 case MENU_BAR_EVENT: 5927 case MENU_BAR_EVENT:
5931 if (EQ (event->arg, event->frame_or_window)) 5928 if (EQ (event->arg, event->frame_or_window))
5932 /* This is the prefix key. We translate this to 5929 /* This is the prefix key. We translate this to
@@ -8136,7 +8133,7 @@ parse_tool_bar_item (Lisp_Object key, Lisp_Object item)
8136 if (menu_separator_name_p (SSDATA (caption))) 8133 if (menu_separator_name_p (SSDATA (caption)))
8137 { 8134 {
8138 set_prop (TOOL_BAR_ITEM_TYPE, Qt); 8135 set_prop (TOOL_BAR_ITEM_TYPE, Qt);
8139#if !defined (USE_GTK) && !defined (HAVE_NS) 8136#ifndef HAVE_EXT_TOOL_BAR
8140 /* If we use build_desired_tool_bar_string to render the 8137 /* If we use build_desired_tool_bar_string to render the
8141 tool bar, the separator is rendered as an image. */ 8138 tool bar, the separator is rendered as an image. */
8142 set_prop (TOOL_BAR_ITEM_IMAGES, 8139 set_prop (TOOL_BAR_ITEM_IMAGES,
diff --git a/src/lisp.h b/src/lisp.h
index 4391e173741..cb142b9d8ad 100644
--- a/src/lisp.h
+++ b/src/lisp.h
@@ -3327,6 +3327,17 @@ extern int staticidx;
3327struct window; 3327struct window;
3328struct frame; 3328struct frame;
3329 3329
3330/* Define if the windowing system provides a menu bar. */
3331#if defined (USE_X_TOOLKIT) || defined (HAVE_NTGUI) \
3332 || defined (HAVE_NS) || defined (USE_GTK)
3333#define HAVE_EXT_MENU_BAR true
3334#endif
3335
3336/* Define if the windowing system provides a tool-bar. */
3337#if defined (USE_GTK) || defined (HAVE_NS)
3338#define HAVE_EXT_TOOL_BAR true
3339#endif
3340
3330/* Copy COUNT Lisp_Objects from ARGS to contents of V starting from OFFSET. */ 3341/* Copy COUNT Lisp_Objects from ARGS to contents of V starting from OFFSET. */
3331 3342
3332INLINE void 3343INLINE void
diff --git a/src/menu.c b/src/menu.c
index 7d255fddac4..7f46e68e73e 100644
--- a/src/menu.c
+++ b/src/menu.c
@@ -170,8 +170,7 @@ ensure_menu_items (int items)
170 } 170 }
171} 171}
172 172
173#if (defined USE_X_TOOLKIT || defined USE_GTK || defined HAVE_NS \ 173#ifdef HAVE_EXT_MENU_BAR
174 || defined HAVE_NTGUI)
175 174
176/* Begin a submenu. */ 175/* Begin a submenu. */
177 176
@@ -195,7 +194,7 @@ push_submenu_end (void)
195 menu_items_submenu_depth--; 194 menu_items_submenu_depth--;
196} 195}
197 196
198#endif /* USE_X_TOOLKIT || USE_GTK || HAVE_NS || defined HAVE_NTGUI */ 197#endif /* HAVE_EXT_MENU_BAR */
199 198
200/* Indicate boundary between left and right. */ 199/* Indicate boundary between left and right. */
201 200
diff --git a/src/menu.h b/src/menu.h
index d425cdf0109..0321c27454b 100644
--- a/src/menu.h
+++ b/src/menu.h
@@ -35,8 +35,7 @@ extern void discard_menu_items (void);
35extern void save_menu_items (void); 35extern void save_menu_items (void);
36extern bool parse_single_submenu (Lisp_Object, Lisp_Object, Lisp_Object); 36extern bool parse_single_submenu (Lisp_Object, Lisp_Object, Lisp_Object);
37extern void list_of_panes (Lisp_Object); 37extern void list_of_panes (Lisp_Object);
38#if defined (USE_X_TOOLKIT) || defined (USE_GTK) || defined (HAVE_NTGUI) \ 38#ifdef HAVE_EXT_MENU_BAR
39 || defined (HAVE_NS)
40extern void free_menubar_widget_value_tree (widget_value *); 39extern void free_menubar_widget_value_tree (widget_value *);
41extern void update_submenu_strings (widget_value *); 40extern void update_submenu_strings (widget_value *);
42extern void find_and_call_menu_selection (struct frame *, int, 41extern void find_and_call_menu_selection (struct frame *, int,
diff --git a/src/window.c b/src/window.c
index ae039b76add..85d7bcade94 100644
--- a/src/window.c
+++ b/src/window.c
@@ -1599,7 +1599,7 @@ window_from_coordinates (struct frame *f, int x, int y,
1599 cw.window = &window, cw.x = x, cw.y = y; cw.part = part; 1599 cw.window = &window, cw.x = x, cw.y = y; cw.part = part;
1600 foreach_window (f, check_window_containing, &cw); 1600 foreach_window (f, check_window_containing, &cw);
1601 1601
1602#if defined (HAVE_WINDOW_SYSTEM) && ! defined (USE_GTK) && ! defined (HAVE_NS) 1602#if defined (HAVE_WINDOW_SYSTEM) && ! defined (HAVE_EXT_TOOL_BAR)
1603 /* If not found above, see if it's in the tool bar window, if a tool 1603 /* If not found above, see if it's in the tool bar window, if a tool
1604 bar exists. */ 1604 bar exists. */
1605 if (NILP (window) 1605 if (NILP (window)
@@ -6398,7 +6398,7 @@ and redisplay normally--don't erase and redraw the frame. */)
6398 /* Invalidate pixel data calculated for all compositions. */ 6398 /* Invalidate pixel data calculated for all compositions. */
6399 for (i = 0; i < n_compositions; i++) 6399 for (i = 0; i < n_compositions; i++)
6400 composition_table[i]->font = NULL; 6400 composition_table[i]->font = NULL;
6401#if defined (HAVE_WINDOW_SYSTEM) && ! defined (USE_GTK) && ! defined (HAVE_NS) 6401#if defined (HAVE_WINDOW_SYSTEM) && ! defined (HAVE_EXT_TOOL_BAR)
6402 WINDOW_XFRAME (w)->minimize_tool_bar_window_p = 1; 6402 WINDOW_XFRAME (w)->minimize_tool_bar_window_p = 1;
6403#endif 6403#endif
6404 Fredraw_frame (WINDOW_FRAME (w)); 6404 Fredraw_frame (WINDOW_FRAME (w));
diff --git a/src/window.h b/src/window.h
index b450173eb2f..4235a6eade2 100644
--- a/src/window.h
+++ b/src/window.h
@@ -739,7 +739,7 @@ wset_next_buffers (struct window *w, Lisp_Object val)
739#endif 739#endif
740 740
741/* True if W is a tool bar window. */ 741/* True if W is a tool bar window. */
742#if defined (HAVE_WINDOW_SYSTEM) && ! defined (USE_GTK) && ! defined (HAVE_NS) 742#if defined (HAVE_WINDOW_SYSTEM) && ! defined (HAVE_EXT_TOOL_BAR)
743#define WINDOW_TOOL_BAR_P(W) \ 743#define WINDOW_TOOL_BAR_P(W) \
744 (WINDOWP (WINDOW_XFRAME (W)->tool_bar_window) \ 744 (WINDOWP (WINDOW_XFRAME (W)->tool_bar_window) \
745 && (W) == XWINDOW (WINDOW_XFRAME (W)->tool_bar_window)) 745 && (W) == XWINDOW (WINDOW_XFRAME (W)->tool_bar_window))
diff --git a/src/xdisp.c b/src/xdisp.c
index 5ae8fc1cf6b..3172b3be890 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)
12237 12237
12238 if (FRAME_WINDOW_P (f) 12238 if (FRAME_WINDOW_P (f)
12239 ? 12239 ?
12240#if defined (USE_X_TOOLKIT) || defined (HAVE_NTGUI) \ 12240#ifdef HAVE_EXT_MENU_BAR
12241 || defined (HAVE_NS) || defined (USE_GTK)
12242 FRAME_EXTERNAL_MENU_BAR (f) 12241 FRAME_EXTERNAL_MENU_BAR (f)
12243#else 12242#else
12244 FRAME_MENU_BAR_LINES (f) > 0 12243 FRAME_MENU_BAR_LINES (f) > 0
@@ -12291,8 +12290,7 @@ update_menu_bar (struct frame *f, bool save_match_data, bool hooks_run)
12291 fset_menu_bar_items (f, menu_bar_items (FRAME_MENU_BAR_ITEMS (f))); 12290 fset_menu_bar_items (f, menu_bar_items (FRAME_MENU_BAR_ITEMS (f)));
12292 12291
12293 /* Redisplay the menu bar in case we changed it. */ 12292 /* Redisplay the menu bar in case we changed it. */
12294#if defined (USE_X_TOOLKIT) || defined (HAVE_NTGUI) \ 12293#ifdef HAVE_EXT_MENU_BAR
12295 || defined (HAVE_NS) || defined (USE_GTK)
12296 if (FRAME_WINDOW_P (f)) 12294 if (FRAME_WINDOW_P (f))
12297 { 12295 {
12298#if defined (HAVE_NS) 12296#if defined (HAVE_NS)
@@ -12306,11 +12304,11 @@ update_menu_bar (struct frame *f, bool save_match_data, bool hooks_run)
12306 /* On a terminal screen, the menu bar is an ordinary screen 12304 /* On a terminal screen, the menu bar is an ordinary screen
12307 line, and this makes it get updated. */ 12305 line, and this makes it get updated. */
12308 w->update_mode_line = true; 12306 w->update_mode_line = true;
12309#else /* ! (USE_X_TOOLKIT || HAVE_NTGUI || HAVE_NS || USE_GTK) */ 12307#else /* ! (HAVE_EXT_MENU_BAR) */
12310 /* In the non-toolkit version, the menu bar is an ordinary screen 12308 /* In the non-toolkit version, the menu bar is an ordinary screen
12311 line, and this makes it get updated. */ 12309 line, and this makes it get updated. */
12312 w->update_mode_line = true; 12310 w->update_mode_line = true;
12313#endif /* ! (USE_X_TOOLKIT || HAVE_NTGUI || HAVE_NS || USE_GTK) */ 12311#endif /* HAVE_EXT_MENU_BAR */
12314 12312
12315 unbind_to (count, Qnil); 12313 unbind_to (count, Qnil);
12316 set_buffer_internal_1 (prev); 12314 set_buffer_internal_1 (prev);
@@ -12348,7 +12346,7 @@ fast_set_selected_frame (Lisp_Object frame)
12348static void 12346static void
12349update_tool_bar (struct frame *f, bool save_match_data) 12347update_tool_bar (struct frame *f, bool save_match_data)
12350{ 12348{
12351#if defined (USE_GTK) || defined (HAVE_NS) 12349#ifdef HAVE_EXT_TOOL_BAR
12352 bool do_update = FRAME_EXTERNAL_TOOL_BAR (f); 12350 bool do_update = FRAME_EXTERNAL_TOOL_BAR (f);
12353#else 12351#else
12354 bool do_update = (WINDOWP (f->tool_bar_window) 12352 bool do_update = (WINDOWP (f->tool_bar_window)
@@ -12433,7 +12431,7 @@ update_tool_bar (struct frame *f, bool save_match_data)
12433 } 12431 }
12434} 12432}
12435 12433
12436#if ! defined (USE_GTK) && ! defined (HAVE_NS) 12434#ifndef HAVE_EXT_TOOL_BAR
12437 12435
12438/* Set F->desired_tool_bar_string to a Lisp string representing frame 12436/* Set F->desired_tool_bar_string to a Lisp string representing frame
12439 F's desired tool-bar contents. F->tool_bar_items must have 12437 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)
12768 return (it.current_y + FRAME_LINE_HEIGHT (f) - 1) / FRAME_LINE_HEIGHT (f); 12766 return (it.current_y + FRAME_LINE_HEIGHT (f) - 1) / FRAME_LINE_HEIGHT (f);
12769} 12767}
12770 12768
12771#endif /* !USE_GTK && !HAVE_NS */ 12769#endif /* ! (HAVE_EXT_TOOL_BAR) */
12772 12770
12773DEFUN ("tool-bar-height", Ftool_bar_height, Stool_bar_height, 12771DEFUN ("tool-bar-height", Ftool_bar_height, Stool_bar_height,
12774 0, 2, 0, 12772 0, 2, 0,
@@ -12779,7 +12777,7 @@ PIXELWISE non-nil means return the height of the tool bar in pixels. */)
12779{ 12777{
12780 int height = 0; 12778 int height = 0;
12781 12779
12782#if ! defined (USE_GTK) && ! defined (HAVE_NS) 12780#ifndef HAVE_EXT_TOOL_BAR
12783 struct frame *f = decode_any_frame (frame); 12781 struct frame *f = decode_any_frame (frame);
12784 12782
12785 if (WINDOWP (f->tool_bar_window) 12783 if (WINDOWP (f->tool_bar_window)
@@ -12804,13 +12802,13 @@ static bool
12804redisplay_tool_bar (struct frame *f) 12802redisplay_tool_bar (struct frame *f)
12805{ 12803{
12806 f->tool_bar_redisplayed = true; 12804 f->tool_bar_redisplayed = true;
12807#if defined (USE_GTK) || defined (HAVE_NS) 12805#ifdef HAVE_EXT_TOOL_BAR
12808 12806
12809 if (FRAME_EXTERNAL_TOOL_BAR (f)) 12807 if (FRAME_EXTERNAL_TOOL_BAR (f))
12810 update_frame_tool_bar (f); 12808 update_frame_tool_bar (f);
12811 return false; 12809 return false;
12812 12810
12813#else /* !USE_GTK && !HAVE_NS */ 12811#else /* ! (HAVE_EXT_TOOL_BAR) */
12814 12812
12815 struct window *w; 12813 struct window *w;
12816 struct it it; 12814 struct it it;
@@ -12959,10 +12957,10 @@ redisplay_tool_bar (struct frame *f)
12959 f->minimize_tool_bar_window_p = false; 12957 f->minimize_tool_bar_window_p = false;
12960 return false; 12958 return false;
12961 12959
12962#endif /* USE_GTK || HAVE_NS */ 12960#endif /* HAVE_EXT_TOOL_BAR */
12963} 12961}
12964 12962
12965#if ! defined (USE_GTK) && ! defined (HAVE_NS) 12963#ifndef HAVE_EXT_TOOL_BAR
12966 12964
12967/* Get information about the tool-bar item which is displayed in GLYPH 12965/* Get information about the tool-bar item which is displayed in GLYPH
12968 on frame F. Return in *PROP_IDX the index where tool-bar item 12966 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)
13200 help_echo_string = AREF (f->tool_bar_items, prop_idx + TOOL_BAR_ITEM_CAPTION); 13198 help_echo_string = AREF (f->tool_bar_items, prop_idx + TOOL_BAR_ITEM_CAPTION);
13201} 13199}
13202 13200
13203#endif /* !USE_GTK && !HAVE_NS */ 13201#endif /* ! (HAVE_EXT_TOOL_BAR) */
13204 13202
13205#endif /* HAVE_WINDOW_SYSTEM */ 13203#endif /* HAVE_WINDOW_SYSTEM */
13206 13204
@@ -17658,8 +17656,7 @@ redisplay_window (Lisp_Object window, bool just_this_one_p)
17658 17656
17659 if (FRAME_WINDOW_P (f)) 17657 if (FRAME_WINDOW_P (f))
17660 { 17658 {
17661#if defined (USE_X_TOOLKIT) || defined (HAVE_NTGUI) \ 17659#ifdef HAVE_EXT_MENU_BAR
17662 || defined (HAVE_NS) || defined (USE_GTK)
17663 redisplay_menu_p = FRAME_EXTERNAL_MENU_BAR (f); 17660 redisplay_menu_p = FRAME_EXTERNAL_MENU_BAR (f);
17664#else 17661#else
17665 redisplay_menu_p = FRAME_MENU_BAR_LINES (f) > 0; 17662 redisplay_menu_p = FRAME_MENU_BAR_LINES (f) > 0;
@@ -17674,7 +17671,7 @@ redisplay_window (Lisp_Object window, bool just_this_one_p)
17674#ifdef HAVE_WINDOW_SYSTEM 17671#ifdef HAVE_WINDOW_SYSTEM
17675 if (FRAME_WINDOW_P (f)) 17672 if (FRAME_WINDOW_P (f))
17676 { 17673 {
17677#if defined (USE_GTK) || defined (HAVE_NS) 17674#ifdef HAVE_EXT_TOOL_BAR
17678 if (FRAME_EXTERNAL_TOOL_BAR (f)) 17675 if (FRAME_EXTERNAL_TOOL_BAR (f))
17679 redisplay_tool_bar (f); 17676 redisplay_tool_bar (f);
17680#else 17677#else
@@ -19709,7 +19706,7 @@ If there's no tool-bar, or if the tool-bar is not drawn by Emacs,
19709do nothing. */) 19706do nothing. */)
19710 (Lisp_Object row, Lisp_Object glyphs) 19707 (Lisp_Object row, Lisp_Object glyphs)
19711{ 19708{
19712#if defined (HAVE_WINDOW_SYSTEM) && ! defined (USE_GTK) && ! defined (HAVE_NS) 19709#if defined (HAVE_WINDOW_SYSTEM) && ! defined (HAVE_EXT_TOOL_BAR)
19713 struct frame *sf = SELECTED_FRAME (); 19710 struct frame *sf = SELECTED_FRAME ();
19714 struct glyph_matrix *m = XWINDOW (sf->tool_bar_window)->current_matrix; 19711 struct glyph_matrix *m = XWINDOW (sf->tool_bar_window)->current_matrix;
19715 EMACS_INT vpos; 19712 EMACS_INT vpos;
@@ -20335,7 +20332,7 @@ extend_face_to_end_of_line (struct it *it)
20335 /* Mode line and the header line don't have margins, and 20332 /* Mode line and the header line don't have margins, and
20336 likewise the frame's tool-bar window, if there is any. */ 20333 likewise the frame's tool-bar window, if there is any. */
20337 if (!(it->glyph_row->mode_line_p 20334 if (!(it->glyph_row->mode_line_p
20338#if defined (HAVE_WINDOW_SYSTEM) && ! defined (USE_GTK) && ! defined (HAVE_NS) 20335#if defined (HAVE_WINDOW_SYSTEM) && ! defined (HAVE_EXT_TOOL_BAR)
20339 || (WINDOWP (f->tool_bar_window) 20336 || (WINDOWP (f->tool_bar_window)
20340 && it->w == XWINDOW (f->tool_bar_window)) 20337 && it->w == XWINDOW (f->tool_bar_window))
20341#endif 20338#endif
@@ -30020,7 +30017,7 @@ show_mouse_face (Mouse_HLInfo *hlinfo, enum draw_glyphs_face draw)
30020 /* Change the mouse cursor. */ 30017 /* Change the mouse cursor. */
30021 if (FRAME_WINDOW_P (f) && NILP (do_mouse_tracking)) 30018 if (FRAME_WINDOW_P (f) && NILP (do_mouse_tracking))
30022 { 30019 {
30023#if ! defined (USE_GTK) && ! defined (HAVE_NS) 30020#ifndef HAVE_EXT_TOOL_BAR
30024 if (draw == DRAW_NORMAL_TEXT 30021 if (draw == DRAW_NORMAL_TEXT
30025 && !EQ (hlinfo->mouse_face_window, f->tool_bar_window)) 30022 && !EQ (hlinfo->mouse_face_window, f->tool_bar_window))
30026 FRAME_RIF (f)->define_frame_cursor (f, FRAME_X_OUTPUT (f)->text_cursor); 30023 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)
31422 w = XWINDOW (window); 31419 w = XWINDOW (window);
31423 frame_to_window_pixel_xy (w, &x, &y); 31420 frame_to_window_pixel_xy (w, &x, &y);
31424 31421
31425#if defined (HAVE_WINDOW_SYSTEM) && ! defined (USE_GTK) && ! defined (HAVE_NS) 31422#if defined (HAVE_WINDOW_SYSTEM) && ! defined (HAVE_EXT_TOOL_BAR)
31426 /* Handle tool-bar window differently since it doesn't display a 31423 /* Handle tool-bar window differently since it doesn't display a
31427 buffer. */ 31424 buffer. */
31428 if (EQ (window, f->tool_bar_window)) 31425 if (EQ (window, f->tool_bar_window))
@@ -32447,7 +32444,7 @@ expose_frame (struct frame *f, int x, int y, int w, int h)
32447 TRACE ((stderr, "(%d, %d, %d, %d)\n", r.x, r.y, r.width, r.height)); 32444 TRACE ((stderr, "(%d, %d, %d, %d)\n", r.x, r.y, r.width, r.height));
32448 mouse_face_overwritten_p = expose_window_tree (XWINDOW (f->root_window), &r); 32445 mouse_face_overwritten_p = expose_window_tree (XWINDOW (f->root_window), &r);
32449 32446
32450#if ! defined (USE_GTK) && ! defined (HAVE_NS) 32447#ifndef HAVE_EXT_TOOL_BAR
32451 if (WINDOWP (f->tool_bar_window)) 32448 if (WINDOWP (f->tool_bar_window))
32452 mouse_face_overwritten_p 32449 mouse_face_overwritten_p
32453 |= expose_window (XWINDOW (f->tool_bar_window), &r); 32450 |= expose_window (XWINDOW (f->tool_bar_window), &r);
diff --git a/src/xfns.c b/src/xfns.c
index a627b7e19e6..f238a3daa15 100644
--- a/src/xfns.c
+++ b/src/xfns.c
@@ -5132,7 +5132,7 @@ frame_geometry (Lisp_Object frame, Lisp_Object attribute)
5132 inner_right = native_right - internal_border_width; 5132 inner_right = native_right - internal_border_width;
5133 inner_bottom = native_bottom - internal_border_width; 5133 inner_bottom = native_bottom - internal_border_width;
5134 5134
5135#if defined (USE_X_TOOLKIT) || defined (USE_GTK) 5135#ifdef HAVE_EXT_MENU_BAR
5136 menu_bar_external = true; 5136 menu_bar_external = true;
5137 menu_bar_height = FRAME_MENUBAR_HEIGHT (f); 5137 menu_bar_height = FRAME_MENUBAR_HEIGHT (f);
5138 native_top += menu_bar_height; 5138 native_top += menu_bar_height;
@@ -5143,7 +5143,7 @@ frame_geometry (Lisp_Object frame, Lisp_Object attribute)
5143#endif 5143#endif
5144 menu_bar_width = menu_bar_height ? native_width : 0; 5144 menu_bar_width = menu_bar_height ? native_width : 0;
5145 5145
5146#if defined (USE_GTK) 5146#ifdef HAVE_EXT_TOOL_BAR
5147 tool_bar_external = true; 5147 tool_bar_external = true;
5148 if (EQ (FRAME_TOOL_BAR_POSITION (f), Qleft)) 5148 if (EQ (FRAME_TOOL_BAR_POSITION (f), Qleft))
5149 { 5149 {