From 0684fe4159a4673dc10ccd392e82e9c85ae0726a Mon Sep 17 00:00:00 2001 From: Andreas Butti Date: Thu, 27 Dec 2018 16:17:13 +0100 Subject: [PATCH] Layer sidebar repaint fixed --- src/control/layer/LayerController.cpp | 7 +++++ src/control/layer/LayerController.h | 1 + .../previews/layer/SidebarPreviewLayers.cpp | 28 +++++++++++++++++++ .../previews/layer/SidebarPreviewLayers.h | 5 ++++ 4 files changed, 41 insertions(+) diff --git a/src/control/layer/LayerController.cpp b/src/control/layer/LayerController.cpp index 2b868cb1..2faea2b8 100644 --- a/src/control/layer/LayerController.cpp +++ b/src/control/layer/LayerController.cpp @@ -250,6 +250,13 @@ PageRef LayerController::getCurrentPage() return control->getDocument()->getPage(selectedPage); } +size_t LayerController::getCurrentPageId() +{ + XOJ_CHECK_TYPE(LayerController); + + return selectedPage; +} + void LayerController::setLayerVisible(int layerId, bool visible) { XOJ_CHECK_TYPE(LayerController); diff --git a/src/control/layer/LayerController.h b/src/control/layer/LayerController.h index cbd5b7af..131a5404 100644 --- a/src/control/layer/LayerController.h +++ b/src/control/layer/LayerController.h @@ -69,6 +69,7 @@ public: void setLayerVisible(int layerId, bool visible); PageRef getCurrentPage(); + size_t getCurrentPageId(); /** * @return Layer count of the current page diff --git a/src/gui/sidebar/previews/layer/SidebarPreviewLayers.cpp b/src/gui/sidebar/previews/layer/SidebarPreviewLayers.cpp index 88d74e5e..5e2ad024 100644 --- a/src/gui/sidebar/previews/layer/SidebarPreviewLayers.cpp +++ b/src/gui/sidebar/previews/layer/SidebarPreviewLayers.cpp @@ -54,6 +54,34 @@ string SidebarPreviewLayers::getIconName() return "layer.svg"; } +void SidebarPreviewLayers::pageSizeChanged(size_t page) +{ + XOJ_CHECK_TYPE(SidebarPreviewLayers); + + if (page != this->lc->getCurrentPageId()) + { + return; + } + + updatePreviews(); +} + +void SidebarPreviewLayers::pageChanged(size_t page) +{ + XOJ_CHECK_TYPE(SidebarPreviewLayers); + + if (page != this->lc->getCurrentPageId()) + { + return; + } + + // Repaint all layer + for (SidebarPreviewBaseEntry* p : this->previews) + { + p->repaint(); + } +} + void SidebarPreviewLayers::updatePreviews() { XOJ_CHECK_TYPE(SidebarPreviewLayers); diff --git a/src/gui/sidebar/previews/layer/SidebarPreviewLayers.h b/src/gui/sidebar/previews/layer/SidebarPreviewLayers.h index 4154c97d..88e9e4fd 100644 --- a/src/gui/sidebar/previews/layer/SidebarPreviewLayers.h +++ b/src/gui/sidebar/previews/layer/SidebarPreviewLayers.h @@ -58,6 +58,11 @@ public: protected: void updateSelectedLayer(); +public: + // DocumentListener interface (only the part which is not handled by SidebarPreviewBase) + virtual void pageSizeChanged(size_t page); + virtual void pageChanged(size_t page); + private: XOJ_TYPE_ATTRIB;