feat: add 'resized' event to BrowserWindow (#26216)
Also adds 'moved' event to BrowserWindow on Windows.
This commit is contained in:
parent
bb3fb548d8
commit
83d30c5c2a
10 changed files with 59 additions and 3 deletions
|
@ -222,6 +222,10 @@ void BaseWindow::OnWindowResize() {
|
|||
Emit("resize");
|
||||
}
|
||||
|
||||
void BaseWindow::OnWindowResized() {
|
||||
Emit("resized");
|
||||
}
|
||||
|
||||
void BaseWindow::OnWindowWillMove(const gfx::Rect& new_bounds,
|
||||
bool* prevent_default) {
|
||||
if (Emit("will-move", new_bounds)) {
|
||||
|
|
|
@ -63,6 +63,7 @@ class BaseWindow : public gin_helper::TrackableObject<BaseWindow>,
|
|||
void OnWindowWillResize(const gfx::Rect& new_bounds,
|
||||
bool* prevent_default) override;
|
||||
void OnWindowResize() override;
|
||||
void OnWindowResized() override;
|
||||
void OnWindowWillMove(const gfx::Rect& new_bounds,
|
||||
bool* prevent_default) override;
|
||||
void OnWindowMove() override;
|
||||
|
|
|
@ -497,6 +497,11 @@ void NativeWindow::NotifyWindowResize() {
|
|||
observer.OnWindowResize();
|
||||
}
|
||||
|
||||
void NativeWindow::NotifyWindowResized() {
|
||||
for (NativeWindowObserver& observer : observers_)
|
||||
observer.OnWindowResized();
|
||||
}
|
||||
|
||||
void NativeWindow::NotifyWindowMove() {
|
||||
for (NativeWindowObserver& observer : observers_)
|
||||
observer.OnWindowMove();
|
||||
|
|
|
@ -271,6 +271,7 @@ class NativeWindow : public base::SupportsUserData,
|
|||
void NotifyWindowWillResize(const gfx::Rect& new_bounds,
|
||||
bool* prevent_default);
|
||||
void NotifyWindowResize();
|
||||
void NotifyWindowResized();
|
||||
void NotifyWindowWillMove(const gfx::Rect& new_bounds, bool* prevent_default);
|
||||
void NotifyWindowMoved();
|
||||
void NotifyWindowScrollTouchBegin();
|
||||
|
|
|
@ -74,6 +74,7 @@ class NativeWindowObserver : public base::CheckedObserver {
|
|||
virtual void OnWindowWillResize(const gfx::Rect& new_bounds,
|
||||
bool* prevent_default) {}
|
||||
virtual void OnWindowResize() {}
|
||||
virtual void OnWindowResized() {}
|
||||
virtual void OnWindowWillMove(const gfx::Rect& new_bounds,
|
||||
bool* prevent_default) {}
|
||||
virtual void OnWindowMove() {}
|
||||
|
|
|
@ -283,6 +283,12 @@ class NativeWindowViews : public NativeWindow,
|
|||
|
||||
// Whether we want to set window placement without side effect.
|
||||
bool is_setting_window_placement_ = false;
|
||||
|
||||
// Whether the window is currently being resized.
|
||||
bool is_resizing_ = false;
|
||||
|
||||
// Whether the window is currently being moved.
|
||||
bool is_moving_ = false;
|
||||
#endif
|
||||
|
||||
// Handles unhandled keyboard messages coming back from the renderer process.
|
||||
|
|
|
@ -259,6 +259,7 @@ bool NativeWindowViews::PreHandleMSG(UINT message,
|
|||
return taskbar_host_.HandleThumbarButtonEvent(LOWORD(w_param));
|
||||
return false;
|
||||
case WM_SIZING: {
|
||||
is_resizing_ = true;
|
||||
bool prevent_default = false;
|
||||
NotifyWindowWillResize(gfx::Rect(*reinterpret_cast<RECT*>(l_param)),
|
||||
&prevent_default);
|
||||
|
@ -274,7 +275,19 @@ bool NativeWindowViews::PreHandleMSG(UINT message,
|
|||
HandleSizeEvent(w_param, l_param);
|
||||
return false;
|
||||
}
|
||||
case WM_EXITSIZEMOVE: {
|
||||
if (is_resizing_) {
|
||||
NotifyWindowResized();
|
||||
is_resizing_ = false;
|
||||
}
|
||||
if (is_moving_) {
|
||||
NotifyWindowMoved();
|
||||
is_moving_ = false;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
case WM_MOVING: {
|
||||
is_moving_ = true;
|
||||
bool prevent_default = false;
|
||||
NotifyWindowWillMove(gfx::Rect(*reinterpret_cast<RECT*>(l_param)),
|
||||
&prevent_default);
|
||||
|
|
|
@ -201,6 +201,7 @@ using TitleBarStyle = electron::NativeWindowMac::TitleBarStyle;
|
|||
}
|
||||
|
||||
- (void)windowDidEndLiveResize:(NSNotification*)notification {
|
||||
shell_->NotifyWindowResized();
|
||||
if (is_zooming_) {
|
||||
if (shell_->IsMaximized())
|
||||
shell_->NotifyWindowMaximize();
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue