mirror of
https://github.com/electron/electron.git
synced 2026-04-10 03:01:51 -04:00
* chore: bump chromium in DEPS to 110.0.5461.0
* chore: bump chromium in DEPS to 110.0.5463.0
* chore: bump chromium in DEPS to 110.0.5465.0
* chore: bump chromium in DEPS to 110.0.5467.0
* chore: bump chromium in DEPS to 110.0.5469.0
* chore: bump chromium in DEPS to 110.0.5471.0
* chore: bump chromium in DEPS to 110.0.5473.0
* chore: bump chromium in DEPS to 110.0.5475.0
* chore: bump chromium in DEPS to 110.0.5477.0
* chore: bump chromium in DEPS to 110.0.5479.0
* chore: bump chromium in DEPS to 110.0.5481.0
* chore: bump chromium in DEPS to 110.0.5481.4
* chore: bump chromium in DEPS to 110.0.5478.5
* chore: update patches
* 4074449: Add gl::FrameData to software path
https://chromium-review.googlesource.com/c/chromium/src/+/4074449
(cherry picked from commit 1f61be81384b3e22b8af8f9221a7e5ef9a4d95cb)
* fixup! 4074449: Add gl::FrameData to software path
(cherry picked from commit 2316ec931ec9cb1d4ade43df2f3663ef155c5a61)
* 4074449: Add gl::FrameData to software path
This commit also reformatted the two files in this patch. The only
change here is the addition of the |data| arg to |OnSwapBuffers|.
https://chromium-review.googlesource.com/c/chromium/src/+/4074449
(cherry picked from commit aa2504ee6b4e3a2eaf3348eb535ef8121dd6cc3b)
* 4081108: task posting v3: remove task_runner_util{.h,_unittest.cc}
https://chromium-review.googlesource.com/c/chromium/src/+/4081108
(cherry picked from commit fce317513ee15138351f8b1bdf062250d97f57b9)
* 4081108: task posting v3: remove task_runner_util{.h,_unittest.cc}
https://chromium-review.googlesource.com/c/chromium/src/+/4081108
(cherry picked from commit cb14d9f5df300020a3b8d11078656763b428789e)
* chore: add missing RefCountedMemory include
(cherry picked from commit 893a1da1ed5a461e0e46abecab2a2de545ab543b)
* 4025927: [Code Health] Migrate e/c/manifest.cc to base::Value::Dict interface
https://chromium-review.googlesource.com/c/chromium/src/+/4025927
(cherry picked from commit f9e1ce44bdbe1c199881daef2799164737e2d39d)
* 4072471: Rename Mixed Download Blocking to Insecure Download Blocking
https://chromium-review.googlesource.com/c/chromium/src/+/4072471
(cherry picked from commit e191d7526d3821ace54717ce7c8a5e95df542135)
* 4060548: Remove base::Value::GetListDeprecated().
https://chromium-review.googlesource.com/c/chromium/src/+/4060548
(cherry picked from commit f76cb2bcb4d1772c596c7e8dc5be27024e2b9cfe)
* 4032656: hid: Abstract HidSystemTrayIcon class for profiles' HID connections
https://chromium-review.googlesource.com/c/chromium/src/+/4032656
(cherry picked from commit 9737692d016d726f277c7a6ac6ec919b18820cba)
* 3903024: hid: Add connection count tracking methods for HidDelegate
https://chromium-review.googlesource.com/c/chromium/src/+/3903024
(cherry picked from commit a0299046cd3cedb1c84b4ecf867089fce9304861)
* 4076211: Turn FrameTreeNode::frame_tree into raw_ref.
https://chromium-review.googlesource.com/c/chromium/src/+/4076211
(cherry picked from commit 6cca422b421013ce166779cc9687d50301ac3280)
* 4112537: Remove DictionaryPrefUpdate.
https://chromium-review.googlesource.com/c/chromium/src/+/4112537
(cherry picked from commit ec8e8f75deed5da760c75267c5575509923ae7e4)
* 3835037: Add new slides media session actions to Picture-in-Picture window
https://chromium-review.googlesource.com/c/chromium/src/+/3835037
(cherry picked from commit 7dc35729bce450b365b8d211536a275e8e3f0a08)
* 4065264: [Extensions] Add a new side panel view type
https://chromium-review.googlesource.com/c/chromium/src/+/4065264
(cherry picked from commit c6c3c3ff8289c87a6ca831ff23100b3dde74eddf)
* 4085814: [Test Automation] Move NativeWindowTracker to ui/views
https://chromium-review.googlesource.com/c/chromium/src/+/4085814
(cherry picked from commit ffbe5437139752f507bef4c66cc958e6dcef3bce)
* chore: disable Microtask queues per WindowAgent.
see https://chromium-review.googlesource.com/c/chromium/src/+/4003663
(cherry picked from commit 0ffa9df410a27236ed73b07d5b36c84783b0f9d1)
* fixup: disable Microtask queues per WindowAgent.
(cherry picked from commit 438be771dd)
Co-authored-by: electron-roller[bot] <84116207+electron-roller[bot]@users.noreply.github.com>
Co-authored-by: John Kleinschmidt <jkleinsc@electronjs.org>
Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com>
Co-authored-by: Calvin Watford <cwatford@slack-corp.com>
Co-authored-by: clavin <clavin@electronjs.org>
Co-authored-by: Jeremy Rose <jeremya@chromium.org>
182 lines
8.5 KiB
Diff
182 lines
8.5 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: msizanoen1 <msizanoen@qtmlabs.xyz>
|
|
Date: Tue, 19 Jul 2022 05:11:06 +0200
|
|
Subject: Add maximized parameter to LinuxUI::GetWindowFrameProvider
|
|
|
|
This allows ClientFrameViewLinux to instruct the toolkit to draw the window
|
|
decorations in maximized mode where needed, preventing empty space caused
|
|
by decoration shadows and rounded titlebars around the window while maximized.
|
|
|
|
diff --git a/ui/gtk/gtk_ui.cc b/ui/gtk/gtk_ui.cc
|
|
index c61bac00076822ae729882c64f3ad89e0d849e91..28cd9fb14783651ee651917f135c68faa0f2059a 100644
|
|
--- a/ui/gtk/gtk_ui.cc
|
|
+++ b/ui/gtk/gtk_ui.cc
|
|
@@ -507,13 +507,15 @@ std::unique_ptr<ui::NavButtonProvider> GtkUi::CreateNavButtonProvider() {
|
|
return nullptr;
|
|
}
|
|
|
|
-ui::WindowFrameProvider* GtkUi::GetWindowFrameProvider(bool solid_frame) {
|
|
+ui::WindowFrameProvider* GtkUi::GetWindowFrameProvider(bool solid_frame, bool maximized) {
|
|
if (!GtkCheckVersion(3, 14))
|
|
return nullptr;
|
|
auto& provider =
|
|
- solid_frame ? solid_frame_provider_ : transparent_frame_provider_;
|
|
+ maximized
|
|
+ ? (solid_frame ? solid_maximized_frame_provider_ : transparent_maximized_frame_provider_)
|
|
+ : (solid_frame ? solid_frame_provider_ : transparent_frame_provider_);
|
|
if (!provider)
|
|
- provider = std::make_unique<gtk::WindowFrameProviderGtk>(solid_frame);
|
|
+ provider = std::make_unique<gtk::WindowFrameProviderGtk>(solid_frame, maximized);
|
|
return provider.get();
|
|
}
|
|
|
|
diff --git a/ui/gtk/gtk_ui.h b/ui/gtk/gtk_ui.h
|
|
index ebc31db3dad9ba7904fbd345c6a1ba31ed6fd813..1d2ffc82bb67ed80f508631c8c7d045be76f6761 100644
|
|
--- a/ui/gtk/gtk_ui.h
|
|
+++ b/ui/gtk/gtk_ui.h
|
|
@@ -106,7 +106,7 @@ class GtkUi : public ui::LinuxUiAndTheme {
|
|
SkColor GetInactiveSelectionFgColor() const override;
|
|
bool PreferDarkTheme() const override;
|
|
std::unique_ptr<ui::NavButtonProvider> CreateNavButtonProvider() override;
|
|
- ui::WindowFrameProvider* GetWindowFrameProvider(bool solid_frame) override;
|
|
+ ui::WindowFrameProvider* GetWindowFrameProvider(bool solid_frame, bool maximized) override;
|
|
|
|
private:
|
|
using TintMap = std::map<int, color_utils::HSL>;
|
|
@@ -195,10 +195,13 @@ class GtkUi : public ui::LinuxUiAndTheme {
|
|
// while Chrome is running.
|
|
std::unique_ptr<ui::WindowFrameProvider> solid_frame_provider_;
|
|
std::unique_ptr<ui::WindowFrameProvider> transparent_frame_provider_;
|
|
+ std::unique_ptr<ui::WindowFrameProvider> solid_maximized_frame_provider_;
|
|
+ std::unique_ptr<ui::WindowFrameProvider> transparent_maximized_frame_provider_;
|
|
|
|
// Objects to notify when the window frame button order changes.
|
|
base::ObserverList<ui::WindowButtonOrderObserver>::Unchecked
|
|
window_button_order_observer_list_;
|
|
+
|
|
};
|
|
|
|
} // namespace gtk
|
|
diff --git a/ui/gtk/window_frame_provider_gtk.cc b/ui/gtk/window_frame_provider_gtk.cc
|
|
index 9180d27328c5170171ea45d9ad83b34493aae2b9..f38bac04961fb200031f719183a229b943e22754 100644
|
|
--- a/ui/gtk/window_frame_provider_gtk.cc
|
|
+++ b/ui/gtk/window_frame_provider_gtk.cc
|
|
@@ -39,16 +39,18 @@ std::string GetThemeName() {
|
|
return theme_string;
|
|
}
|
|
|
|
-GtkCssContext WindowContext(bool solid_frame, bool focused) {
|
|
+GtkCssContext WindowContext(bool solid_frame, bool maximized, bool focused) {
|
|
std::string selector = "#window.background.";
|
|
selector += solid_frame ? "solid-csd" : "csd";
|
|
+ if (maximized)
|
|
+ selector += ".maximized";
|
|
if (!focused)
|
|
selector += ":inactive";
|
|
return AppendCssNodeToStyleContext({}, selector);
|
|
}
|
|
|
|
-GtkCssContext DecorationContext(bool solid_frame, bool focused) {
|
|
- auto context = WindowContext(solid_frame, focused);
|
|
+GtkCssContext DecorationContext(bool solid_frame, bool maximized, bool focused) {
|
|
+ auto context = WindowContext(solid_frame, maximized, focused);
|
|
// GTK4 renders the decoration directly on the window.
|
|
if (!GtkCheckVersion(4))
|
|
context = AppendCssNodeToStyleContext(context, "#decoration");
|
|
@@ -65,8 +67,8 @@ GtkCssContext DecorationContext(bool solid_frame, bool focused) {
|
|
return context;
|
|
}
|
|
|
|
-GtkCssContext HeaderContext(bool solid_frame, bool focused) {
|
|
- auto context = WindowContext(solid_frame, focused);
|
|
+GtkCssContext HeaderContext(bool solid_frame, bool maximized, bool focused) {
|
|
+ auto context = WindowContext(solid_frame, maximized, focused);
|
|
context =
|
|
AppendCssNodeToStyleContext(context, "#headerbar.header-bar.titlebar");
|
|
if (!focused)
|
|
@@ -111,8 +113,8 @@ int ComputeTopCornerRadius() {
|
|
// need to experimentally determine the corner radius by rendering a sample.
|
|
// Additionally, in GTK4, the headerbar corners get clipped by the window
|
|
// rather than the headerbar having its own rounded corners.
|
|
- auto context = GtkCheckVersion(4) ? DecorationContext(false, false)
|
|
- : HeaderContext(false, false);
|
|
+ auto context = GtkCheckVersion(4) ? DecorationContext(false, false, false)
|
|
+ : HeaderContext(false, false, false);
|
|
ApplyCssToContext(context, R"(window, headerbar {
|
|
background-image: none;
|
|
background-color: black;
|
|
@@ -170,8 +172,8 @@ void WindowFrameProviderGtk::Asset::CloneFrom(
|
|
unfocused_bitmap = src.unfocused_bitmap;
|
|
}
|
|
|
|
-WindowFrameProviderGtk::WindowFrameProviderGtk(bool solid_frame)
|
|
- : solid_frame_(solid_frame) {}
|
|
+WindowFrameProviderGtk::WindowFrameProviderGtk(bool solid_frame, bool maximized)
|
|
+ : solid_frame_(solid_frame), maximized_(maximized) {}
|
|
|
|
WindowFrameProviderGtk::~WindowFrameProviderGtk() = default;
|
|
|
|
@@ -273,7 +275,7 @@ void WindowFrameProviderGtk::PaintWindowFrame(
|
|
top_area_height_dip * scale - effective_frame_thickness_px.top();
|
|
|
|
auto header = PaintHeaderbar({client_bounds_px.width(), top_area_height_px},
|
|
- HeaderContext(solid_frame_, focused), scale);
|
|
+ HeaderContext(solid_frame_, maximized_, focused), scale);
|
|
image = gfx::ImageSkia::CreateFrom1xBitmap(header);
|
|
// In GTK4, the headerbar gets clipped by the window.
|
|
if (GtkCheckVersion(4)) {
|
|
@@ -305,7 +307,7 @@ void WindowFrameProviderGtk::MaybeUpdateBitmaps(float scale) {
|
|
|
|
gfx::Rect frame_bounds_dip(kMaxFrameSizeDip, kMaxFrameSizeDip,
|
|
2 * kMaxFrameSizeDip, 2 * kMaxFrameSizeDip);
|
|
- auto focused_context = DecorationContext(solid_frame_, true);
|
|
+ auto focused_context = DecorationContext(solid_frame_, maximized_, true);
|
|
frame_bounds_dip.Inset(-GtkStyleContextGetPadding(focused_context));
|
|
frame_bounds_dip.Inset(-GtkStyleContextGetBorder(focused_context));
|
|
gfx::Size bitmap_size(BitmapSizePx(asset), BitmapSizePx(asset));
|
|
@@ -313,7 +315,7 @@ void WindowFrameProviderGtk::MaybeUpdateBitmaps(float scale) {
|
|
PaintBitmap(bitmap_size, frame_bounds_dip, focused_context, scale);
|
|
asset.unfocused_bitmap =
|
|
PaintBitmap(bitmap_size, frame_bounds_dip,
|
|
- DecorationContext(solid_frame_, false), scale);
|
|
+ DecorationContext(solid_frame_, maximized_, false), scale);
|
|
|
|
// In GTK4, there's no way to obtain the frame thickness from CSS values
|
|
// directly, so we must determine it experimentally based on the drawn
|
|
diff --git a/ui/gtk/window_frame_provider_gtk.h b/ui/gtk/window_frame_provider_gtk.h
|
|
index d8cb2c6aab333cc55ad1daa70ac91b0569d33a7c..558aa3979301f79df789a29ba3ad1cf134bd6494 100644
|
|
--- a/ui/gtk/window_frame_provider_gtk.h
|
|
+++ b/ui/gtk/window_frame_provider_gtk.h
|
|
@@ -14,7 +14,7 @@ namespace gtk {
|
|
|
|
class WindowFrameProviderGtk : public ui::WindowFrameProvider {
|
|
public:
|
|
- explicit WindowFrameProviderGtk(bool solid_frame);
|
|
+ explicit WindowFrameProviderGtk(bool solid_frame, bool maximized);
|
|
|
|
WindowFrameProviderGtk(const WindowFrameProviderGtk&) = delete;
|
|
WindowFrameProviderGtk& operator=(const WindowFrameProviderGtk&) = delete;
|
|
@@ -70,6 +70,9 @@ class WindowFrameProviderGtk : public ui::WindowFrameProvider {
|
|
|
|
// Cached bitmaps and metrics. The scale is rounded to percent.
|
|
base::flat_map<int, Asset> assets_;
|
|
+
|
|
+ // Whether to draw the window decorations as maximized.
|
|
+ bool maximized_;
|
|
};
|
|
|
|
} // namespace gtk
|
|
diff --git a/ui/linux/linux_ui.h b/ui/linux/linux_ui.h
|
|
index b5fd57741d2f47bda9499cf10e73cc9b3dd1b4dc..35e5bedb719af699485b575ece4bdb4f90df07df 100644
|
|
--- a/ui/linux/linux_ui.h
|
|
+++ b/ui/linux/linux_ui.h
|
|
@@ -273,7 +273,7 @@ class COMPONENT_EXPORT(LINUX_UI) LinuxUiTheme {
|
|
// if transparency is unsupported and the frame should be rendered opaque.
|
|
// The returned object is not owned by the caller and will remain alive until
|
|
// the process ends.
|
|
- virtual WindowFrameProvider* GetWindowFrameProvider(bool solid_frame) = 0;
|
|
+ virtual WindowFrameProvider* GetWindowFrameProvider(bool solid_frame, bool maximized) = 0;
|
|
|
|
protected:
|
|
LinuxUiTheme();
|