feat: add getBounds() method for BrowserView (#19370)
* implement getBounds on mac * add Linux/Win impl * add test * add docs
This commit is contained in:
parent
c06007175f
commit
42a483ad27
9 changed files with 39 additions and 0 deletions
|
@ -94,6 +94,12 @@ Returns `Boolean` - Whether the view is destroyed.
|
||||||
|
|
||||||
Resizes and moves the view to the supplied bounds relative to the window.
|
Resizes and moves the view to the supplied bounds relative to the window.
|
||||||
|
|
||||||
|
#### `view.getBounds()` _Experimental_
|
||||||
|
|
||||||
|
Returns [`Rectangle`](structures/rectangle.md)
|
||||||
|
|
||||||
|
The `bounds` of this BrowserView instance as `Object`.
|
||||||
|
|
||||||
#### `view.setBackgroundColor(color)` _Experimental_
|
#### `view.setBackgroundColor(color)` _Experimental_
|
||||||
|
|
||||||
* `color` String - Color in `#aarrggbb` or `#argb` form. The alpha channel is
|
* `color` String - Color in `#aarrggbb` or `#argb` form. The alpha channel is
|
||||||
|
|
|
@ -120,6 +120,10 @@ void BrowserView::SetBounds(const gfx::Rect& bounds) {
|
||||||
view_->SetBounds(bounds);
|
view_->SetBounds(bounds);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
gfx::Rect BrowserView::GetBounds() {
|
||||||
|
return view_->GetBounds();
|
||||||
|
}
|
||||||
|
|
||||||
void BrowserView::SetBackgroundColor(const std::string& color_name) {
|
void BrowserView::SetBackgroundColor(const std::string& color_name) {
|
||||||
view_->SetBackgroundColor(ParseHexColor(color_name));
|
view_->SetBackgroundColor(ParseHexColor(color_name));
|
||||||
}
|
}
|
||||||
|
@ -140,6 +144,7 @@ void BrowserView::BuildPrototype(v8::Isolate* isolate,
|
||||||
.MakeDestroyable()
|
.MakeDestroyable()
|
||||||
.SetMethod("setAutoResize", &BrowserView::SetAutoResize)
|
.SetMethod("setAutoResize", &BrowserView::SetAutoResize)
|
||||||
.SetMethod("setBounds", &BrowserView::SetBounds)
|
.SetMethod("setBounds", &BrowserView::SetBounds)
|
||||||
|
.SetMethod("getBounds", &BrowserView::GetBounds)
|
||||||
.SetMethod("setBackgroundColor", &BrowserView::SetBackgroundColor)
|
.SetMethod("setBackgroundColor", &BrowserView::SetBackgroundColor)
|
||||||
.SetProperty("webContents", &BrowserView::GetWebContents)
|
.SetProperty("webContents", &BrowserView::GetWebContents)
|
||||||
.SetProperty("id", &BrowserView::ID);
|
.SetProperty("id", &BrowserView::ID);
|
||||||
|
|
|
@ -59,6 +59,7 @@ class BrowserView : public mate::TrackableObject<BrowserView>,
|
||||||
|
|
||||||
void SetAutoResize(AutoResizeFlags flags);
|
void SetAutoResize(AutoResizeFlags flags);
|
||||||
void SetBounds(const gfx::Rect& bounds);
|
void SetBounds(const gfx::Rect& bounds);
|
||||||
|
gfx::Rect GetBounds();
|
||||||
void SetBackgroundColor(const std::string& color_name);
|
void SetBackgroundColor(const std::string& color_name);
|
||||||
|
|
||||||
v8::Local<v8::Value> GetWebContents();
|
v8::Local<v8::Value> GetWebContents();
|
||||||
|
|
|
@ -43,6 +43,7 @@ class NativeBrowserView {
|
||||||
|
|
||||||
virtual void SetAutoResizeFlags(uint8_t flags) = 0;
|
virtual void SetAutoResizeFlags(uint8_t flags) = 0;
|
||||||
virtual void SetBounds(const gfx::Rect& bounds) = 0;
|
virtual void SetBounds(const gfx::Rect& bounds) = 0;
|
||||||
|
virtual gfx::Rect GetBounds() = 0;
|
||||||
virtual void SetBackgroundColor(SkColor color) = 0;
|
virtual void SetBackgroundColor(SkColor color) = 0;
|
||||||
|
|
||||||
// Called when the window needs to update its draggable region.
|
// Called when the window needs to update its draggable region.
|
||||||
|
|
|
@ -21,6 +21,7 @@ class NativeBrowserViewMac : public NativeBrowserView {
|
||||||
|
|
||||||
void SetAutoResizeFlags(uint8_t flags) override;
|
void SetAutoResizeFlags(uint8_t flags) override;
|
||||||
void SetBounds(const gfx::Rect& bounds) override;
|
void SetBounds(const gfx::Rect& bounds) override;
|
||||||
|
gfx::Rect GetBounds() override;
|
||||||
void SetBackgroundColor(SkColor color) override;
|
void SetBackgroundColor(SkColor color) override;
|
||||||
|
|
||||||
void UpdateDraggableRegions(
|
void UpdateDraggableRegions(
|
||||||
|
|
|
@ -201,6 +201,17 @@ void NativeBrowserViewMac::SetBounds(const gfx::Rect& bounds) {
|
||||||
bounds.width(), bounds.height());
|
bounds.width(), bounds.height());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
gfx::Rect NativeBrowserViewMac::GetBounds() {
|
||||||
|
NSView* view =
|
||||||
|
GetInspectableWebContentsView()->GetNativeView().GetNativeNSView();
|
||||||
|
const int superview_height =
|
||||||
|
(view.superview) ? view.superview.frame.size.height : 0;
|
||||||
|
return gfx::Rect(
|
||||||
|
view.frame.origin.x,
|
||||||
|
superview_height - view.frame.origin.y - view.frame.size.height,
|
||||||
|
view.frame.size.width, view.frame.size.height);
|
||||||
|
}
|
||||||
|
|
||||||
void NativeBrowserViewMac::SetBackgroundColor(SkColor color) {
|
void NativeBrowserViewMac::SetBackgroundColor(SkColor color) {
|
||||||
auto* view =
|
auto* view =
|
||||||
GetInspectableWebContentsView()->GetNativeView().GetNativeNSView();
|
GetInspectableWebContentsView()->GetNativeView().GetNativeNSView();
|
||||||
|
|
|
@ -97,6 +97,10 @@ void NativeBrowserViewViews::SetBounds(const gfx::Rect& bounds) {
|
||||||
ResetAutoResizeProportions();
|
ResetAutoResizeProportions();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
gfx::Rect NativeBrowserViewViews::GetBounds() {
|
||||||
|
return GetInspectableWebContentsView()->GetView()->bounds();
|
||||||
|
}
|
||||||
|
|
||||||
void NativeBrowserViewViews::SetBackgroundColor(SkColor color) {
|
void NativeBrowserViewViews::SetBackgroundColor(SkColor color) {
|
||||||
auto* view = GetInspectableWebContentsView()->GetView();
|
auto* view = GetInspectableWebContentsView()->GetView();
|
||||||
view->SetBackground(views::CreateSolidBackground(color));
|
view->SetBackground(views::CreateSolidBackground(color));
|
||||||
|
|
|
@ -24,6 +24,7 @@ class NativeBrowserViewViews : public NativeBrowserView {
|
||||||
// NativeBrowserView:
|
// NativeBrowserView:
|
||||||
void SetAutoResizeFlags(uint8_t flags) override;
|
void SetAutoResizeFlags(uint8_t flags) override;
|
||||||
void SetBounds(const gfx::Rect& bounds) override;
|
void SetBounds(const gfx::Rect& bounds) override;
|
||||||
|
gfx::Rect GetBounds() override;
|
||||||
void SetBackgroundColor(SkColor color) override;
|
void SetBackgroundColor(SkColor color) override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
|
@ -92,6 +92,15 @@ describe('BrowserView module', () => {
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
|
describe('BrowserView.getBounds()', () => {
|
||||||
|
it('returns the current bounds', () => {
|
||||||
|
view = new BrowserView()
|
||||||
|
const bounds = { x: 10, y: 20, width: 30, height: 40 }
|
||||||
|
view.setBounds(bounds)
|
||||||
|
expect(view.getBounds()).to.deep.equal(bounds)
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
describe('BrowserWindow.setBrowserView()', () => {
|
describe('BrowserWindow.setBrowserView()', () => {
|
||||||
it('does not throw for valid args', () => {
|
it('does not throw for valid args', () => {
|
||||||
view = new BrowserView()
|
view = new BrowserView()
|
||||||
|
|
Loading…
Reference in a new issue