feat: add BrowserWindow.isOccluded()
(#38982)
feat: add BrowserWindow.isOccluded()
This commit is contained in:
parent
08236f7a9e
commit
768ece6b54
9 changed files with 89 additions and 2 deletions
|
@ -355,6 +355,10 @@ bool BaseWindow::IsVisible() const {
|
|||
return window_->IsVisible();
|
||||
}
|
||||
|
||||
bool BaseWindow::IsOccluded() const {
|
||||
return window_->IsOccluded();
|
||||
}
|
||||
|
||||
bool BaseWindow::IsEnabled() const {
|
||||
return window_->IsEnabled();
|
||||
}
|
||||
|
@ -1086,6 +1090,7 @@ void BaseWindow::BuildPrototype(v8::Isolate* isolate,
|
|||
.SetMethod("showInactive", &BaseWindow::ShowInactive)
|
||||
.SetMethod("hide", &BaseWindow::Hide)
|
||||
.SetMethod("isVisible", &BaseWindow::IsVisible)
|
||||
.SetMethod("isOccluded", &BaseWindow::IsOccluded)
|
||||
.SetMethod("isEnabled", &BaseWindow::IsEnabled)
|
||||
.SetMethod("setEnabled", &BaseWindow::SetEnabled)
|
||||
.SetMethod("maximize", &BaseWindow::Maximize)
|
||||
|
|
|
@ -98,6 +98,7 @@ class BaseWindow : public gin_helper::TrackableObject<BaseWindow>,
|
|||
void ShowInactive();
|
||||
void Hide();
|
||||
bool IsVisible() const;
|
||||
bool IsOccluded() const;
|
||||
bool IsEnabled() const;
|
||||
void SetEnabled(bool enable);
|
||||
void Maximize();
|
||||
|
|
|
@ -87,6 +87,7 @@ class NativeWindow : public base::SupportsUserData,
|
|||
virtual void Show() = 0;
|
||||
virtual void ShowInactive() = 0;
|
||||
virtual void Hide() = 0;
|
||||
virtual bool IsOccluded() const = 0;
|
||||
virtual bool IsVisible() const = 0;
|
||||
virtual bool IsEnabled() const = 0;
|
||||
virtual void SetEnabled(bool enable) = 0;
|
||||
|
|
|
@ -44,6 +44,7 @@ class NativeWindowMac : public NativeWindow,
|
|||
void Show() override;
|
||||
void ShowInactive() override;
|
||||
void Hide() override;
|
||||
bool IsOccluded() const override;
|
||||
bool IsVisible() const override;
|
||||
bool IsEnabled() const override;
|
||||
void SetEnabled(bool enable) override;
|
||||
|
|
|
@ -561,9 +561,12 @@ void NativeWindowMac::Hide() {
|
|||
[window_ orderOut:nil];
|
||||
}
|
||||
|
||||
bool NativeWindowMac::IsOccluded() const {
|
||||
return !([window_ occlusionState] & NSWindowOcclusionStateVisible);
|
||||
}
|
||||
|
||||
bool NativeWindowMac::IsVisible() const {
|
||||
bool occluded = [window_ occlusionState] == NSWindowOcclusionStateVisible;
|
||||
return [window_ isVisible] && !occluded && !IsMinimized();
|
||||
return [window_ isVisible] && !IsMinimized();
|
||||
}
|
||||
|
||||
bool NativeWindowMac::IsEnabled() const {
|
||||
|
|
|
@ -562,6 +562,14 @@ void NativeWindowViews::Hide() {
|
|||
#endif
|
||||
}
|
||||
|
||||
bool NativeWindowViews::IsOccluded() const {
|
||||
if (!GetNativeWindow())
|
||||
return false;
|
||||
auto occlusion_state =
|
||||
GetNativeWindow()->GetHost()->GetNativeWindowOcclusionState();
|
||||
return occlusion_state == aura::Window::OcclusionState::OCCLUDED;
|
||||
}
|
||||
|
||||
bool NativeWindowViews::IsVisible() const {
|
||||
#if BUILDFLAG(IS_WIN)
|
||||
// widget()->IsVisible() calls ::IsWindowVisible, which returns non-zero if a
|
||||
|
|
|
@ -56,6 +56,7 @@ class NativeWindowViews : public NativeWindow,
|
|||
void Hide() override;
|
||||
bool IsVisible() const override;
|
||||
bool IsEnabled() const override;
|
||||
bool IsOccluded() const override;
|
||||
void SetEnabled(bool enable) override;
|
||||
void Maximize() override;
|
||||
void Unmaximize() override;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue