diff options
| author | Jan Djärv | 2014-04-04 18:32:24 +0200 |
|---|---|---|
| committer | Jan Djärv | 2014-04-04 18:32:24 +0200 |
| commit | 11a9c72fafaa02ef26708da6ffe765a7fdaa4565 (patch) | |
| tree | e20e6c51747a69be7e81daa1ab1be642a7981043 /src/nsmenu.m | |
| parent | 97bac2112e7b4332834900863810370a57e38fbe (diff) | |
| download | emacs-11a9c72fafaa02ef26708da6ffe765a7fdaa4565.tar.gz emacs-11a9c72fafaa02ef26708da6ffe765a7fdaa4565.zip | |
Backport from trunk.
* nsmenu.m (update_frame_tool_bar): Return early if view or toolbar
is nil. If waiting for toolbar to complete, force a redraw.
(free_frame_tool_bar): Set wait_for_tool_bar = NO
* nsterm.h (EmacsView): Add wait_for_tool_bar.
* nsterm.m (updateFrameSize:): If waiting for the tool bar and tool
bar is zero height, just return (Bug#16976).
(initFrameFromEmacs:): Initialize wait_for_tool_bar.
Diffstat (limited to 'src/nsmenu.m')
| -rw-r--r-- | src/nsmenu.m | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/src/nsmenu.m b/src/nsmenu.m index f8cd07478ed..24842241f37 100644 --- a/src/nsmenu.m +++ b/src/nsmenu.m | |||
| @@ -1054,8 +1054,10 @@ free_frame_tool_bar (struct frame *f) | |||
| 1054 | Under NS we just hide the toolbar until it might be needed again. | 1054 | Under NS we just hide the toolbar until it might be needed again. |
| 1055 | -------------------------------------------------------------------------- */ | 1055 | -------------------------------------------------------------------------- */ |
| 1056 | { | 1056 | { |
| 1057 | EmacsView *view = FRAME_NS_VIEW (f); | ||
| 1057 | block_input (); | 1058 | block_input (); |
| 1058 | [[FRAME_NS_VIEW (f) toolbar] setVisible: NO]; | 1059 | view->wait_for_tool_bar = NO; |
| 1060 | [[view toolbar] setVisible: NO]; | ||
| 1059 | FRAME_TOOLBAR_HEIGHT (f) = 0; | 1061 | FRAME_TOOLBAR_HEIGHT (f) = 0; |
| 1060 | unblock_input (); | 1062 | unblock_input (); |
| 1061 | } | 1063 | } |
| @@ -1071,6 +1073,7 @@ update_frame_tool_bar (struct frame *f) | |||
| 1071 | NSWindow *window = [view window]; | 1073 | NSWindow *window = [view window]; |
| 1072 | EmacsToolbar *toolbar = [view toolbar]; | 1074 | EmacsToolbar *toolbar = [view toolbar]; |
| 1073 | 1075 | ||
| 1076 | if (view == nil || toolbar == nil) return; | ||
| 1074 | block_input (); | 1077 | block_input (); |
| 1075 | 1078 | ||
| 1076 | #ifdef NS_IMPL_COCOA | 1079 | #ifdef NS_IMPL_COCOA |
| @@ -1176,9 +1179,13 @@ update_frame_tool_bar (struct frame *f) | |||
| 1176 | FRAME_TOOLBAR_HEIGHT (f) = | 1179 | FRAME_TOOLBAR_HEIGHT (f) = |
| 1177 | NSHeight ([window frameRectForContentRect: NSMakeRect (0, 0, 0, 0)]) | 1180 | NSHeight ([window frameRectForContentRect: NSMakeRect (0, 0, 0, 0)]) |
| 1178 | - FRAME_NS_TITLEBAR_HEIGHT (f); | 1181 | - FRAME_NS_TITLEBAR_HEIGHT (f); |
| 1179 | if (FRAME_TOOLBAR_HEIGHT (f) < 0) // happens if frame is fullscreen. | 1182 | if (FRAME_TOOLBAR_HEIGHT (f) < 0) // happens if frame is fullscreen. |
| 1180 | FRAME_TOOLBAR_HEIGHT (f) = 0; | 1183 | FRAME_TOOLBAR_HEIGHT (f) = 0; |
| 1181 | unblock_input (); | 1184 | |
| 1185 | if (view->wait_for_tool_bar && FRAME_TOOLBAR_HEIGHT (f) > 0) | ||
| 1186 | [view setNeedsDisplay: YES]; | ||
| 1187 | |||
| 1188 | unblock_input (); | ||
| 1182 | } | 1189 | } |
| 1183 | 1190 | ||
| 1184 | 1191 | ||