Skip to content

Commit

Permalink
chore: add undocumented getAlwaysOnTopLevel
Browse files Browse the repository at this point in the history
  • Loading branch information
codebytere committed Jun 22, 2021
1 parent 44cbc42 commit bf37970
Show file tree
Hide file tree
Showing 6 changed files with 44 additions and 8 deletions.
22 changes: 14 additions & 8 deletions shell/browser/api/electron_api_base_window.cc
Expand Up @@ -559,6 +559,14 @@ bool BaseWindow::IsAlwaysOnTop() {
return window_->GetZOrderLevel() != ui::ZOrderLevel::kNormal;
}

std::string BaseWindow::GetAlwaysOnTopLevel() {
return window_->GetAlwaysOnTopLevel();
}

int BaseWindow::GetZOrderLevel() {
return static_cast<int>(window_->GetZOrderLevel());
}

void BaseWindow::Center() {
window_->Center();
}
Expand Down Expand Up @@ -1226,6 +1234,8 @@ void BaseWindow::BuildPrototype(v8::Isolate* isolate,
.SetMethod("isClosable", &BaseWindow::IsClosable)
.SetMethod("setAlwaysOnTop", &BaseWindow::SetAlwaysOnTop)
.SetMethod("isAlwaysOnTop", &BaseWindow::IsAlwaysOnTop)
.SetMethod("getAlwaysOnTopLevel", &BaseWindow::GetAlwaysOnTopLevel)
.SetMethod("getZOrderLevel", &BaseWindow::GetZOrderLevel)
.SetMethod("center", &BaseWindow::Center)
.SetMethod("setPosition", &BaseWindow::SetPosition)
.SetMethod("getPosition", &BaseWindow::GetPosition)
Expand Down Expand Up @@ -1270,20 +1280,16 @@ void BaseWindow::BuildPrototype(v8::Isolate* isolate,
&BaseWindow::SetVisibleOnAllWorkspaces)
.SetMethod("isVisibleOnAllWorkspaces",
&BaseWindow::IsVisibleOnAllWorkspaces)
#if defined(OS_MAC)
.SetMethod("setAutoHideCursor", &BaseWindow::SetAutoHideCursor)
#endif
.SetMethod("setVibrancy", &BaseWindow::SetVibrancy)
.SetMethod("_setTouchBarItems", &BaseWindow::SetTouchBar)
.SetMethod("_refreshTouchBarItem", &BaseWindow::RefreshTouchBarItem)
.SetMethod("_setEscapeTouchBarItem", &BaseWindow::SetEscapeTouchBarItem)
#if defined(OS_MAC)
.SetMethod("setAutoHideCursor", &BaseWindow::SetAutoHideCursor)
.SetMethod("setTrafficLightPosition",
&BaseWindow::SetTrafficLightPosition)
.SetMethod("getTrafficLightPosition",
&BaseWindow::GetTrafficLightPosition)
#endif
.SetMethod("_setTouchBarItems", &BaseWindow::SetTouchBar)
.SetMethod("_refreshTouchBarItem", &BaseWindow::RefreshTouchBarItem)
.SetMethod("_setEscapeTouchBarItem", &BaseWindow::SetEscapeTouchBarItem)
#if defined(OS_MAC)
.SetMethod("selectPreviousTab", &BaseWindow::SelectPreviousTab)
.SetMethod("selectNextTab", &BaseWindow::SelectNextTab)
.SetMethod("mergeAllWindows", &BaseWindow::MergeAllWindows)
Expand Down
2 changes: 2 additions & 0 deletions shell/browser/api/electron_api_base_window.h
Expand Up @@ -142,6 +142,8 @@ class BaseWindow : public gin_helper::TrackableObject<BaseWindow>,
bool IsClosable();
void SetAlwaysOnTop(bool top, gin_helper::Arguments* args);
bool IsAlwaysOnTop();
std::string GetAlwaysOnTopLevel();
int GetZOrderLevel();
void Center();
void SetPosition(int x, int y, gin_helper::Arguments* args);
std::vector<int> GetPosition();
Expand Down
1 change: 1 addition & 0 deletions shell/browser/native_window.h
Expand Up @@ -129,6 +129,7 @@ class NativeWindow : public base::SupportsUserData,
virtual void SetAlwaysOnTop(ui::ZOrderLevel z_order,
const std::string& level = "floating",
int relativeLevel = 0) = 0;
virtual std::string GetAlwaysOnTopLevel() = 0;
virtual ui::ZOrderLevel GetZOrderLevel() = 0;
virtual void Center() = 0;
virtual void Invalidate() = 0;
Expand Down
1 change: 1 addition & 0 deletions shell/browser/native_window_mac.h
Expand Up @@ -78,6 +78,7 @@ class NativeWindowMac : public NativeWindow,
void SetAlwaysOnTop(ui::ZOrderLevel z_order,
const std::string& level,
int relative_level) override;
std::string GetAlwaysOnTopLevel() override;
ui::ZOrderLevel GetZOrderLevel() override;
void Center() override;
void Invalidate() override;
Expand Down
25 changes: 25 additions & 0 deletions shell/browser/native_window_mac.mm
Expand Up @@ -869,6 +869,31 @@ void ViewDidMoveToSuperview(NSView* self, SEL _cmd) {
SetWindowLevel(level + relative_level);
}

std::string NativeWindowMac::GetAlwaysOnTopLevel() {
std::string level_name = "normal";

int level = [window_ level];
if (level == NSFloatingWindowLevel) {
level_name = "floating";
} else if (level == NSTornOffMenuWindowLevel) {
level_name = "torn-off-menu";
} else if (level == NSModalPanelWindowLevel) {
level_name = "modal-panel";
} else if (level == NSMainMenuWindowLevel) {
level_name = "main-menu";
} else if (level == NSStatusWindowLevel) {
level_name = "status";
} else if (level == NSPopUpMenuWindowLevel) {
level_name = "pop-up-menu";
} else if (level == NSScreenSaverWindowLevel) {
level_name = "screen-saver";
} else if (level == NSDockWindowLevel) {
level_name = "dock";
}

return level_name;
}

void NativeWindowMac::SetWindowLevel(int unbounded_level) {
int level = std::min(
std::max(unbounded_level, CGWindowLevelForKey(kCGMinimumWindowLevelKey)),
Expand Down
1 change: 1 addition & 0 deletions shell/browser/native_window_views.h
Expand Up @@ -93,6 +93,7 @@ class NativeWindowViews : public NativeWindow,
void SetAlwaysOnTop(ui::ZOrderLevel z_order,
const std::string& level,
int relativeLevel) override;
std::string GetAlwaysOnTopLevel() override;
ui::ZOrderLevel GetZOrderLevel() override;
void Center() override;
void Invalidate() override;
Expand Down

0 comments on commit bf37970

Please sign in to comment.