fix: make SetWindowButtonVisibility work for customButtonsOnHover (#27073)
This commit is contained in:
parent
5e7e0a4c7e
commit
c3091c3a70
9 changed files with 87 additions and 52 deletions
|
@ -1014,9 +1014,7 @@ void NativeWindowMac::SetSimpleFullScreen(bool simple_fullscreen) {
|
|||
} else if (!window_button_visibility_.has_value()) {
|
||||
// Lets keep previous behaviour - hide window controls in titled
|
||||
// fullscreen mode when not specified otherwise.
|
||||
[[window standardWindowButton:NSWindowZoomButton] setHidden:YES];
|
||||
[[window standardWindowButton:NSWindowMiniaturizeButton] setHidden:YES];
|
||||
[[window standardWindowButton:NSWindowCloseButton] setHidden:YES];
|
||||
InternalSetWindowButtonVisibility(false);
|
||||
}
|
||||
|
||||
[window setFrame:fullscreenFrame display:YES animate:YES];
|
||||
|
@ -1034,15 +1032,15 @@ void NativeWindowMac::SetSimpleFullScreen(bool simple_fullscreen) {
|
|||
SetStyleMask(true, NSWindowStyleMaskTitled);
|
||||
}
|
||||
|
||||
// Restore window controls visibility state
|
||||
const bool window_button_hidden =
|
||||
!window_button_visibility_.value_or(true) || !has_frame();
|
||||
[[window standardWindowButton:NSWindowZoomButton]
|
||||
setHidden:window_button_hidden];
|
||||
[[window standardWindowButton:NSWindowMiniaturizeButton]
|
||||
setHidden:window_button_hidden];
|
||||
[[window standardWindowButton:NSWindowCloseButton]
|
||||
setHidden:window_button_hidden];
|
||||
// Restore default window controls visibility state.
|
||||
if (!window_button_visibility_.has_value()) {
|
||||
bool visibility;
|
||||
if (has_frame())
|
||||
visibility = true;
|
||||
else
|
||||
visibility = title_bar_style_ != TitleBarStyle::kNormal;
|
||||
InternalSetWindowButtonVisibility(visibility);
|
||||
}
|
||||
|
||||
[window setFrame:original_frame_ display:YES animate:YES];
|
||||
window.level = original_level_;
|
||||
|
@ -1435,6 +1433,20 @@ void NativeWindowMac::SetVibrancy(const std::string& type) {
|
|||
[effect_view setMaterial:vibrancyType];
|
||||
}
|
||||
|
||||
void NativeWindowMac::SetWindowButtonVisibility(bool visible) {
|
||||
window_button_visibility_ = visible;
|
||||
InternalSetWindowButtonVisibility(visible);
|
||||
}
|
||||
|
||||
bool NativeWindowMac::GetWindowButtonVisibility() const {
|
||||
if (buttons_view_)
|
||||
return ![buttons_view_ isHidden];
|
||||
else
|
||||
return ![window_ standardWindowButton:NSWindowZoomButton].hidden ||
|
||||
![window_ standardWindowButton:NSWindowMiniaturizeButton].hidden ||
|
||||
![window_ standardWindowButton:NSWindowCloseButton].hidden;
|
||||
}
|
||||
|
||||
void NativeWindowMac::SetTrafficLightPosition(
|
||||
base::Optional<gfx::Point> position) {
|
||||
traffic_light_position_ = std::move(position);
|
||||
|
@ -1579,19 +1591,6 @@ bool NativeWindowMac::AddTabbedWindow(NativeWindow* window) {
|
|||
return true;
|
||||
}
|
||||
|
||||
bool NativeWindowMac::SetWindowButtonVisibility(bool visible) {
|
||||
if (title_bar_style_ == TitleBarStyle::kCustomButtonsOnHover) {
|
||||
return false;
|
||||
}
|
||||
|
||||
window_button_visibility_ = visible;
|
||||
|
||||
[[window_ standardWindowButton:NSWindowCloseButton] setHidden:!visible];
|
||||
[[window_ standardWindowButton:NSWindowMiniaturizeButton] setHidden:!visible];
|
||||
[[window_ standardWindowButton:NSWindowZoomButton] setHidden:!visible];
|
||||
return true;
|
||||
}
|
||||
|
||||
void NativeWindowMac::SetAspectRatio(double aspect_ratio,
|
||||
const gfx::Size& extra_size) {
|
||||
NativeWindow::SetAspectRatio(aspect_ratio, extra_size);
|
||||
|
@ -1774,6 +1773,17 @@ void NativeWindowMac::AddContentViewLayers(bool minimizable, bool closable) {
|
|||
}
|
||||
}
|
||||
|
||||
void NativeWindowMac::InternalSetWindowButtonVisibility(bool visible) {
|
||||
if (buttons_view_) {
|
||||
[buttons_view_ setHidden:!visible];
|
||||
} else {
|
||||
[[window_ standardWindowButton:NSWindowCloseButton] setHidden:!visible];
|
||||
[[window_ standardWindowButton:NSWindowMiniaturizeButton]
|
||||
setHidden:!visible];
|
||||
[[window_ standardWindowButton:NSWindowZoomButton] setHidden:!visible];
|
||||
}
|
||||
}
|
||||
|
||||
void NativeWindowMac::InternalSetParentWindow(NativeWindow* parent,
|
||||
bool attach) {
|
||||
if (is_modal())
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue