]> code.delx.au - gnu-emacs/commitdiff
Fixed a toolbar related issue on OS X.
authorAnders Lindgren <andlind@gmail.com>
Sun, 15 Nov 2015 18:17:53 +0000 (19:17 +0100)
committerAnders Lindgren <andlind@gmail.com>
Sun, 15 Nov 2015 18:17:53 +0000 (19:17 +0100)
Earlier, when toggling the tool-bar in a maximized frame, the
frame size didn't match the number of text lines, leaving an
unused area at the bottom of the frame.

* nsfns.m (x_set_tool_bar_lines): Exit maximized and full height
fullscreen modes when tool bar is disabled.

src/nsfns.m

index c24344436adc189a35c102cbeacf48c2e2e5a4b9..94294de1bac7dd83f39cf134769ca1ecef5fa3ac 100644 (file)
@@ -648,6 +648,11 @@ x_set_menu_bar_lines (struct frame *f, Lisp_Object value, Lisp_Object oldval)
 void
 x_set_tool_bar_lines (struct frame *f, Lisp_Object value, Lisp_Object oldval)
 {
+  /* Currently, when the tool bar change state, the frame is resized.
+
+     TODO: It would be better if this didn't occur when 1) the frame
+     is full height or maximized or 2) when specified by
+     `frame-inhibit-implied-resize'. */
   int nlines;
 
   if (FRAME_MINIBUF_ONLY_P (f))
@@ -669,7 +674,21 @@ x_set_tool_bar_lines (struct frame *f, Lisp_Object value, Lisp_Object oldval)
         {
           free_frame_tool_bar (f);
           FRAME_EXTERNAL_TOOL_BAR (f) = 0;
-        }
+
+          {
+            EmacsView *view = FRAME_NS_VIEW (f);
+            int fs_state = [view fullscreenState];
+
+            if (fs_state == FULLSCREEN_MAXIMIZED)
+              {
+                [view setFSValue:FULLSCREEN_WIDTH];
+              }
+            else if (fs_state == FULLSCREEN_HEIGHT)
+              {
+                [view setFSValue:FULLSCREEN_NONE];
+              }
+          }
+       }
     }
 
   {
@@ -680,8 +699,6 @@ x_set_tool_bar_lines (struct frame *f, Lisp_Object value, Lisp_Object oldval)
              || (CONSP (frame_inhibit_implied_resize)
                  && !NILP (Fmemq (Qtool_bar_lines,
                                   frame_inhibit_implied_resize))))
-         /* This will probably fail to DTRT in the
-            fullheight/-width cases.  */
          && NILP (get_frame_param (f, Qfullscreen)))
         ? 0
         : 2);