Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 5210286

Browse files
committed
[API] Add 'maximize' and 'unmaximize' event for Window, fix nwjs#201.
1 parent 10c21ae commit 5210286

4 files changed

Lines changed: 25 additions & 1 deletion

File tree

src/browser/native_window_gtk.cc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -504,7 +504,7 @@ gboolean NativeWindowGtk::OnWindowState(GtkWidget* window,
504504
if (event->new_window_state & GDK_WINDOW_STATE_MAXIMIZED)
505505
shell()->SendEvent("maximize");
506506
else
507-
shell()->SendEvent("demaximize");
507+
shell()->SendEvent("unmaximize");
508508
break;
509509
case GDK_WINDOW_STATE_FULLSCREEN:
510510
if (event->new_window_state & GDK_WINDOW_STATE_FULLSCREEN)

src/browser/native_window_mac.mm

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,18 @@ - (void)windowDidDeminiaturize:(NSNotification *)notification {
127127
shell_->SendEvent("restore");
128128
}
129129

130+
- (BOOL)windowShouldZoom:(NSWindow*)window toFrame:(NSRect)newFrame {
131+
// Cocoa doen't have concept of maximize/unmaximize, so wee need to emulate
132+
// them by calculating size change when zooming.
133+
if (newFrame.size.width < [window frame].size.width ||
134+
newFrame.size.height < [window frame].size.height)
135+
shell_->SendEvent("unmaximize");
136+
else
137+
shell_->SendEvent("maximize");
138+
139+
return YES;
140+
}
141+
130142
- (void)cleanup:(id)window {
131143
delete shell_;
132144

src/browser/native_window_win.cc

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -575,6 +575,10 @@ bool NativeWindowWin::ExecuteWindowsCommand(int command_id) {
575575
} else if (command_id == SC_RESTORE && is_minimized_) {
576576
is_minimized_ = false;
577577
shell()->SendEvent("restore");
578+
} else if (command_id == SC_RESTORE && !is_minimized_) {
579+
shell()->SendEvent("unmaximize");
580+
} else if (command_id == SC_MAXIMIZE) {
581+
shell()->SendEvent("maximize");
578582
}
579583

580584
return false;

tests/window/popup.html

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,14 @@
4242
console.log('Window is restored');
4343
});
4444

45+
win.on('maximize', function() {
46+
console.log('Window is maximized');
47+
});
48+
49+
win.on('unmaximize', function() {
50+
console.log('Window is unmaximized');
51+
});
52+
4553
window.onload = function() {
4654
gui.Window.get().show();
4755
}

0 commit comments

Comments
 (0)