views: Currently set window's frames.
This commit is contained in:
parent
61db17412c
commit
0a38f3321e
4 changed files with 44 additions and 25 deletions
|
@ -17,7 +17,7 @@
|
||||||
#include "ui/views/controls/webview/webview.h"
|
#include "ui/views/controls/webview/webview.h"
|
||||||
#include "ui/views/layout/fill_layout.h"
|
#include "ui/views/layout/fill_layout.h"
|
||||||
#include "ui/views/window/client_view.h"
|
#include "ui/views/window/client_view.h"
|
||||||
#include "ui/views/window/native_frame_view.h"
|
#include "ui/views/window/custom_frame_view.h"
|
||||||
#include "ui/views/widget/widget.h"
|
#include "ui/views/widget/widget.h"
|
||||||
|
|
||||||
namespace atom {
|
namespace atom {
|
||||||
|
@ -54,19 +54,30 @@ NativeWindowViews::NativeWindowViews(content::WebContents* web_contents,
|
||||||
|
|
||||||
views::Widget::InitParams params;
|
views::Widget::InitParams params;
|
||||||
params.delegate = this;
|
params.delegate = this;
|
||||||
|
params.type = has_frame_ ? views::Widget::InitParams::TYPE_WINDOW :
|
||||||
|
views::Widget::InitParams::TYPE_WINDOW_FRAMELESS;
|
||||||
params.top_level = true;
|
params.top_level = true;
|
||||||
params.remove_standard_frame = !has_frame_;
|
params.remove_standard_frame = true;
|
||||||
window_->Init(params);
|
window_->Init(params);
|
||||||
|
|
||||||
|
// Add web view.
|
||||||
|
SetLayoutManager(new views::FillLayout);
|
||||||
|
set_background(views::Background::CreateStandardPanelBackground());
|
||||||
|
web_view_->SetWebContents(web_contents);
|
||||||
|
AddChildView(web_view_);
|
||||||
|
|
||||||
int width = 800, height = 600;
|
int width = 800, height = 600;
|
||||||
options.Get(switches::kWidth, &width);
|
options.Get(switches::kWidth, &width);
|
||||||
options.Get(switches::kHeight, &height);
|
options.Get(switches::kHeight, &height);
|
||||||
window_->CenterWindow(gfx::Size(width, height));
|
|
||||||
|
|
||||||
SetLayoutManager(new views::FillLayout);
|
bool use_content_size;
|
||||||
set_background(views::Background::CreateStandardPanelBackground());
|
gfx::Rect bounds(0, 0, width, height);
|
||||||
|
if (has_frame_ &&
|
||||||
|
options.Get(switches::kUseContentSize, &use_content_size) &&
|
||||||
|
use_content_size)
|
||||||
|
bounds = window_->non_client_view()->GetWindowBoundsForClientBounds(bounds);
|
||||||
|
|
||||||
web_view_->SetWebContents(web_contents);
|
window_->CenterWindow(bounds.size());
|
||||||
}
|
}
|
||||||
|
|
||||||
NativeWindowViews::~NativeWindowViews() {
|
NativeWindowViews::~NativeWindowViews() {
|
||||||
|
@ -140,13 +151,23 @@ gfx::Size NativeWindowViews::GetSize() {
|
||||||
}
|
}
|
||||||
|
|
||||||
void NativeWindowViews::SetContentSize(const gfx::Size& size) {
|
void NativeWindowViews::SetContentSize(const gfx::Size& size) {
|
||||||
// FIXME
|
if (!has_frame_) {
|
||||||
SetSize(size);
|
SetSize(size);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
gfx::Rect bounds = window_->GetWindowBoundsInScreen();
|
||||||
|
bounds.set_size(size);
|
||||||
|
window_->SetBounds(
|
||||||
|
window_->non_client_view()->GetWindowBoundsForClientBounds(bounds));
|
||||||
}
|
}
|
||||||
|
|
||||||
gfx::Size NativeWindowViews::GetContentSize() {
|
gfx::Size NativeWindowViews::GetContentSize() {
|
||||||
// FIXME
|
if (!has_frame_)
|
||||||
return GetSize();
|
return GetSize();
|
||||||
|
|
||||||
|
return window_->non_client_view()->frame_view()->
|
||||||
|
GetBoundsForClientView().size();
|
||||||
}
|
}
|
||||||
|
|
||||||
void NativeWindowViews::SetMinimumSize(const gfx::Size& size) {
|
void NativeWindowViews::SetMinimumSize(const gfx::Size& size) {
|
||||||
|
@ -166,7 +187,6 @@ gfx::Size NativeWindowViews::GetMaximumSize() {
|
||||||
}
|
}
|
||||||
|
|
||||||
void NativeWindowViews::SetResizable(bool resizable) {
|
void NativeWindowViews::SetResizable(bool resizable) {
|
||||||
// FIXME
|
|
||||||
resizable_ = resizable;
|
resizable_ = resizable;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -179,8 +199,7 @@ void NativeWindowViews::SetAlwaysOnTop(bool top) {
|
||||||
}
|
}
|
||||||
|
|
||||||
bool NativeWindowViews::IsAlwaysOnTop() {
|
bool NativeWindowViews::IsAlwaysOnTop() {
|
||||||
// FIXME
|
return window_->IsAlwaysOnTop();
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void NativeWindowViews::Center() {
|
void NativeWindowViews::Center() {
|
||||||
|
@ -226,13 +245,7 @@ gfx::NativeWindow NativeWindowViews::GetNativeWindow() {
|
||||||
|
|
||||||
void NativeWindowViews::UpdateDraggableRegions(
|
void NativeWindowViews::UpdateDraggableRegions(
|
||||||
const std::vector<DraggableRegion>& regions) {
|
const std::vector<DraggableRegion>& regions) {
|
||||||
}
|
// FIXME
|
||||||
|
|
||||||
void NativeWindowViews::ViewHierarchyChanged(
|
|
||||||
const ViewHierarchyChangedDetails& details) {
|
|
||||||
if (details.is_add && details.child == this) {
|
|
||||||
AddChildView(web_view_);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void NativeWindowViews::DeleteDelegate() {
|
void NativeWindowViews::DeleteDelegate() {
|
||||||
|
@ -286,6 +299,13 @@ views::ClientView* NativeWindowViews::CreateClientView(views::Widget* widget) {
|
||||||
return new NativeWindowClientView(widget, this);
|
return new NativeWindowClientView(widget, this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
views::NonClientFrameView* NativeWindowViews::CreateNonClientFrameView(
|
||||||
|
views::Widget* widget) {
|
||||||
|
views::CustomFrameView* frame_view = new views::CustomFrameView;
|
||||||
|
frame_view->Init(widget);
|
||||||
|
return frame_view;
|
||||||
|
}
|
||||||
|
|
||||||
// static
|
// static
|
||||||
NativeWindow* NativeWindow::Create(content::WebContents* web_contents,
|
NativeWindow* NativeWindow::Create(content::WebContents* web_contents,
|
||||||
const mate::Dictionary& options) {
|
const mate::Dictionary& options) {
|
||||||
|
|
|
@ -69,10 +69,6 @@ class NativeWindowViews : public NativeWindow,
|
||||||
virtual void UpdateDraggableRegions(
|
virtual void UpdateDraggableRegions(
|
||||||
const std::vector<DraggableRegion>& regions) OVERRIDE;
|
const std::vector<DraggableRegion>& regions) OVERRIDE;
|
||||||
|
|
||||||
// views::View:
|
|
||||||
virtual void ViewHierarchyChanged(
|
|
||||||
const ViewHierarchyChangedDetails& details) OVERRIDE;
|
|
||||||
|
|
||||||
// views::WidgetDelegate:
|
// views::WidgetDelegate:
|
||||||
virtual void DeleteDelegate() OVERRIDE;
|
virtual void DeleteDelegate() OVERRIDE;
|
||||||
virtual views::View* GetInitiallyFocusedView() OVERRIDE;
|
virtual views::View* GetInitiallyFocusedView() OVERRIDE;
|
||||||
|
@ -86,6 +82,8 @@ class NativeWindowViews : public NativeWindow,
|
||||||
virtual const views::Widget* GetWidget() const OVERRIDE;
|
virtual const views::Widget* GetWidget() const OVERRIDE;
|
||||||
virtual views::View* GetContentsView() OVERRIDE;
|
virtual views::View* GetContentsView() OVERRIDE;
|
||||||
virtual views::ClientView* CreateClientView(views::Widget* widget) OVERRIDE;
|
virtual views::ClientView* CreateClientView(views::Widget* widget) OVERRIDE;
|
||||||
|
virtual views::NonClientFrameView* CreateNonClientFrameView(
|
||||||
|
views::Widget* widget) OVERRIDE;
|
||||||
|
|
||||||
scoped_ptr<views::Widget> window_;
|
scoped_ptr<views::Widget> window_;
|
||||||
views::WebView* web_view_; // managed by window_.
|
views::WebView* web_view_; // managed by window_.
|
||||||
|
|
|
@ -127,6 +127,7 @@ MessageDialog::MessageDialog(NativeWindow* parent_window,
|
||||||
views::Widget::InitParams widget_params;
|
views::Widget::InitParams widget_params;
|
||||||
widget_params.delegate = this;
|
widget_params.delegate = this;
|
||||||
widget_params.top_level = true;
|
widget_params.top_level = true;
|
||||||
|
widget_params.remove_standard_frame = true;
|
||||||
if (parent_window)
|
if (parent_window)
|
||||||
widget_params.parent = parent_window->GetNativeWindow();
|
widget_params.parent = parent_window->GetNativeWindow();
|
||||||
widget_ = new views::Widget;
|
widget_ = new views::Widget;
|
||||||
|
|
2
vendor/brightray
vendored
2
vendor/brightray
vendored
|
@ -1 +1 @@
|
||||||
Subproject commit f8baf4a4bad51536ab013b4ee2edd9d749df695d
|
Subproject commit b2e79c9803b61a9b90aa45af32686e8ef9d4c571
|
Loading…
Reference in a new issue