Merge pull request #1633 from deepak1556/window_event_patch
window: adding resize and move events
This commit is contained in:
commit
c244e83e10
10 changed files with 91 additions and 5 deletions
|
@ -124,6 +124,18 @@ void Window::OnWindowRestore() {
|
||||||
Emit("restore");
|
Emit("restore");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Window::OnWindowResize() {
|
||||||
|
Emit("resize");
|
||||||
|
}
|
||||||
|
|
||||||
|
void Window::OnWindowMove() {
|
||||||
|
Emit("move");
|
||||||
|
}
|
||||||
|
|
||||||
|
void Window::OnWindowMoved() {
|
||||||
|
Emit("moved");
|
||||||
|
}
|
||||||
|
|
||||||
void Window::OnWindowEnterFullScreen() {
|
void Window::OnWindowEnterFullScreen() {
|
||||||
Emit("enter-full-screen");
|
Emit("enter-full-screen");
|
||||||
}
|
}
|
||||||
|
|
|
@ -64,6 +64,9 @@ class Window : public mate::EventEmitter,
|
||||||
void OnWindowUnmaximize() override;
|
void OnWindowUnmaximize() override;
|
||||||
void OnWindowMinimize() override;
|
void OnWindowMinimize() override;
|
||||||
void OnWindowRestore() override;
|
void OnWindowRestore() override;
|
||||||
|
void OnWindowResize() override;
|
||||||
|
void OnWindowMove() override;
|
||||||
|
void OnWindowMoved() override;
|
||||||
void OnWindowEnterFullScreen() override;
|
void OnWindowEnterFullScreen() override;
|
||||||
void OnWindowLeaveFullScreen() override;
|
void OnWindowLeaveFullScreen() override;
|
||||||
void OnWindowEnterHtmlFullScreen() override;
|
void OnWindowEnterHtmlFullScreen() override;
|
||||||
|
|
|
@ -535,6 +535,18 @@ void NativeWindow::NotifyWindowRestore() {
|
||||||
FOR_EACH_OBSERVER(NativeWindowObserver, observers_, OnWindowRestore());
|
FOR_EACH_OBSERVER(NativeWindowObserver, observers_, OnWindowRestore());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void NativeWindow::NotifyWindowResize() {
|
||||||
|
FOR_EACH_OBSERVER(NativeWindowObserver, observers_, OnWindowResize());
|
||||||
|
}
|
||||||
|
|
||||||
|
void NativeWindow::NotifyWindowMove() {
|
||||||
|
FOR_EACH_OBSERVER(NativeWindowObserver, observers_, OnWindowMove());
|
||||||
|
}
|
||||||
|
|
||||||
|
void NativeWindow::NotifyWindowMoved() {
|
||||||
|
FOR_EACH_OBSERVER(NativeWindowObserver, observers_, OnWindowMoved());
|
||||||
|
}
|
||||||
|
|
||||||
void NativeWindow::NotifyWindowEnterFullScreen() {
|
void NativeWindow::NotifyWindowEnterFullScreen() {
|
||||||
FOR_EACH_OBSERVER(NativeWindowObserver, observers_,
|
FOR_EACH_OBSERVER(NativeWindowObserver, observers_,
|
||||||
OnWindowEnterFullScreen());
|
OnWindowEnterFullScreen());
|
||||||
|
|
|
@ -207,6 +207,9 @@ class NativeWindow : public brightray::DefaultWebContentsDelegate,
|
||||||
void NotifyWindowUnmaximize();
|
void NotifyWindowUnmaximize();
|
||||||
void NotifyWindowMinimize();
|
void NotifyWindowMinimize();
|
||||||
void NotifyWindowRestore();
|
void NotifyWindowRestore();
|
||||||
|
void NotifyWindowMove();
|
||||||
|
void NotifyWindowResize();
|
||||||
|
void NotifyWindowMoved();
|
||||||
void NotifyWindowEnterFullScreen();
|
void NotifyWindowEnterFullScreen();
|
||||||
void NotifyWindowLeaveFullScreen();
|
void NotifyWindowLeaveFullScreen();
|
||||||
void NotifyWindowEnterHtmlFullScreen();
|
void NotifyWindowEnterHtmlFullScreen();
|
||||||
|
|
|
@ -98,6 +98,15 @@ static const CGFloat kAtomWindowCornerRadius = 4.0;
|
||||||
- (void)windowDidResize:(NSNotification*)notification {
|
- (void)windowDidResize:(NSNotification*)notification {
|
||||||
if (!shell_->has_frame())
|
if (!shell_->has_frame())
|
||||||
shell_->ClipWebView();
|
shell_->ClipWebView();
|
||||||
|
|
||||||
|
shell_->NotifyWindowResize();
|
||||||
|
}
|
||||||
|
|
||||||
|
- (void)windowDidMove:(NSNotification*)notification {
|
||||||
|
// TODO(zcbenz): Remove the alias after figuring out a proper
|
||||||
|
// way to disptach move.
|
||||||
|
shell_->NotifyWindowMove();
|
||||||
|
shell_->NotifyWindowMoved();
|
||||||
}
|
}
|
||||||
|
|
||||||
- (void)windowDidMiniaturize:(NSNotification*)notification {
|
- (void)windowDidMiniaturize:(NSNotification*)notification {
|
||||||
|
|
|
@ -47,6 +47,9 @@ class NativeWindowObserver {
|
||||||
virtual void OnWindowUnmaximize() {}
|
virtual void OnWindowUnmaximize() {}
|
||||||
virtual void OnWindowMinimize() {}
|
virtual void OnWindowMinimize() {}
|
||||||
virtual void OnWindowRestore() {}
|
virtual void OnWindowRestore() {}
|
||||||
|
virtual void OnWindowResize() {}
|
||||||
|
virtual void OnWindowMove() {}
|
||||||
|
virtual void OnWindowMoved() {}
|
||||||
virtual void OnWindowEnterFullScreen() {}
|
virtual void OnWindowEnterFullScreen() {}
|
||||||
virtual void OnWindowLeaveFullScreen() {}
|
virtual void OnWindowLeaveFullScreen() {}
|
||||||
virtual void OnWindowEnterHtmlFullScreen() {}
|
virtual void OnWindowEnterHtmlFullScreen() {}
|
||||||
|
|
|
@ -176,6 +176,7 @@ NativeWindowViews::NativeWindowViews(content::WebContents* web_contents,
|
||||||
options.Get(switches::kWidth, &width);
|
options.Get(switches::kWidth, &width);
|
||||||
options.Get(switches::kHeight, &height);
|
options.Get(switches::kHeight, &height);
|
||||||
gfx::Rect bounds(0, 0, width, height);
|
gfx::Rect bounds(0, 0, width, height);
|
||||||
|
widget_size_ = bounds.size();
|
||||||
|
|
||||||
window_->AddObserver(this);
|
window_->AddObserver(this);
|
||||||
|
|
||||||
|
@ -720,6 +721,17 @@ void NativeWindowViews::OnWidgetActivationChanged(
|
||||||
SetMenuBarVisibility(false);
|
SetMenuBarVisibility(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void NativeWindowViews::OnWidgetBoundsChanged(
|
||||||
|
views::Widget* widget, const gfx::Rect& bounds) {
|
||||||
|
if (widget != window_.get())
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (widget_size_ != bounds.size()) {
|
||||||
|
NotifyWindowResize();
|
||||||
|
widget_size_ = bounds.size();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void NativeWindowViews::DeleteDelegate() {
|
void NativeWindowViews::DeleteDelegate() {
|
||||||
NotifyWindowClosed();
|
NotifyWindowClosed();
|
||||||
}
|
}
|
||||||
|
@ -807,6 +819,10 @@ views::NonClientFrameView* NativeWindowViews::CreateNonClientFrameView(
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void NativeWindowViews::OnWidgetMove() {
|
||||||
|
NotifyWindowMove();
|
||||||
|
}
|
||||||
|
|
||||||
#if defined(OS_WIN)
|
#if defined(OS_WIN)
|
||||||
bool NativeWindowViews::ExecuteWindowsCommand(int command_id) {
|
bool NativeWindowViews::ExecuteWindowsCommand(int command_id) {
|
||||||
// Windows uses the 4 lower order bits of |command_id| for type-specific
|
// Windows uses the 4 lower order bits of |command_id| for type-specific
|
||||||
|
|
|
@ -93,6 +93,8 @@ class NativeWindowViews : public NativeWindow,
|
||||||
// views::WidgetObserver:
|
// views::WidgetObserver:
|
||||||
void OnWidgetActivationChanged(
|
void OnWidgetActivationChanged(
|
||||||
views::Widget* widget, bool active) override;
|
views::Widget* widget, bool active) override;
|
||||||
|
void OnWidgetBoundsChanged(
|
||||||
|
views::Widget* widget, const gfx::Rect& bounds) override;
|
||||||
|
|
||||||
// views::WidgetDelegate:
|
// views::WidgetDelegate:
|
||||||
void DeleteDelegate() override;
|
void DeleteDelegate() override;
|
||||||
|
@ -113,6 +115,7 @@ class NativeWindowViews : public NativeWindow,
|
||||||
views::ClientView* CreateClientView(views::Widget* widget) override;
|
views::ClientView* CreateClientView(views::Widget* widget) override;
|
||||||
views::NonClientFrameView* CreateNonClientFrameView(
|
views::NonClientFrameView* CreateNonClientFrameView(
|
||||||
views::Widget* widget) override;
|
views::Widget* widget) override;
|
||||||
|
void OnWidgetMove() override;
|
||||||
#if defined(OS_WIN)
|
#if defined(OS_WIN)
|
||||||
bool ExecuteWindowsCommand(int command_id) override;
|
bool ExecuteWindowsCommand(int command_id) override;
|
||||||
#endif
|
#endif
|
||||||
|
@ -173,6 +176,7 @@ class NativeWindowViews : public NativeWindow,
|
||||||
std::string title_;
|
std::string title_;
|
||||||
gfx::Size minimum_size_;
|
gfx::Size minimum_size_;
|
||||||
gfx::Size maximum_size_;
|
gfx::Size maximum_size_;
|
||||||
|
gfx::Size widget_size_;
|
||||||
|
|
||||||
scoped_ptr<SkRegion> draggable_region_;
|
scoped_ptr<SkRegion> draggable_region_;
|
||||||
|
|
||||||
|
|
|
@ -171,6 +171,18 @@ Emitted when window is minimized.
|
||||||
|
|
||||||
Emitted when window is restored from minimized state.
|
Emitted when window is restored from minimized state.
|
||||||
|
|
||||||
|
### Event: 'resize'
|
||||||
|
|
||||||
|
Emitted when window is getting resized.
|
||||||
|
|
||||||
|
### Event: 'move'
|
||||||
|
|
||||||
|
Emitted when the window is getting moved to a new position.
|
||||||
|
|
||||||
|
### Event: 'moved'
|
||||||
|
|
||||||
|
Emitted once when the window is moved to a new position.
|
||||||
|
|
||||||
### Event: 'enter-full-screen'
|
### Event: 'enter-full-screen'
|
||||||
|
|
||||||
Emitted when window enters full screen state.
|
Emitted when window enters full screen state.
|
||||||
|
|
|
@ -90,12 +90,24 @@ describe 'browser-window module', ->
|
||||||
done()
|
done()
|
||||||
|
|
||||||
describe 'BrowserWindow.setSize(width, height)', ->
|
describe 'BrowserWindow.setSize(width, height)', ->
|
||||||
it 'sets the window size', ->
|
it 'sets the window size', (done) ->
|
||||||
size = [400, 400]
|
size = [20, 400]
|
||||||
|
w.on 'resize', ->
|
||||||
|
newSize = w.getSize()
|
||||||
|
assert.equal newSize[0], size[0]
|
||||||
|
assert.equal newSize[1], size[1]
|
||||||
|
done()
|
||||||
w.setSize size[0], size[1]
|
w.setSize size[0], size[1]
|
||||||
after = w.getSize()
|
|
||||||
assert.equal after[0], size[0]
|
describe 'BrowserWindow.setPosition(x, y)', ->
|
||||||
assert.equal after[1], size[1]
|
it 'sets the window position', (done) ->
|
||||||
|
pos = [10, 10]
|
||||||
|
w.on 'move', ->
|
||||||
|
newPos = w.getPosition()
|
||||||
|
assert.equal newPos[0], pos[0]
|
||||||
|
assert.equal newPos[1], pos[1]
|
||||||
|
done()
|
||||||
|
w.setPosition pos[0], pos[1]
|
||||||
|
|
||||||
describe 'BrowserWindow.setContentSize(width, height)', ->
|
describe 'BrowserWindow.setContentSize(width, height)', ->
|
||||||
it 'sets the content size', ->
|
it 'sets the content size', ->
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue