Skip to content

Commit

Permalink
feat: add evt listeners for SetAlwaysOnTop (#14951)
Browse files Browse the repository at this point in the history
* feat: add evt listeners for SetAlwaysOnTop

* only emit one event on AlwaysOnTop change

* docs: add new alwaysontop event

* dont emit if theres no change

* address feedback from review
  • Loading branch information
codebytere authored and ckerr committed Oct 4, 2018
1 parent d810f08 commit 27bbf6a
Show file tree
Hide file tree
Showing 7 changed files with 24 additions and 0 deletions.
4 changes: 4 additions & 0 deletions atom/browser/api/atom_api_top_level_window.cc
Expand Up @@ -262,6 +262,10 @@ void TopLevelWindow::OnWindowLeaveHtmlFullScreen() {
Emit("leave-html-full-screen");
}

void TopLevelWindow::OnWindowAlwaysOnTopChanged() {
Emit("always-on-top-changed", IsAlwaysOnTop());
}

void TopLevelWindow::OnExecuteWindowsCommand(const std::string& command_name) {
Emit("app-command", command_name);
}
Expand Down
1 change: 1 addition & 0 deletions atom/browser/api/atom_api_top_level_window.h
Expand Up @@ -77,6 +77,7 @@ class TopLevelWindow : public mate::TrackableObject<TopLevelWindow>,
void OnWindowLeaveFullScreen() override;
void OnWindowEnterHtmlFullScreen() override;
void OnWindowLeaveHtmlFullScreen() override;
void OnWindowAlwaysOnTopChanged() override;
void OnExecuteWindowsCommand(const std::string& command_name) override;
void OnTouchBarItemResult(const std::string& item_id,
const base::DictionaryValue& details) override;
Expand Down
5 changes: 5 additions & 0 deletions atom/browser/native_window.cc
Expand Up @@ -537,6 +537,11 @@ void NativeWindow::NotifyWindowLeaveHtmlFullScreen() {
observer.OnWindowLeaveHtmlFullScreen();
}

void NativeWindow::NotifyWindowAlwaysOnTopChanged() {
for (NativeWindowObserver& observer : observers_)
observer.OnWindowAlwaysOnTopChanged();
}

void NativeWindow::NotifyWindowExecuteWindowsCommand(
const std::string& command) {
for (NativeWindowObserver& observer : observers_)
Expand Down
1 change: 1 addition & 0 deletions atom/browser/native_window.h
Expand Up @@ -254,6 +254,7 @@ class NativeWindow : public base::SupportsUserData,
void NotifyWindowLeaveFullScreen();
void NotifyWindowEnterHtmlFullScreen();
void NotifyWindowLeaveHtmlFullScreen();
void NotifyWindowAlwaysOnTopChanged();
void NotifyWindowExecuteWindowsCommand(const std::string& command);
void NotifyTouchBarItemInteraction(const std::string& item_id,
const base::DictionaryValue& details);
Expand Down
1 change: 1 addition & 0 deletions atom/browser/native_window_observer.h
Expand Up @@ -83,6 +83,7 @@ class NativeWindowObserver {
virtual void OnWindowLeaveFullScreen() {}
virtual void OnWindowEnterHtmlFullScreen() {}
virtual void OnWindowLeaveHtmlFullScreen() {}
virtual void OnWindowAlwaysOnTopChanged() {}
virtual void OnTouchBarItemResult(const std::string& item_id,
const base::DictionaryValue& details) {}
virtual void OnNewWindowForTab() {}
Expand Down
3 changes: 3 additions & 0 deletions atom/browser/native_window_views.cc
Expand Up @@ -706,6 +706,9 @@ void NativeWindowViews::SetAlwaysOnTop(bool top,
const std::string& level,
int relativeLevel,
std::string* error) {
if (top != widget()->IsAlwaysOnTop())
NativeWindow::NotifyWindowAlwaysOnTopChanged();

widget()->SetAlwaysOnTop(top);
}

Expand Down
9 changes: 9 additions & 0 deletions docs/api/browser-window.md
Expand Up @@ -542,6 +542,15 @@ Emitted when the window enters a full-screen state triggered by HTML API.

Emitted when the window leaves a full-screen state triggered by HTML API.

#### Event: 'always-on-top-changed' _macOS_

Returns:

* `event` Event
* `isAlwaysOnTop` Boolean

Emitted when the window is set or unset to show always on top of other windows.

#### Event: 'app-command' _Windows_

Returns:
Expand Down

0 comments on commit 27bbf6a

Please sign in to comment.