custom window level as string

This commit is contained in:
adammeyer 2016-09-21 22:49:06 -04:00
parent b35bde662a
commit 783d47f78b
7 changed files with 28 additions and 12 deletions

View file

@ -487,7 +487,7 @@ bool Window::IsClosable() {
} }
void Window::SetAlwaysOnTop(bool top, mate::Arguments* args) { void Window::SetAlwaysOnTop(bool top, mate::Arguments* args) {
int level = 0; std::string level = "floating";
args->GetNext(&level); args->GetNext(&level);
window_->SetAlwaysOnTop(top, level); window_->SetAlwaysOnTop(top, level);
} }

View file

@ -118,7 +118,7 @@ class NativeWindow : public base::SupportsUserData,
virtual bool IsFullScreenable() = 0; virtual bool IsFullScreenable() = 0;
virtual void SetClosable(bool closable) = 0; virtual void SetClosable(bool closable) = 0;
virtual bool IsClosable() = 0; virtual bool IsClosable() = 0;
virtual void SetAlwaysOnTop(bool top, int level = 0) = 0; virtual void SetAlwaysOnTop(bool top, const std::string& level) = 0;
virtual bool IsAlwaysOnTop() = 0; virtual bool IsAlwaysOnTop() = 0;
virtual void Center() = 0; virtual void Center() = 0;
virtual void SetTitle(const std::string& title) = 0; virtual void SetTitle(const std::string& title) = 0;

View file

@ -64,7 +64,7 @@ class NativeWindowMac : public NativeWindow,
bool IsFullScreenable() override; bool IsFullScreenable() override;
void SetClosable(bool closable) override; void SetClosable(bool closable) override;
bool IsClosable() override; bool IsClosable() override;
void SetAlwaysOnTop(bool top, int level) override; void SetAlwaysOnTop(bool top, const std::string& level) override;
bool IsAlwaysOnTop() override; bool IsAlwaysOnTop() override;
void Center() override; void Center() override;
void SetTitle(const std::string& title) override; void SetTitle(const std::string& title) override;

View file

@ -943,11 +943,28 @@ bool NativeWindowMac::IsClosable() {
return [window_ styleMask] & NSClosableWindowMask; return [window_ styleMask] & NSClosableWindowMask;
} }
void NativeWindowMac::SetAlwaysOnTop(bool top, int level) { void NativeWindowMac::SetAlwaysOnTop(bool top, std::string level) {
if (!level) { int intLevel;
level = NSFloatingWindowLevel; if (level == "normal") {
intLevel = NSNormalWindowLevel;
} else if (level == "floating") {
intLevel = NSFloatingWindowLevel;
} else if (level == "torn-off-menu") {
intLevel = NSTornOffMenuWindowLevel;
} else if (level == "modal-panel") {
intLevel = NSModalPanelWindowLevel;
} else if (level == "main-menu") {
intLevel = NSMainMenuWindowLevel;
} else if (level == "status") {
intLevel = NSStatusWindowLevel;
} else if (level == "pop-up-menu") {
intLevel = NSPopUpMenuWindowLevel;
} else if (level == "screen-saver") {
intLevel = NSScreenSaverWindowLevel;
} else if (level == "dock") {
intLevel = NSDockWindowLevel;
} }
[window_ setLevel:(top ? level : NSNormalWindowLevel)]; [window_ setLevel:(top ? intLevel : NSNormalWindowLevel)];
} }
bool NativeWindowMac::IsAlwaysOnTop() { bool NativeWindowMac::IsAlwaysOnTop() {

View file

@ -682,7 +682,7 @@ bool NativeWindowViews::IsClosable() {
#endif #endif
} }
void NativeWindowViews::SetAlwaysOnTop(bool top, int level) { void NativeWindowViews::SetAlwaysOnTop(bool top, const std::string& level) {
window_->SetAlwaysOnTop(top, level); window_->SetAlwaysOnTop(top, level);
} }

View file

@ -84,7 +84,7 @@ class NativeWindowViews : public NativeWindow,
bool IsFullScreenable() override; bool IsFullScreenable() override;
void SetClosable(bool closable) override; void SetClosable(bool closable) override;
bool IsClosable() override; bool IsClosable() override;
void SetAlwaysOnTop(bool top, int level) override; void SetAlwaysOnTop(bool top, const std::string& level) override;
bool IsAlwaysOnTop() override; bool IsAlwaysOnTop() override;
void Center() override; void Center() override;
void SetTitle(const std::string& title) override; void SetTitle(const std::string& title) override;

View file

@ -812,14 +812,13 @@ returns `true`.
#### `win.setAlwaysOnTop(flag[, level])` #### `win.setAlwaysOnTop(flag[, level])`
* `flag` Boolean * `flag` Boolean
* `level` Integer (optional) macOS * `level` String (optional) _macOS_ - Options include (`normal`, `floating`, `torn-off-menu`,
`modal-panel`, `main-menu`, `status`, `pop-up-menu`, `screen-saver`, `dock`). Default is `floating`.
Sets whether the window should show always on top of other windows. After Sets whether the window should show always on top of other windows. After
setting this, the window is still a normal window, not a toolbox window which setting this, the window is still a normal window, not a toolbox window which
can not be focused on. can not be focused on.
A custom level can be set on MacOS that will override the default `NSFloatingWindowLevel`.
#### `win.isAlwaysOnTop()` #### `win.isAlwaysOnTop()`
Returns whether the window is always on top of other windows. Returns whether the window is always on top of other windows.