From b7a4072188f9370c456d65832634c1f136e18f32 Mon Sep 17 00:00:00 2001 From: Kazumasa Mitsunari Date: Sat, 8 Sep 2018 19:12:23 +0900 Subject: Fix layer can't go to center Signed-off-by: Kazumasa Mitsunari --- src/window_manager.cpp | 2 +- src/wm_layer_control.cpp | 7 ++++--- src/wm_layer_control.hpp | 2 +- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/src/window_manager.cpp b/src/window_manager.cpp index 5b7f5d8..acf3b76 100644 --- a/src/window_manager.cpp +++ b/src/window_manager.cpp @@ -201,7 +201,7 @@ int WindowManager::init() css_bg.w, css_bg.h, dp_bg.left(), dp_bg.top(), dp_bg.width(), dp_bg.height()); double scale = static_cast(dp_bg.height()) / css_bg.h; - this->lc->setupArea(scale); + this->lc->setupArea(dp_bg, scale); /* this->display->add_global_handler( "wl_output", [this](wl_registry *r, uint32_t name, uint32_t v) { diff --git a/src/wm_layer_control.cpp b/src/wm_layer_control.cpp index 0632085..5319b2e 100644 --- a/src/wm_layer_control.cpp +++ b/src/wm_layer_control.cpp @@ -160,7 +160,7 @@ struct rect LayerControl::getAreaSize(const std::string& area) return area2size[area]; } -void LayerControl::setupArea(double scaling) +void LayerControl::setupArea(const rectangle& base_rct, double scaling) { struct rect rct; this->scaling = scaling; @@ -171,8 +171,8 @@ void LayerControl::setupArea(double scaling) for (auto &i : this->area2size) { - i.second.x = static_cast(scaling * i.second.x + 0.5); - i.second.y = static_cast(scaling * i.second.y + 0.5); + i.second.x = base_rct.left() + static_cast(scaling * i.second.x + 0.5); + i.second.y = base_rct.top() + static_cast(scaling * i.second.y + 0.5); i.second.w = static_cast(scaling * i.second.w + 0.5); i.second.h = static_cast(scaling * i.second.h + 0.5); @@ -357,6 +357,7 @@ WMError LayerControl::layoutChange(const WMAction& action) // Layout Manager // WMError ret = this->setLayerSize(layer, action.area); auto rect = this->getAreaSize(action.area); + HMI_DEBUG("Set layout %d, %d, %d, %d",rect.x, rect.y, rect.w, rect.h); ilmErrorTypes err = ilm_layerSetDestinationRectangle(layer, rect.x, rect.y, rect.w, rect.h); for(auto &wm_layer: this->wm_layers) { diff --git a/src/wm_layer_control.hpp b/src/wm_layer_control.hpp index df6c863..503ec3b 100644 --- a/src/wm_layer_control.hpp +++ b/src/wm_layer_control.hpp @@ -66,7 +66,7 @@ class LayerControl std::shared_ptr getWMLayer(unsigned layer); // std::shared_ptr getWMLayer(std::string layer_name); struct rect getAreaSize(const std::string& area); - void setupArea(double scaling); + void setupArea(const rectangle& base_rct, double scaling); Screen getScreenInfo(); double scale(); // void setRenderOrder(const std::vector layer_render_order); -- cgit 1.2.3-korg