refactor: make NativeWindow::has_client_frame_ const (#47156)

This commit is contained in:
Charles Kerr 2025-05-20 17:14:28 -05:00 committed by GitHub
commit 9f8bcc4d98
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 21 additions and 13 deletions

View file

@ -127,17 +127,6 @@ NativeWindow::NativeWindow(const gin_helper::Dictionary& options,
if (parent)
options.Get("modal", &is_modal_);
#if defined(USE_OZONE)
// Ozone X11 likes to prefer custom frames, but we don't need them unless
// on Wayland.
if (base::FeatureList::IsEnabled(features::kWaylandWindowDecorations) &&
!ui::OzonePlatform::GetInstance()
->GetPlatformRuntimeProperties()
.supports_server_side_window_decorations) {
has_client_frame_ = true;
}
#endif
WindowList::AddWindow(this);
}
@ -837,6 +826,22 @@ bool NativeWindow::IsTranslucent() const {
return false;
}
// static
bool NativeWindow::PlatformHasClientFrame() {
#if defined(USE_OZONE)
// Ozone X11 likes to prefer custom frames,
// but we don't need them unless on Wayland.
static const bool has_client_frame =
base::FeatureList::IsEnabled(features::kWaylandWindowDecorations) &&
!ui::OzonePlatform::GetInstance()
->GetPlatformRuntimeProperties()
.supports_server_side_window_decorations;
return has_client_frame;
#else
return false;
#endif
}
// static
void NativeWindowRelay::CreateForWebContents(
content::WebContents* web_contents,

View file

@ -397,7 +397,8 @@ class NativeWindow : public base::SupportsUserData,
bool has_frame() const { return has_frame_; }
bool has_client_frame() const { return has_client_frame_; }
[[nodiscard]] bool has_client_frame() const { return has_client_frame_; }
bool transparent() const { return transparent_; }
bool enable_larger_than_screen() const { return enable_larger_than_screen_; }
@ -478,6 +479,8 @@ class NativeWindow : public base::SupportsUserData,
std::list<NativeWindow*> child_windows_;
private:
static bool PlatformHasClientFrame();
std::unique_ptr<views::Widget> widget_;
static inline int32_t next_id_ = 0;
@ -496,7 +499,7 @@ class NativeWindow : public base::SupportsUserData,
// Whether window has standard frame, but it's drawn by Electron (the client
// application) instead of the OS. Currently only has meaning on Linux for
// Wayland hosts.
bool has_client_frame_ = false;
const bool has_client_frame_ = PlatformHasClientFrame();
// Whether window is transparent.
bool transparent_ = false;