![electron-roller[bot]](/assets/img/avatar_default.png) 8acf6039e7
			
		
	
	
	
	
	8acf6039e7* chore: bump chromium in DEPS to 110.0.5425.0 * chore: bump chromium in DEPS to 110.0.5427.0 * chore: bump chromium in DEPS to 110.0.5429.0 * chore: bump chromium in DEPS to 110.0.5431.0 * chore: update patches/chromium/picture-in-picture.patch to fix upstream code shear https://chromium-review.googlesource.com/c/chromium/src/+/4024078 * chore: sync patch w/upstream shear: remove_usage_of_incognito_apis_in_the_spellchecker.patch https://chromium-review.googlesource.com/c/chromium/src/+/3967854 * chore: sync patch w/upstream shear: feat_expose_raw_response_headers_from_urlloader.patch https://chromium-review.googlesource.com/c/chromium/src/+/3983373 * chore: sync patch w/upstream shear: chromium/custom_protocols_plzserviceworker.patch https://chromium-review.googlesource.com/c/chromium/src/+/3983373 * build: update references to core_api_provider; its location was moved upstream Xref: https://chromium-review.googlesource.com/c/chromium/src/+/4006696 * build: remove back_to_tab_image_button from our enable_picture_in_picture deps Xref: https://chromium-review.googlesource.com/c/chromium/src/+/4024078 back_to_tab_image_button has been removed upstream * chore: update patches * chore: bump chromium in DEPS to 110.0.5433.0 * chore: sync patch w/upstream shear: chromium/printing.patch Xref: https://chromium-review.googlesource.com/c/chromium/src/+/4006638 * chore: sync patch w/trivial upstream shear: chromium/process_singleton.patch Xref: https://chromium-review.googlesource.com/c/chromium/src/+/4031817 * refactor: remove kAutofillCenterAlignedSuggestions feature flag check. This behavior had been an experiment behind a feature flag. The experiment was a success so the feature was kept & the flag was removed. Xref: https://chromium-review.googlesource.com/c/chromium/src/+/3870616 moves from disabled-by-default to enabled-by-default Xref: https://chromium-review.googlesource.com/c/chromium/src/+/4030556 removed the feature flag * chore: update patches * chore: bump chromium in DEPS to 110.0.5435.0 * chore: update patches * chore: sync code with upstream change: AXLMode method name Xref: https://chromium-review.googlesource.com/c/chromium/src/+/3950054 * 3841761: Adapting code to support kSystemProfileSelectionDefaultNone experiment https://chromium-review.googlesource.com/c/chromium/src/+/3841761 * chore: bump chromium in DEPS to 110.0.5437.0 * 4040140: Pip 2.0: Merge VideoOverlayWindowViews and OverlayWindowViews https://chromium-review.googlesource.com/c/chromium/src/+/4040140 * 4045567: Fix a crash opening a popup from tab capture fullscreen https://chromium-review.googlesource.com/c/chromium/src/+/4045567 * chore: fixup patch indices * 4048263: Remove deprecated Value calls in frame_tracker_unittest.cc. https://chromium-review.googlesource.com/c/chromium/src/+/4048263 * 4004606: [intl] Migrate to ICU 72 https://chromium-review.googlesource.com/c/v8/v8/+/4004606 * chore: bump chromium in DEPS to 110.0.5439.0 * 3890670: Prerender: Add first implementation of prerender-in-new-tab mode https://chromium-review.googlesource.com/c/chromium/src/+/3890670 * chore: fixup patch indices * chore: bump chromium in DEPS to 110.0.5441.0 * chore: update patches * chore: bump chromium in DEPS to 110.0.5443.0 * 4035451: Remove remaining uses of ScopedNestableTaskAllower. https://chromium-review.googlesource.com/c/chromium/src/+/4035451 * chore: bump chromium in DEPS to 110.0.5445.0 * chore: update patches * fixup! 3890670: Prerender: Add first implementation of prerender-in-new-tab mode * test: disable parallel/test-worker-init-failure Refs https://chromium-review.googlesource.com/c/v8/v8/+/4017512 Refs https://github.com/nodejs/node-v8/issues/246 * chore: disable parallel/test-fetch Test is flaky on Linux CI, but runs fine locally. * chore: bump chromium in DEPS to 110.0.5451.0 * chore: update patches * chore: cleanup patch Co-authored-by: electron-roller[bot] <84116207+electron-roller[bot]@users.noreply.github.com> Co-authored-by: Charles Kerr <charles@charleskerr.com> Co-authored-by: PatchUp <73610968+patchup[bot]@users.noreply.github.com> Co-authored-by: Shelley Vohr <shelley.vohr@gmail.com> Co-authored-by: electron-patch-conflict-fixer[bot] <83340002+electron-patch-conflict-fixer[bot]@users.noreply.github.com> Co-authored-by: John Kleinschmidt <jkleinsc@electronjs.org>
		
			
				
	
	
		
			181 lines
		
	
	
	
		
			8.5 KiB
			
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			181 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 c7857a3e316554e6b5f46c023a1a8084a3263074..5ad7d4ffa7e9c12ec4640a845a4c763420c23ec2 100644
 | |
| --- a/ui/gtk/window_frame_provider_gtk.cc
 | |
| +++ b/ui/gtk/window_frame_provider_gtk.cc
 | |
| @@ -38,16 +38,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");
 | |
| @@ -64,8 +66,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)
 | |
| @@ -110,8 +112,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;
 | |
| @@ -169,8 +171,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;
 | |
|  
 | |
| @@ -272,7 +274,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)) {
 | |
| @@ -304,7 +306,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));
 | |
| @@ -312,7 +314,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();
 |