From e2a7981dd3f99ff7e98b790de4acae586a0d1e25 Mon Sep 17 00:00:00 2001 From: Sam Maddock Date: Fri, 31 Jan 2025 13:27:16 -0500 Subject: [PATCH] feat: view.getVisible() (#44999) * feat: view.getVisible() * test: visible apis * docs: clarify getVisible --- docs/api/view.md | 6 ++++++ shell/browser/api/electron_api_view.cc | 7 ++++++- shell/browser/api/electron_api_view.h | 1 + spec/api-view-spec.ts | 13 +++++++++++++ 4 files changed, 26 insertions(+), 1 deletion(-) diff --git a/docs/api/view.md b/docs/api/view.md index 435367d2787e..32ac190d618e 100644 --- a/docs/api/view.md +++ b/docs/api/view.md @@ -106,6 +106,12 @@ Examples of valid `color` values: * `visible` boolean - If false, the view will be hidden from display. +#### `view.getVisible()` + +Returns `boolean` - Whether the view should be drawn. Note that this is +different from whether the view is visible on screen—it may still be obscured +or out of view. + ### Instance Properties Objects created with `new View` have the following properties: diff --git a/shell/browser/api/electron_api_view.cc b/shell/browser/api/electron_api_view.cc index 6382b0d4fdfe..f36439a98bae 100644 --- a/shell/browser/api/electron_api_view.cc +++ b/shell/browser/api/electron_api_view.cc @@ -387,6 +387,10 @@ void View::SetVisible(bool visible) { view_->SetVisible(visible); } +bool View::GetVisible() const { + return view_ ? view_->GetVisible() : false; +} + void View::OnViewBoundsChanged(views::View* observed_view) { ApplyBorderRadius(); Emit("bounds-changed"); @@ -445,7 +449,8 @@ void View::BuildPrototype(v8::Isolate* isolate, .SetMethod("setBackgroundColor", &View::SetBackgroundColor) .SetMethod("setBorderRadius", &View::SetBorderRadius) .SetMethod("setLayout", &View::SetLayout) - .SetMethod("setVisible", &View::SetVisible); + .SetMethod("setVisible", &View::SetVisible) + .SetMethod("getVisible", &View::GetVisible); } } // namespace electron::api diff --git a/shell/browser/api/electron_api_view.h b/shell/browser/api/electron_api_view.h index 9ae61655eb7f..d63f5abc83b7 100644 --- a/shell/browser/api/electron_api_view.h +++ b/shell/browser/api/electron_api_view.h @@ -45,6 +45,7 @@ class View : public gin_helper::EventEmitter, void SetBackgroundColor(std::optional color); void SetBorderRadius(int radius); void SetVisible(bool visible); + bool GetVisible() const; // views::ViewObserver void OnViewBoundsChanged(views::View* observed_view) override; diff --git a/spec/api-view-spec.ts b/spec/api-view-spec.ts index 4faebbd648c7..48c8ccae0c48 100644 --- a/spec/api-view-spec.ts +++ b/spec/api-view-spec.ts @@ -79,4 +79,17 @@ describe('View', () => { v.setBorderRadius(9999999); v.setBorderRadius(-9999999); }); + + describe('view.getVisible|setVisible', () => { + it('is visible by default', () => { + const v = new View(); + expect(v.getVisible()).to.be.true(); + }); + + it('can be set to not visible', () => { + const v = new View(); + v.setVisible(false); + expect(v.getVisible()).to.be.false(); + }); + }); });