feat: view.getVisible() (#45409)

* feat: view.getVisible()

Co-authored-by: Samuel Maddock <smaddock@slack-corp.com>

* test: visible apis

Co-authored-by: Samuel Maddock <smaddock@slack-corp.com>

* docs: clarify getVisible

Co-authored-by: Samuel Maddock <smaddock@slack-corp.com>

---------

Co-authored-by: trop[bot] <37223003+trop[bot]@users.noreply.github.com>
Co-authored-by: Samuel Maddock <smaddock@slack-corp.com>
This commit is contained in:
trop[bot] 2025-02-05 15:50:00 -05:00 committed by GitHub
parent a07de0099c
commit f40fc49461
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 26 additions and 1 deletions

View file

@ -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:

View file

@ -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

View file

@ -45,6 +45,7 @@ class View : public gin_helper::EventEmitter<View>,
void SetBackgroundColor(std::optional<WrappedSkColor> color);
void SetBorderRadius(int radius);
void SetVisible(bool visible);
bool GetVisible() const;
// views::ViewObserver
void OnViewBoundsChanged(views::View* observed_view) override;

View file

@ -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();
});
});
});