diff --git a/wayland_adapter/framework/core/wayland_surface.cpp b/wayland_adapter/framework/core/wayland_surface.cpp index 00dab6ee9bf51ab0b4c592ffadfeb6b53ca6080a..f8b2ef4e920974f1ae2e670566610f492e165ad0 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 0d819f79ffddb38cf37885c3959fd9000f677e34..41801218290cb7b1b09e142cb8cd4873f618bf9c 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 7256acbf4b5eacec30fc402a4c355d3cb4dca65e..cfd820f126e0304fdea8139f459f221ff7fd0382 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 91bd0f0afd6d6713a5a1eb8a491744b7943a8eea..6ca85c4898f30a7b6a71d73db44d2f12548de2c8 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 1e6f6cb39affa26d6034572864ee6115495ddf5f..7ad6df7b31d018820c6498feb761f9ef0b901769 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); } } }