Browse Source

Merge pull request #4686 from atom/fullscreen-logic

Improve fullscreen related logic code
Cheng Zhao 9 years ago
parent
commit
a0c39c64cc

+ 5 - 6
atom/browser/native_window.cc

@@ -133,18 +133,17 @@ void NativeWindow::InitFromOptions(const mate::Dictionary& options) {
   if (options.Get(options::kAlwaysOnTop, &top) && top) {
     SetAlwaysOnTop(true);
   }
-
-  // Disable fullscreen button when 'fullscreenable' is false or 'fullscreen'
-  // is specified to false.
+  // Disable fullscreen button if 'fullscreen' is specified to false.
   bool fullscreenable = true;
-  options.Get(options::kFullScreenable, &fullscreenable);
   bool fullscreen = false;
   if (options.Get(options::kFullscreen, &fullscreen) && !fullscreen)
     fullscreenable = false;
+  // Overriden by 'fullscreenable'.
+  options.Get(options::kFullScreenable, &fullscreenable);
   SetFullScreenable(fullscreenable);
-  if (fullscreen)
+  if (fullscreen) {
     SetFullScreen(true);
-
+  }
   bool skip;
   if (options.Get(options::kSkipTaskbar, &skip) && skip) {
     SetSkipTaskbar(skip);

+ 2 - 12
atom/browser/native_window_mac.mm

@@ -482,19 +482,9 @@ NativeWindowMac::NativeWindowMac(
   options.Get(options::kDisableAutoHideCursor, &disableAutoHideCursor);
   [window_ setDisableAutoHideCursor:disableAutoHideCursor];
 
-  // Disable fullscreen button when 'fullscreenable' is false or 'fullscreen'
-  // is specified to false.
-  bool fullscreenable = true;
-  options.Get(options::kFullScreenable, &fullscreenable);
-  bool fullscreen = false;
-  if (options.Get(options::kFullscreen, &fullscreen) && !fullscreen)
-    fullscreenable = false;
-  SetFullScreenable(fullscreenable);
-
-  // Disable zoom button if window is not resizable
-  if (!maximizable) {
+  // Disable zoom button if window is not resizable.
+  if (!maximizable)
     SetMaximizable(false);
-  }
 
   NSView* view = inspectable_web_contents()->GetView()->GetNativeView();
   [view setAutoresizingMask:NSViewWidthSizable | NSViewHeightSizable];

+ 11 - 13
atom/browser/native_window_views.cc

@@ -363,29 +363,27 @@ bool NativeWindowViews::IsMinimized() {
 }
 
 void NativeWindowViews::SetFullScreen(bool fullscreen) {
+  if (!IsFullScreenable())
+    return;
+
 #if defined(OS_WIN)
   // There is no native fullscreen state on Windows.
   if (fullscreen) {
-    if (IsFullScreenable()) {
-      last_window_state_ = ui::SHOW_STATE_FULLSCREEN;
-      NotifyWindowEnterFullScreen();
-    }
+    last_window_state_ = ui::SHOW_STATE_FULLSCREEN;
+    NotifyWindowEnterFullScreen();
   } else {
     last_window_state_ = ui::SHOW_STATE_NORMAL;
     NotifyWindowLeaveFullScreen();
   }
   // We set the new value after notifying, so we can handle the size event
   // correctly.
-  if (IsFullScreenable())
-    window_->SetFullscreen(fullscreen);
+  window_->SetFullscreen(fullscreen);
 #else
-  if (!fullscreen || (fullscreen && IsFullScreenable())) {
-    if (IsVisible())
-      window_->SetFullscreen(fullscreen);
-    else
-      window_->native_widget_private()->ShowWithWindowState(
-          ui::SHOW_STATE_FULLSCREEN);
-  }
+  if (IsVisible())
+    window_->SetFullscreen(fullscreen);
+  else
+    window_->native_widget_private()->ShowWithWindowState(
+        ui::SHOW_STATE_FULLSCREEN);
 #endif
 }