From 60fa2dfaa635d0cd42ae50db0068700cfe137a5a Mon Sep 17 00:00:00 2001 From: jiangwenyu1 Date: Sat, 16 Sep 2023 20:13:15 +0800 Subject: [PATCH] =?UTF-8?q?=E9=80=82=E9=85=8Dwayland=E6=A1=8C=E9=9D=A2?= =?UTF-8?q?=E5=BA=94=E7=94=A8=E7=AA=97=E5=8F=A3=E7=B1=BB=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- wayland_adapter/framework/core/wayland_surface.cpp | 7 ++++++- wayland_adapter/framework/core/wayland_surface.h | 2 ++ wayland_adapter/framework/stable/wayland_xdg_surface.cpp | 8 ++++++++ wayland_adapter/framework/stable/wayland_xdg_surface.h | 1 + wayland_adapter/framework/stable/wayland_xdg_toplevel.cpp | 1 + 5 files changed, 18 insertions(+), 1 deletion(-) diff --git a/wayland_adapter/framework/core/wayland_surface.cpp b/wayland_adapter/framework/core/wayland_surface.cpp index 00dab6e..f8b2ef4 100644 --- a/wayland_adapter/framework/core/wayland_surface.cpp +++ b/wayland_adapter/framework/core/wayland_surface.cpp @@ -347,6 +347,11 @@ void WaylandSurface::SetWindowMode(OHOS::Rosen::WindowMode mode) mode_ = mode; } +void WaylandSurface::SetWindowType(OHOS::Rosen::WindowType type) +{ + type_ = type; +} + void WaylandSurface::Commit() { if (window_ == nullptr) { @@ -414,7 +419,7 @@ void WaylandSurface::HandleCommit() { void WaylandSurface::CreateWindow() { OHOS::sptr option(new OHOS::Rosen::WindowOption()); - option->SetWindowType(OHOS::Rosen::WindowType::APP_MAIN_WINDOW_BASE); + option->SetWindowType(type_); option->SetWindowMode(mode_); option->SetMainHandlerAvailable(false); diff --git a/wayland_adapter/framework/core/wayland_surface.h b/wayland_adapter/framework/core/wayland_surface.h index 0d819f7..4180121 100644 --- a/wayland_adapter/framework/core/wayland_surface.h +++ b/wayland_adapter/framework/core/wayland_surface.h @@ -57,6 +57,7 @@ public: void AddRectCallback(SurfaceRectCallback callback); void StartMove(); void SetWindowMode(OHOS::Rosen::WindowMode mode); + void SetWindowType(OHOS::Rosen::WindowType type); void OnSizeChange(const OHOS::Rosen::Rect& rect, OHOS::Rosen::WindowSizeChangeReason reason); void OnModeChange(OHOS::Rosen::WindowMode mode); @@ -89,6 +90,7 @@ private: #endif OHOS::sptr window_; OHOS::Rosen::WindowMode mode_ = OHOS::Rosen::WindowMode::WINDOW_MODE_FLOATING; + OHOS::Rosen::WindowType type_ = OHOS::Rosen::WindowType::APP_WINDOW_BASE; std::shared_ptr surfaceNode_; std::shared_ptr rsSurface_; }; diff --git a/wayland_adapter/framework/stable/wayland_xdg_surface.cpp b/wayland_adapter/framework/stable/wayland_xdg_surface.cpp index 7256acb..cfd820f 100644 --- a/wayland_adapter/framework/stable/wayland_xdg_surface.cpp +++ b/wayland_adapter/framework/stable/wayland_xdg_surface.cpp @@ -125,6 +125,14 @@ void WaylandXdgSurface::SetWindowMode(OHOS::Rosen::WindowMode mode) } } +void WaylandXdgSurface::SetWindowType(OHOS::Rosen::WindowType type) +{ + auto surface = surface_.promote(); + if (surface != nullptr) { + surface->SetWindowType(type); + } +} + void WaylandXdgSurface::OnSurfaceCommit() { if (role_ == SurfaceRole::XDG_TOPLEVEL) { diff --git a/wayland_adapter/framework/stable/wayland_xdg_surface.h b/wayland_adapter/framework/stable/wayland_xdg_surface.h index 91bd0f0..6ca85c4 100644 --- a/wayland_adapter/framework/stable/wayland_xdg_surface.h +++ b/wayland_adapter/framework/stable/wayland_xdg_surface.h @@ -43,6 +43,7 @@ public: void StartMove(); void SetWindowMode(OHOS::Rosen::WindowMode mode); + void SetWindowType(OHOS::Rosen::WindowType type); private: friend struct IWaylandXdgSurface; diff --git a/wayland_adapter/framework/stable/wayland_xdg_toplevel.cpp b/wayland_adapter/framework/stable/wayland_xdg_toplevel.cpp index 1e6f6cb..7ad6df7 100644 --- a/wayland_adapter/framework/stable/wayland_xdg_toplevel.cpp +++ b/wayland_adapter/framework/stable/wayland_xdg_toplevel.cpp @@ -159,6 +159,7 @@ void WaylandXdgToplevel::SetAppId(const char *appId) auto xdgSurface = xdgSurface_.promote(); if (xdgSurface != nullptr) { xdgSurface->SetWindowMode(OHOS::Rosen::WindowMode::WINDOW_MODE_FULLSCREEN); + xdgSurface->SetWindowType(OHOS::Rosen::WindowType::WINDOW_TYPE_DESKTOP); } } } -- Gitee