chore: bump chromium to e049d599a8332b9b2785b0178be74 (master) (#20314)
This commit is contained in:
parent
0090616f7b
commit
3ac3fbdbfb
94 changed files with 670 additions and 1213 deletions
|
@ -875,52 +875,62 @@ bool NativeWindowMac::IsClosable() {
|
|||
}
|
||||
|
||||
void NativeWindowMac::SetAlwaysOnTop(ui::ZOrderLevel z_order,
|
||||
const std::string& level,
|
||||
int relativeLevel,
|
||||
std::string* error) {
|
||||
int windowLevel = NSNormalWindowLevel;
|
||||
bool level_changed = z_order != widget()->GetZOrderLevel();
|
||||
CGWindowLevel maxWindowLevel = CGWindowLevelForKey(kCGMaximumWindowLevelKey);
|
||||
CGWindowLevel minWindowLevel = CGWindowLevelForKey(kCGMinimumWindowLevelKey);
|
||||
|
||||
if (z_order != ui::ZOrderLevel::kNormal) {
|
||||
if (level == "floating") {
|
||||
windowLevel = NSFloatingWindowLevel;
|
||||
} else if (level == "torn-off-menu") {
|
||||
windowLevel = NSTornOffMenuWindowLevel;
|
||||
} else if (level == "modal-panel") {
|
||||
windowLevel = NSModalPanelWindowLevel;
|
||||
} else if (level == "main-menu") {
|
||||
windowLevel = NSMainMenuWindowLevel;
|
||||
} else if (level == "status") {
|
||||
windowLevel = NSStatusWindowLevel;
|
||||
} else if (level == "pop-up-menu") {
|
||||
windowLevel = NSPopUpMenuWindowLevel;
|
||||
} else if (level == "screen-saver") {
|
||||
windowLevel = NSScreenSaverWindowLevel;
|
||||
} else if (level == "dock") {
|
||||
// Deprecated by macOS, but kept for backwards compatibility
|
||||
windowLevel = NSDockWindowLevel;
|
||||
}
|
||||
const std::string& level_name,
|
||||
int relative_level) {
|
||||
if (z_order == ui::ZOrderLevel::kNormal) {
|
||||
SetWindowLevel(NSNormalWindowLevel);
|
||||
return;
|
||||
}
|
||||
|
||||
NSInteger newLevel = windowLevel + relativeLevel;
|
||||
if (newLevel >= minWindowLevel && newLevel <= maxWindowLevel) {
|
||||
was_maximizable_ = IsMaximizable();
|
||||
[window_ setLevel:newLevel];
|
||||
// Set level will make the zoom button revert to default, probably
|
||||
// a bug of Cocoa or macOS.
|
||||
[[window_ standardWindowButton:NSWindowZoomButton]
|
||||
setEnabled:was_maximizable_];
|
||||
} else {
|
||||
*error = std::string([[NSString
|
||||
stringWithFormat:@"relativeLevel must be between %d and %d",
|
||||
minWindowLevel, maxWindowLevel] UTF8String]);
|
||||
int level = NSNormalWindowLevel;
|
||||
if (level_name == "floating") {
|
||||
level = NSFloatingWindowLevel;
|
||||
} else if (level_name == "torn-off-menu") {
|
||||
level = NSTornOffMenuWindowLevel;
|
||||
} else if (level_name == "modal-panel") {
|
||||
level = NSModalPanelWindowLevel;
|
||||
} else if (level_name == "main-menu") {
|
||||
level = NSMainMenuWindowLevel;
|
||||
} else if (level_name == "status") {
|
||||
level = NSStatusWindowLevel;
|
||||
} else if (level_name == "pop-up-menu") {
|
||||
level = NSPopUpMenuWindowLevel;
|
||||
} else if (level_name == "screen-saver") {
|
||||
level = NSScreenSaverWindowLevel;
|
||||
} else if (level_name == "dock") {
|
||||
// Deprecated by macOS, but kept for backwards compatibility
|
||||
level = NSDockWindowLevel;
|
||||
}
|
||||
|
||||
SetWindowLevel(level + relative_level);
|
||||
}
|
||||
|
||||
void NativeWindowMac::SetWindowLevel(int unbounded_level) {
|
||||
int level = std::min(
|
||||
std::max(unbounded_level, CGWindowLevelForKey(kCGMinimumWindowLevelKey)),
|
||||
CGWindowLevelForKey(kCGMaximumWindowLevelKey));
|
||||
ui::ZOrderLevel z_order_level = level == NSNormalWindowLevel
|
||||
? ui::ZOrderLevel::kNormal
|
||||
: ui::ZOrderLevel::kFloatingWindow;
|
||||
bool did_z_order_level_change = z_order_level != GetZOrderLevel();
|
||||
|
||||
was_maximizable_ = IsMaximizable();
|
||||
|
||||
// We need to explicitly keep the NativeWidget up to date, since it stores the
|
||||
// window level in a local variable, rather than reading it from the NSWindow.
|
||||
// Unfortunately, it results in a second setLevel call. It's not ideal, but we
|
||||
// don't expect this to cause any user-visible jank.
|
||||
widget()->SetZOrderLevel(z_order_level);
|
||||
[window_ setLevel:level];
|
||||
|
||||
// Set level will make the zoom button revert to default, probably
|
||||
// a bug of Cocoa or macOS.
|
||||
[[window_ standardWindowButton:NSWindowZoomButton]
|
||||
setEnabled:was_maximizable_];
|
||||
|
||||
// This must be notified at the very end or IsAlwaysOnTop
|
||||
// will not yet have been updated to reflect the new status
|
||||
if (level_changed)
|
||||
if (did_z_order_level_change)
|
||||
NativeWindow::NotifyWindowAlwaysOnTopChanged();
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue