From b2f1cdfbaef67314baba30e764c1bd317fa38707 Mon Sep 17 00:00:00 2001 From: Shubham Date: Tue, 23 May 2017 22:24:56 -0400 Subject: [PATCH 1/7] Add API to get top bar height on macOS --- atom/browser/api/atom_api_screen.cc | 3 +++ atom/browser/api/atom_api_screen.h | 4 +++- atom/browser/api/atom_api_screen_mac.mm | 15 +++++++++++++++ docs/api/screen.md | 6 ++++++ filenames.gypi | 1 + 5 files changed, 28 insertions(+), 1 deletion(-) create mode 100644 atom/browser/api/atom_api_screen_mac.mm diff --git a/atom/browser/api/atom_api_screen.cc b/atom/browser/api/atom_api_screen.cc index c45e20da4c2c..699bf1136105 100644 --- a/atom/browser/api/atom_api_screen.cc +++ b/atom/browser/api/atom_api_screen.cc @@ -120,6 +120,9 @@ void Screen::BuildPrototype( .SetMethod("getPrimaryDisplay", &Screen::GetPrimaryDisplay) .SetMethod("getAllDisplays", &Screen::GetAllDisplays) .SetMethod("getDisplayNearestPoint", &Screen::GetDisplayNearestPoint) + #if defined(OS_MACOSX) + .SetMethod("getMenuBarHeight", &Screen::getMenuBarHeight) + #endif .SetMethod("getDisplayMatching", &Screen::GetDisplayMatching); } diff --git a/atom/browser/api/atom_api_screen.h b/atom/browser/api/atom_api_screen.h index 2bbaa13f6df5..6e2af6d6fcb8 100644 --- a/atom/browser/api/atom_api_screen.h +++ b/atom/browser/api/atom_api_screen.h @@ -39,7 +39,9 @@ class Screen : public mate::EventEmitter, std::vector GetAllDisplays(); display::Display GetDisplayNearestPoint(const gfx::Point& point); display::Display GetDisplayMatching(const gfx::Rect& match_rect); - +#if defined(OS_MACOSX) + int getMenuBarHeight(); +#endif // display::DisplayObserver: void OnDisplayAdded(const display::Display& new_display) override; void OnDisplayRemoved(const display::Display& old_display) override; diff --git a/atom/browser/api/atom_api_screen_mac.mm b/atom/browser/api/atom_api_screen_mac.mm new file mode 100644 index 000000000000..85537f082041 --- /dev/null +++ b/atom/browser/api/atom_api_screen_mac.mm @@ -0,0 +1,15 @@ +#import "atom/browser/api/atom_api_screen.h" + +#import + +namespace atom { + +namespace api { +#if defined(OS_MACOSX) +int Screen::getMenuBarHeight(){ + return [[NSApp mainMenu] menuBarHeight]; +} +#endif +}// namespace api + +}// namespace atom diff --git a/docs/api/screen.md b/docs/api/screen.md index 49f0d9f55c9c..9c0af48fd767 100644 --- a/docs/api/screen.md +++ b/docs/api/screen.md @@ -95,6 +95,12 @@ Returns [`Point`](structures/point.md) The current absolute position of the mouse pointer. +### `screen.getMenuBarHeight()` + +Returns [`Integer`] - Height + +The height of toolbar in pixels. + ### `screen.getPrimaryDisplay()` Returns [`Display`](structures/display.md) - The primary display. diff --git a/filenames.gypi b/filenames.gypi index 54ddf4dde195..a55c083ffc45 100644 --- a/filenames.gypi +++ b/filenames.gypi @@ -135,6 +135,7 @@ 'atom/browser/api/atom_api_protocol.h', 'atom/browser/api/atom_api_render_process_preferences.cc', 'atom/browser/api/atom_api_render_process_preferences.h', + 'atom/browser/api/atom_api_screen_mac.mm', 'atom/browser/api/atom_api_screen.cc', 'atom/browser/api/atom_api_screen.h', 'atom/browser/api/atom_api_session.cc', From ec0e33e258ed2d05f3977f881b3b62743eeae72f Mon Sep 17 00:00:00 2001 From: Shubham Date: Tue, 23 May 2017 22:39:54 -0400 Subject: [PATCH 2/7] Add mac_os tag to documentation --- docs/api/screen.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/api/screen.md b/docs/api/screen.md index 9c0af48fd767..4ccecfdd65bd 100644 --- a/docs/api/screen.md +++ b/docs/api/screen.md @@ -95,7 +95,7 @@ Returns [`Point`](structures/point.md) The current absolute position of the mouse pointer. -### `screen.getMenuBarHeight()` +### `screen.getMenuBarHeight()` _macOS_ Returns [`Integer`] - Height From 793d5fd1913ba43d42fe4dc72981ccc3081953d8 Mon Sep 17 00:00:00 2001 From: Shubham Date: Tue, 23 May 2017 23:27:55 -0400 Subject: [PATCH 3/7] :art: Fix documentation --- docs/api/screen.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/api/screen.md b/docs/api/screen.md index 4ccecfdd65bd..1f97f60a09bf 100644 --- a/docs/api/screen.md +++ b/docs/api/screen.md @@ -97,7 +97,7 @@ The current absolute position of the mouse pointer. ### `screen.getMenuBarHeight()` _macOS_ -Returns [`Integer`] - Height +Returns `Integer` - Height The height of toolbar in pixels. From 62d9bf9baeb25c30d903db2be3fae84d93fa53e7 Mon Sep 17 00:00:00 2001 From: Shubham Date: Tue, 30 May 2017 17:26:02 -0400 Subject: [PATCH 4/7] :art: :white_check_mark: code comments and test for getMenuBarHeight function --- atom/browser/api/atom_api_screen.cc | 4 ++-- atom/browser/api/atom_api_screen_mac.mm | 9 ++++++--- filenames.gypi | 2 +- spec/api-screen-spec.js | 12 ++++++++++++ 4 files changed, 21 insertions(+), 6 deletions(-) diff --git a/atom/browser/api/atom_api_screen.cc b/atom/browser/api/atom_api_screen.cc index 699bf1136105..a87d6d3598f8 100644 --- a/atom/browser/api/atom_api_screen.cc +++ b/atom/browser/api/atom_api_screen.cc @@ -120,9 +120,9 @@ void Screen::BuildPrototype( .SetMethod("getPrimaryDisplay", &Screen::GetPrimaryDisplay) .SetMethod("getAllDisplays", &Screen::GetAllDisplays) .SetMethod("getDisplayNearestPoint", &Screen::GetDisplayNearestPoint) - #if defined(OS_MACOSX) +#if defined(OS_MACOSX) .SetMethod("getMenuBarHeight", &Screen::getMenuBarHeight) - #endif +#endif .SetMethod("getDisplayMatching", &Screen::GetDisplayMatching); } diff --git a/atom/browser/api/atom_api_screen_mac.mm b/atom/browser/api/atom_api_screen_mac.mm index 85537f082041..56c83fd89f8c 100644 --- a/atom/browser/api/atom_api_screen_mac.mm +++ b/atom/browser/api/atom_api_screen_mac.mm @@ -1,3 +1,7 @@ +// Copyright (c) 2017 GitHub, Inc. +// Use of this source code is governed by the MIT license that can be +// found in the LICENSE file. + #import "atom/browser/api/atom_api_screen.h" #import @@ -5,11 +9,10 @@ namespace atom { namespace api { -#if defined(OS_MACOSX) -int Screen::getMenuBarHeight(){ +int Screen::getMenuBarHeight() { return [[NSApp mainMenu] menuBarHeight]; } -#endif + }// namespace api }// namespace atom diff --git a/filenames.gypi b/filenames.gypi index a55c083ffc45..4d06d42a697e 100644 --- a/filenames.gypi +++ b/filenames.gypi @@ -135,9 +135,9 @@ 'atom/browser/api/atom_api_protocol.h', 'atom/browser/api/atom_api_render_process_preferences.cc', 'atom/browser/api/atom_api_render_process_preferences.h', - 'atom/browser/api/atom_api_screen_mac.mm', 'atom/browser/api/atom_api_screen.cc', 'atom/browser/api/atom_api_screen.h', + 'atom/browser/api/atom_api_screen_mac.mm', 'atom/browser/api/atom_api_session.cc', 'atom/browser/api/atom_api_session.h', 'atom/browser/api/atom_api_system_preferences.cc', diff --git a/spec/api-screen-spec.js b/spec/api-screen-spec.js index 8c4f4305baff..8516e76480f9 100644 --- a/spec/api-screen-spec.js +++ b/spec/api-screen-spec.js @@ -18,4 +18,16 @@ describe('screen module', function () { assert(display.size.height > 0) }) }) + + describe('screen.getMenuBarHeight()', function () { + if (process.platform !== 'darwin') { + return + } + + it('returns an integer', function () { + var screenHeight = screen.getMenuBarHeight() + assert.equal(typeof screenHeight, 'number') + }) + }) + }) From 6537238c0d9cd4fd794e10f8db4b0fa4dabb9237 Mon Sep 17 00:00:00 2001 From: Shubham Date: Tue, 30 May 2017 17:40:06 -0400 Subject: [PATCH 5/7] :art: code structure fix --- spec/api-screen-spec.js | 1 - 1 file changed, 1 deletion(-) diff --git a/spec/api-screen-spec.js b/spec/api-screen-spec.js index 8516e76480f9..93d048acf490 100644 --- a/spec/api-screen-spec.js +++ b/spec/api-screen-spec.js @@ -29,5 +29,4 @@ describe('screen module', function () { assert.equal(typeof screenHeight, 'number') }) }) - }) From e9aa9eaf5e4c4bbcd3a04eb87bdab4f8dc11f858 Mon Sep 17 00:00:00 2001 From: Shubham Date: Sat, 3 Jun 2017 10:56:37 -0400 Subject: [PATCH 6/7] :art:code structure fix --- atom/browser/api/atom_api_screen_mac.mm | 1 - 1 file changed, 1 deletion(-) diff --git a/atom/browser/api/atom_api_screen_mac.mm b/atom/browser/api/atom_api_screen_mac.mm index 56c83fd89f8c..5d4b15dc055a 100644 --- a/atom/browser/api/atom_api_screen_mac.mm +++ b/atom/browser/api/atom_api_screen_mac.mm @@ -3,7 +3,6 @@ // found in the LICENSE file. #import "atom/browser/api/atom_api_screen.h" - #import namespace atom { From 653ef6f8394ecd0ee2360764ee2d0da27623440c Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Mon, 5 Jun 2017 10:33:46 -0700 Subject: [PATCH 7/7] :art: --- atom/browser/api/atom_api_screen.h | 2 ++ atom/browser/api/atom_api_screen_mac.mm | 1 + docs/api/screen.md | 4 +--- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/atom/browser/api/atom_api_screen.h b/atom/browser/api/atom_api_screen.h index 6e2af6d6fcb8..1af170327d45 100644 --- a/atom/browser/api/atom_api_screen.h +++ b/atom/browser/api/atom_api_screen.h @@ -39,9 +39,11 @@ class Screen : public mate::EventEmitter, std::vector GetAllDisplays(); display::Display GetDisplayNearestPoint(const gfx::Point& point); display::Display GetDisplayMatching(const gfx::Rect& match_rect); + #if defined(OS_MACOSX) int getMenuBarHeight(); #endif + // display::DisplayObserver: void OnDisplayAdded(const display::Display& new_display) override; void OnDisplayRemoved(const display::Display& old_display) override; diff --git a/atom/browser/api/atom_api_screen_mac.mm b/atom/browser/api/atom_api_screen_mac.mm index 5d4b15dc055a..0d22fad5b8b5 100644 --- a/atom/browser/api/atom_api_screen_mac.mm +++ b/atom/browser/api/atom_api_screen_mac.mm @@ -8,6 +8,7 @@ namespace atom { namespace api { + int Screen::getMenuBarHeight() { return [[NSApp mainMenu] menuBarHeight]; } diff --git a/docs/api/screen.md b/docs/api/screen.md index 1f97f60a09bf..e84da88c831b 100644 --- a/docs/api/screen.md +++ b/docs/api/screen.md @@ -97,9 +97,7 @@ The current absolute position of the mouse pointer. ### `screen.getMenuBarHeight()` _macOS_ -Returns `Integer` - Height - -The height of toolbar in pixels. +Returns `Integer` - The height of the menu bar in pixels. ### `screen.getPrimaryDisplay()`