Compare commits

...

3 Commits

Author SHA1 Message Date
Charles Kerr
77455f478b refactor: make NativeWindow::titlebar_overlay_ const 2025-06-01 21:27:46 -05:00
Charles Kerr
8874cfae96 refactor: make NativeWindow::titlebar_overlay_ private 2025-05-30 17:07:57 -05:00
Charles Kerr
0e043cd3cb refactor: make NativeWindow::pending_transitions_ private
refactor: make NativeWindow::fullscreen_transition_type_ private
2025-05-30 17:07:57 -05:00
3 changed files with 30 additions and 26 deletions

View File

@@ -95,6 +95,22 @@ gfx::Size GetExpandedWindowSize(const NativeWindow* window,
}
#endif
[[nodiscard]] bool GetHasTitlebarOverlay(const gin_helper::Dictionary& opts) {
if (bool flag; opts.Get(options::ktitleBarOverlay, &flag))
return flag;
gin_helper::Dictionary dict;
return opts.Get(options::ktitleBarOverlay, &dict);
}
[[nodiscard]] std::optional<int> GetTitlebarOverlayHeight(
const gin_helper::Dictionary& opts) {
if (gin_helper::Dictionary dict; opts.Get(options::ktitleBarOverlay, &dict)) {
if (int height; dict.Get(options::kOverlayHeight, &height))
return height;
}
return {};
}
} // namespace
NativeWindow::NativeWindow(const gin_helper::Dictionary& options,
@@ -107,6 +123,8 @@ NativeWindow::NativeWindow(const gin_helper::Dictionary& options,
is_modal_{parent != nullptr && options.ValueOrDefault("modal", false)},
has_frame_{options.ValueOrDefault(options::kFrame, true) &&
title_bar_style_ == TitleBarStyle::kNormal},
titlebar_overlay_{GetHasTitlebarOverlay(options)},
titlebar_overlay_height_{GetTitlebarOverlayHeight(options).value_or(0)},
parent_{parent} {
#if BUILDFLAG(IS_WIN)
options.Get(options::kBackgroundMaterial, &background_material_);
@@ -114,22 +132,6 @@ NativeWindow::NativeWindow(const gin_helper::Dictionary& options,
options.Get(options::kVibrancyType, &vibrancy_);
#endif
v8::Local<v8::Value> titlebar_overlay;
if (options.Get(options::ktitleBarOverlay, &titlebar_overlay)) {
if (titlebar_overlay->IsBoolean()) {
options.Get(options::ktitleBarOverlay, &titlebar_overlay_);
} else if (titlebar_overlay->IsObject()) {
titlebar_overlay_ = true;
auto titlebar_overlay_dict =
gin_helper::Dictionary::CreateEmpty(options.isolate());
options.Get(options::ktitleBarOverlay, &titlebar_overlay_dict);
int height;
if (titlebar_overlay_dict.Get(options::kOverlayHeight, &height))
titlebar_overlay_height_ = height;
}
}
WindowList::AddWindow(this);
}

View File

@@ -385,6 +385,8 @@ class NativeWindow : public base::SupportsUserData,
return title_bar_style_;
}
[[nodiscard]] bool has_titlebar_overlay() const { return titlebar_overlay_; }
bool IsWindowControlsOverlayEnabled() const {
bool valid_titlebar_style = title_bar_style() == TitleBarStyle::kHidden
#if BUILDFLAG(IS_MAC)
@@ -392,7 +394,7 @@ class NativeWindow : public base::SupportsUserData,
title_bar_style() == TitleBarStyle::kHiddenInset
#endif
;
return valid_titlebar_style && titlebar_overlay_;
return valid_titlebar_style && has_titlebar_overlay();
}
int titlebar_overlay_height() const { return titlebar_overlay_height_; }
@@ -463,9 +465,6 @@ class NativeWindow : public base::SupportsUserData,
static inline constexpr base::cstring_view kNativeWindowKey =
"__ELECTRON_NATIVE_WINDOW__";
// The boolean parsing of the "titleBarOverlay" option
bool titlebar_overlay_ = false;
// Minimum and maximum size.
std::optional<extensions::SizeConstraints> size_constraints_;
// Same as above but stored as content size, we are storing 2 types of size
@@ -473,11 +472,6 @@ class NativeWindow : public base::SupportsUserData,
// on HiDPI displays on some environments.
std::optional<extensions::SizeConstraints> content_size_constraints_;
base::queue<bool> pending_transitions_;
FullScreenTransitionType fullscreen_transition_type_ =
FullScreenTransitionType::kNone;
std::list<NativeWindow*> child_windows_;
private:
@@ -508,6 +502,9 @@ class NativeWindow : public base::SupportsUserData,
// Whether window has standard frame.
const bool has_frame_;
// The boolean parsing of the "titleBarOverlay" option
const bool titlebar_overlay_ = false;
// The content view, weak ref.
raw_ptr<views::View> content_view_ = nullptr;
@@ -546,6 +543,11 @@ class NativeWindow : public base::SupportsUserData,
gfx::Rect overlay_rect_;
base::queue<bool> pending_transitions_;
FullScreenTransitionType fullscreen_transition_type_ =
FullScreenTransitionType::kNone;
base::WeakPtrFactory<NativeWindow> weak_factory_{this};
};

View File

@@ -1827,7 +1827,7 @@ void NativeWindowMac::SetForwardMouseMessages(bool forward) {
}
std::optional<gfx::Rect> NativeWindowMac::GetWindowControlsOverlayRect() {
if (!titlebar_overlay_)
if (!has_titlebar_overlay())
return std::nullopt;
// On macOS, when in fullscreen mode, window controls (the menu bar, title