From 405941be48e159d42a49873c64ef06d2a8c25392 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jaakko=20Ker=C3=A4nen?= Date: Sat, 12 Apr 2014 19:32:41 +0300 Subject: [PATCH] libappfw|GuiRootWidget: Utility for moving a widget on top --- doomsday/client/src/ui/widgets/tutorialwidget.cpp | 3 +-- doomsday/libappfw/include/de/framework/guirootwidget.h | 7 +++++++ doomsday/libappfw/src/guirootwidget.cpp | 9 +++++++++ 3 files changed, 17 insertions(+), 2 deletions(-) diff --git a/doomsday/client/src/ui/widgets/tutorialwidget.cpp b/doomsday/client/src/ui/widgets/tutorialwidget.cpp index 555e4b1fbb..478b93939b 100644 --- a/doomsday/client/src/ui/widgets/tutorialwidget.cpp +++ b/doomsday/client/src/ui/widgets/tutorialwidget.cpp @@ -279,8 +279,7 @@ DENG_GUI_PIMPL(TutorialWidget) GuiRootWidget &root = self.root(); // Keep the tutorial above any dialogs etc. that might've been opened. - root.remove(self); - root.addOnTop(&self); + root.moveToTop(self); root.addOnTop(dlg); dlg->open(); diff --git a/doomsday/libappfw/include/de/framework/guirootwidget.h b/doomsday/libappfw/include/de/framework/guirootwidget.h index ae171b1611..95e074611d 100644 --- a/doomsday/libappfw/include/de/framework/guirootwidget.h +++ b/doomsday/libappfw/include/de/framework/guirootwidget.h @@ -113,6 +113,13 @@ class LIBAPPFW_PUBLIC GuiRootWidget : public RootWidget */ virtual void addOnTop(GuiWidget *widget); + /** + * Reorders the children of the root widget so that @a widget is added to the top. + * + * @param widget Widget to move to the top. + */ + void moveToTop(GuiWidget &widget); + /** * Sends the current mouse position as a mouse event, just like the mouse would've * been moved. diff --git a/doomsday/libappfw/src/guirootwidget.cpp b/doomsday/libappfw/src/guirootwidget.cpp index d042658818..0f3efcb23d 100644 --- a/doomsday/libappfw/src/guirootwidget.cpp +++ b/doomsday/libappfw/src/guirootwidget.cpp @@ -181,6 +181,15 @@ void GuiRootWidget::addOnTop(GuiWidget *widget) add(widget); } +void GuiRootWidget::moveToTop(GuiWidget &widget) +{ + if(widget.parentWidget()) + { + widget.parentWidget()->remove(widget); + } + addOnTop(&widget); +} + AtlasTexture &GuiRootWidget::atlas() { d->initAtlas();