From fcbb9bc7c390f2b9ab54c9f8996140ff83b46538 Mon Sep 17 00:00:00 2001 From: Roger Zanoni Date: Sun, 2 Jul 2023 12:08:59 +0200 Subject: [PATCH 08/10] Add the SetActivateRegion method --- include/views/cef_window.h | 6 ++++++ libcef/browser/views/view_util.h | 1 + libcef/browser/views/view_util_aura.cc | 17 +++++++++++++++++ libcef/browser/views/window_impl.cc | 7 +++++++ libcef/browser/views/window_impl.h | 1 + 5 files changed, 32 insertions(+) diff --git a/include/views/cef_window.h b/include/views/cef_window.h index 063529964..52ccb7dc5 100644 --- a/include/views/cef_window.h +++ b/include/views/cef_window.h @@ -387,6 +387,12 @@ class CefWindow : public CefPanel { /*--cef()--*/ virtual bool IsSurfaceConfigured() = 0; + /// + /// A hint for the compositor to use a custom area, rather than inferring the activation area. + /// + /*--cef()--*/ + virtual void SetupActivationArea(uint32_t x, uint32_t y, uint32_t width, uint32_t height) = 0; + // ----------------- }; diff --git a/libcef/browser/views/view_util.h b/libcef/browser/views/view_util.h index 20b97038b..76c023254 100644 --- a/libcef/browser/views/view_util.h +++ b/libcef/browser/views/view_util.h @@ -149,6 +149,7 @@ void AglSetAppReady(views::Widget* widget); void AglSetBackGroundApp(views::Widget* widget); void AglSetPanelApp(views::Widget* widget, uint32_t edge); bool IsSurfaceConfigured(views::Widget* widget); +void SetupActivationArea(views::Widget* widget, uint32_t x, uint32_t y, uint32_t width, uint32_t height); // ----------------- diff --git a/libcef/browser/views/view_util_aura.cc b/libcef/browser/views/view_util_aura.cc index b5b4f414b..96e44dbb6 100644 --- a/libcef/browser/views/view_util_aura.cc +++ b/libcef/browser/views/view_util_aura.cc @@ -101,6 +101,23 @@ bool IsSurfaceConfigured(views::Widget* widget) { } } +void SetupActivationArea(views::Widget* widget, + uint32_t x, + uint32_t y, + uint32_t width, + uint32_t height) { + if (!widget) { + return; + } + aura::Window* window = widget->GetNativeWindow(); + if (window && window->GetRootWindow()) { + window->GetHost()->SetupActivationArea(x, + y, + width, + height); + } +} + // ----------------- } // namespace view_util diff --git a/libcef/browser/views/window_impl.cc b/libcef/browser/views/window_impl.cc index 1b5d196ab..485943ec6 100644 --- a/libcef/browser/views/window_impl.cc +++ b/libcef/browser/views/window_impl.cc @@ -548,6 +548,13 @@ bool CefWindowImpl::IsSurfaceConfigured() { return view_util::IsSurfaceConfigured(widget_); } +void CefWindowImpl::SetupActivationArea(uint32_t x, + uint32_t y, + uint32_t width, + uint32_t height) { + view_util::SetupActivationArea(widget_, x, y, width, height); +} + // ----------------- void CefWindowImpl::SendKeyPress(int key_code, uint32 event_flags) { diff --git a/libcef/browser/views/window_impl.h b/libcef/browser/views/window_impl.h index 4ab77dbe6..89c136873 100644 --- a/libcef/browser/views/window_impl.h +++ b/libcef/browser/views/window_impl.h @@ -140,6 +140,7 @@ class CefWindowImpl void AglSetBackGroundApp() override; void AglSetPanelApp(uint32_t edge) override; bool IsSurfaceConfigured() override; + void SetupActivationArea(uint32_t x, uint32_t y, uint32_t width, uint32_t height) override; // ----------------- -- 2.39.2