refactor: simplify NativeWindow::FullScreenTransitionState
(36-x-y) (#46933)
refactor: simplify `NativeWindow::FullScreenTransitionState` (#46918) * refactor: make NativeWindow::fullscreen_transition_state_ private * refactor: add NativeWindow::is_transitioning_fullscreen() helper * refactor: remove unused NativeWindow::fullscreen_transition_state() * refactor: replace NativeWindow::set_fullscreen_transition_state() with NativeWindow::set_is_transitioning_fullscreen() refactor: remove unused NativeWindow::FullScreenTransitionState
This commit is contained in:
parent
aada99e53d
commit
c27bd7bb3c
4 changed files with 18 additions and 25 deletions
|
@ -3973,8 +3973,7 @@ bool WebContents::IsFullscreenForTabOrPending(
|
|||
if (!owner_window())
|
||||
return is_html_fullscreen();
|
||||
|
||||
bool in_transition = owner_window()->fullscreen_transition_state() !=
|
||||
NativeWindow::FullScreenTransitionState::kNone;
|
||||
const bool in_transition = owner_window()->is_transitioning_fullscreen();
|
||||
bool is_html_transition = owner_window()->fullscreen_transition_type() ==
|
||||
NativeWindow::FullScreenTransitionType::kHTML;
|
||||
|
||||
|
|
|
@ -362,13 +362,12 @@ class NativeWindow : public base::SupportsUserData,
|
|||
// Handle fullscreen transitions.
|
||||
void HandlePendingFullscreenTransitions();
|
||||
|
||||
enum class FullScreenTransitionState { kEntering, kExiting, kNone };
|
||||
|
||||
void set_fullscreen_transition_state(FullScreenTransitionState state) {
|
||||
fullscreen_transition_state_ = state;
|
||||
constexpr void set_is_transitioning_fullscreen(const bool val) {
|
||||
is_transitioning_fullscreen_ = val;
|
||||
}
|
||||
FullScreenTransitionState fullscreen_transition_state() const {
|
||||
return fullscreen_transition_state_;
|
||||
|
||||
[[nodiscard]] constexpr bool is_transitioning_fullscreen() const {
|
||||
return is_transitioning_fullscreen_;
|
||||
}
|
||||
|
||||
enum class FullScreenTransitionType { kHTML, kNative, kNone };
|
||||
|
@ -470,8 +469,6 @@ class NativeWindow : public base::SupportsUserData,
|
|||
std::optional<extensions::SizeConstraints> content_size_constraints_;
|
||||
|
||||
std::queue<bool> pending_transitions_;
|
||||
FullScreenTransitionState fullscreen_transition_state_ =
|
||||
FullScreenTransitionState::kNone;
|
||||
FullScreenTransitionType fullscreen_transition_type_ =
|
||||
FullScreenTransitionType::kNone;
|
||||
|
||||
|
@ -519,6 +516,8 @@ class NativeWindow : public base::SupportsUserData,
|
|||
// Is this a modal window.
|
||||
bool is_modal_ = false;
|
||||
|
||||
bool is_transitioning_fullscreen_ = false;
|
||||
|
||||
std::list<DraggableRegionProvider*> draggable_region_providers_;
|
||||
|
||||
// Observers of this window.
|
||||
|
|
|
@ -336,7 +336,7 @@ void NativeWindowMac::Close() {
|
|||
return;
|
||||
}
|
||||
|
||||
if (fullscreen_transition_state() != FullScreenTransitionState::kNone) {
|
||||
if (is_transitioning_fullscreen()) {
|
||||
SetHasDeferredWindowClose(true);
|
||||
return;
|
||||
}
|
||||
|
@ -628,7 +628,7 @@ void NativeWindowMac::SetFullScreen(bool fullscreen) {
|
|||
// that it's possible to call it while a fullscreen transition is currently
|
||||
// in process. This can create weird behavior (incl. phantom windows),
|
||||
// so we want to schedule a transition for when the current one has completed.
|
||||
if (fullscreen_transition_state() != FullScreenTransitionState::kNone) {
|
||||
if (is_transitioning_fullscreen()) {
|
||||
if (!pending_transitions_.empty()) {
|
||||
bool last_pending = pending_transitions_.back();
|
||||
// Only push new transitions if they're different than the last transition
|
||||
|
@ -652,12 +652,10 @@ void NativeWindowMac::SetFullScreen(bool fullscreen) {
|
|||
// SetFullScreen is called by a user before windowWillEnterFullScreen
|
||||
// or windowWillExitFullScreen are invoked, and so a potential transition
|
||||
// could be dropped.
|
||||
fullscreen_transition_state_ = fullscreen
|
||||
? FullScreenTransitionState::kEntering
|
||||
: FullScreenTransitionState::kExiting;
|
||||
set_is_transitioning_fullscreen(true);
|
||||
|
||||
if (![window_ toggleFullScreenMode:nil])
|
||||
fullscreen_transition_state_ = FullScreenTransitionState::kNone;
|
||||
set_is_transitioning_fullscreen(false);
|
||||
}
|
||||
|
||||
bool NativeWindowMac::IsFullscreen() const {
|
||||
|
@ -785,8 +783,7 @@ void NativeWindowMac::SetResizable(bool resizable) {
|
|||
}
|
||||
|
||||
bool NativeWindowMac::IsResizable() const {
|
||||
bool in_fs_transition =
|
||||
fullscreen_transition_state() != FullScreenTransitionState::kNone;
|
||||
const bool in_fs_transition = is_transitioning_fullscreen();
|
||||
bool has_rs_mask = HasStyleMask(NSWindowStyleMaskResizable);
|
||||
return has_rs_mask && !IsFullscreen() && !in_fs_transition;
|
||||
}
|
||||
|
|
|
@ -18,8 +18,6 @@
|
|||
#include "ui/views/widget/native_widget_mac.h"
|
||||
|
||||
using TitleBarStyle = electron::NativeWindowMac::TitleBarStyle;
|
||||
using FullScreenTransitionState =
|
||||
electron::NativeWindow::FullScreenTransitionState;
|
||||
|
||||
@implementation ElectronNSWindowDelegate
|
||||
|
||||
|
@ -302,7 +300,7 @@ using FullScreenTransitionState =
|
|||
// Store resizable mask so it can be restored after exiting fullscreen.
|
||||
is_resizable_ = shell_->HasStyleMask(NSWindowStyleMaskResizable);
|
||||
|
||||
shell_->set_fullscreen_transition_state(FullScreenTransitionState::kEntering);
|
||||
shell_->set_is_transitioning_fullscreen(true);
|
||||
|
||||
shell_->NotifyWindowWillEnterFullScreen();
|
||||
|
||||
|
@ -311,7 +309,7 @@ using FullScreenTransitionState =
|
|||
}
|
||||
|
||||
- (void)windowDidEnterFullScreen:(NSNotification*)notification {
|
||||
shell_->set_fullscreen_transition_state(FullScreenTransitionState::kNone);
|
||||
shell_->set_is_transitioning_fullscreen(false);
|
||||
|
||||
shell_->NotifyWindowEnterFullScreen();
|
||||
|
||||
|
@ -322,7 +320,7 @@ using FullScreenTransitionState =
|
|||
}
|
||||
|
||||
- (void)windowDidFailToEnterFullScreen:(NSWindow*)window {
|
||||
shell_->set_fullscreen_transition_state(FullScreenTransitionState::kNone);
|
||||
shell_->set_is_transitioning_fullscreen(false);
|
||||
|
||||
shell_->SetResizable(is_resizable_);
|
||||
shell_->NotifyWindowDidFailToEnterFullScreen();
|
||||
|
@ -334,13 +332,13 @@ using FullScreenTransitionState =
|
|||
}
|
||||
|
||||
- (void)windowWillExitFullScreen:(NSNotification*)notification {
|
||||
shell_->set_fullscreen_transition_state(FullScreenTransitionState::kExiting);
|
||||
shell_->set_is_transitioning_fullscreen(true);
|
||||
|
||||
shell_->NotifyWindowWillLeaveFullScreen();
|
||||
}
|
||||
|
||||
- (void)windowDidExitFullScreen:(NSNotification*)notification {
|
||||
shell_->set_fullscreen_transition_state(FullScreenTransitionState::kNone);
|
||||
shell_->set_is_transitioning_fullscreen(false);
|
||||
|
||||
shell_->SetResizable(is_resizable_);
|
||||
shell_->NotifyWindowLeaveFullScreen();
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue