[aseprite] 15/250: Refactor some UI code
Tobias Hansen
thansen at moszumanska.debian.org
Sun Dec 20 15:27:05 UTC 2015
This is an automated email from the git hooks/post-receive script.
thansen pushed a commit to branch master
in repository aseprite.
commit e8abba1b938272e720f67967a1be01817f271ad6
Author: David Capello <davidcapello at gmail.com>
Date: Tue Sep 1 10:18:47 2015 -0300
Refactor some UI code
- Moved ui::GuiSystem from ui/base.h to ui/system.h as ui::UISystem
- Moved some internals to ui::details namespace
- Fix crash of UI tests when ~Manager is called
- Removed ui::init/exit_system() functions
---
src/app/app.cpp | 2 +-
src/app/app.h | 4 ++--
src/tests/test.h | 4 ++--
src/ui/CMakeLists.txt | 1 -
src/ui/base.h | 6 ------
src/ui/intern.cpp | 7 ++++---
src/ui/intern.h | 15 +++++++++++----
src/ui/manager.cpp | 3 +++
src/ui/overlay_manager.h | 4 ++--
src/ui/system.cpp | 17 +++++++++++++----
src/ui/system.h | 6 ++++++
src/ui/theme.cpp | 4 ++--
src/ui/ui.cpp | 42 ------------------------------------------
src/ui/widget.cpp | 4 ++--
14 files changed, 48 insertions(+), 71 deletions(-)
diff --git a/src/app/app.cpp b/src/app/app.cpp
index 8e70ff7..bb26570 100644
--- a/src/app/app.cpp
+++ b/src/app/app.cpp
@@ -156,7 +156,7 @@ void App::initialize(const AppOptions& options)
m_isGui = options.startUI();
m_isShell = options.startShell();
if (m_isGui)
- m_guiSystem.reset(new ui::GuiSystem);
+ m_uiSystem.reset(new ui::UISystem);
// Initializes the application loading the modules, setting the
// graphics mode, loading the configuration and resources, etc.
diff --git a/src/app/app.h b/src/app/app.h
index db75015..78a5c57 100644
--- a/src/app/app.h
+++ b/src/app/app.h
@@ -22,7 +22,7 @@ namespace doc {
}
namespace ui {
- class GuiSystem;
+ class UISystem;
}
namespace app {
@@ -86,7 +86,7 @@ namespace app {
static App* m_instance;
- base::UniquePtr<ui::GuiSystem> m_guiSystem;
+ base::UniquePtr<ui::UISystem> m_uiSystem;
CoreModules* m_coreModules;
Modules* m_modules;
LegacyModules* m_legacy;
diff --git a/src/tests/test.h b/src/tests/test.h
index c9924d3..b0b5ab5 100644
--- a/src/tests/test.h
+++ b/src/tests/test.h
@@ -39,8 +39,8 @@ int main(int argc, char* argv[])
#ifdef TEST_GUI
{
she::ScopedHandle<she::System> system(she::create_system());
- ui::GuiSystem guiSystem;
- base::UniquePtr<ui::Manager> manager(new ui::Manager());
+ ui::UISystem uiSystem;
+ ui::Manager uiManager;
#endif
exitcode = RUN_ALL_TESTS();
diff --git a/src/ui/CMakeLists.txt b/src/ui/CMakeLists.txt
index eaace07..3c19057 100644
--- a/src/ui/CMakeLists.txt
+++ b/src/ui/CMakeLists.txt
@@ -45,7 +45,6 @@ add_library(ui-lib
theme.cpp
timer.cpp
tooltips.cpp
- ui.cpp
view.cpp
viewport.cpp
widget.cpp
diff --git a/src/ui/base.h b/src/ui/base.h
index ce9927d..5d18d40 100644
--- a/src/ui/base.h
+++ b/src/ui/base.h
@@ -62,12 +62,6 @@ namespace ui {
ALIGN_MASK = 0xffff0000,
};
- class GuiSystem {
- public:
- GuiSystem();
- ~GuiSystem();
- };
-
} // namespace ui
#endif // UI_BASE_H_INCLUDED
diff --git a/src/ui/intern.cpp b/src/ui/intern.cpp
index 3d2524f..e947008 100644
--- a/src/ui/intern.cpp
+++ b/src/ui/intern.cpp
@@ -16,16 +16,16 @@
#include <list>
namespace ui {
+namespace details {
static std::list<Widget*>* widgets;
-int init_widgets()
+void initWidgets()
{
widgets = new std::list<Widget*>;
- return 0;
}
-void exit_widgets()
+void exitWidgets()
{
delete widgets;
}
@@ -66,4 +66,5 @@ void reinitThemeForAllWidgets()
Manager::getDefault()->invalidate();
}
+} // namespace details
} // namespace ui
diff --git a/src/ui/intern.h b/src/ui/intern.h
index a150c0d..ecc5e09 100644
--- a/src/ui/intern.h
+++ b/src/ui/intern.h
@@ -23,11 +23,18 @@ namespace ui {
// intern.cpp
- void addWidget(Widget* widget);
- void removeWidget(Widget* widget);
+ namespace details {
- void resetFontAllWidgets();
- void reinitThemeForAllWidgets();
+ void initWidgets();
+ void exitWidgets();
+
+ void addWidget(Widget* widget);
+ void removeWidget(Widget* widget);
+
+ void resetFontAllWidgets();
+ void reinitThemeForAllWidgets();
+
+ } // namespace details
// theme.cpp
diff --git a/src/ui/manager.cpp b/src/ui/manager.cpp
index 3a39476..cee7384 100644
--- a/src/ui/manager.cpp
+++ b/src/ui/manager.cpp
@@ -176,6 +176,9 @@ void Manager::run()
void Manager::flipDisplay()
{
+ if (!m_display)
+ return;
+
OverlayManager* overlays = OverlayManager::instance();
update_cursor_overlay();
diff --git a/src/ui/overlay_manager.h b/src/ui/overlay_manager.h
index e10449c..fb13436 100644
--- a/src/ui/overlay_manager.h
+++ b/src/ui/overlay_manager.h
@@ -1,5 +1,5 @@
// Aseprite UI Library
-// Copyright (C) 2001-2013 David Capello
+// Copyright (C) 2001-2013, 2015 David Capello
//
// This file is released under the terms of the MIT license.
// Read LICENSE.txt for more information.
@@ -18,7 +18,7 @@ namespace ui {
class Overlay;
class OverlayManager {
- friend class GuiSystem; // So it can call destroyInstance() from ~GuiSystem
+ friend class UISystem; // So it can call destroyInstance() from ~UISystem
static OverlayManager* m_singleton;
OverlayManager();
diff --git a/src/ui/system.cpp b/src/ui/system.cpp
index d526828..bed68d9 100644
--- a/src/ui/system.cpp
+++ b/src/ui/system.cpp
@@ -16,6 +16,7 @@
#include "she/surface.h"
#include "ui/cursor.h"
#include "ui/intern.h"
+#include "ui/intern.h"
#include "ui/manager.h"
#include "ui/overlay.h"
#include "ui/overlay_manager.h"
@@ -33,7 +34,7 @@ static Overlay* mouse_cursor_overlay = NULL;
static bool use_native_mouse_cursor = false;
static bool native_cursor_set = false; // If we displayed a native cursor
-/* Mouse information (button and position). */
+// Mouse information (button and position).
static volatile MouseButtons m_buttons;
static gfx::Point m_mouse_pos;
@@ -140,14 +141,22 @@ static void update_mouse_cursor()
}
}
-int init_system()
+UISystem::UISystem()
{
mouse_cursor_type = kNoCursor;
- return 0;
+
+ details::initWidgets();
}
-void exit_system()
+UISystem::~UISystem()
{
+ OverlayManager::destroyInstance();
+
+ // finish theme
+ CurrentTheme::set(NULL);
+
+ details::exitWidgets();
+
_internal_set_mouse_display(NULL);
update_mouse_overlay(NULL);
}
diff --git a/src/ui/system.h b/src/ui/system.h
index 89561ee..3019369 100644
--- a/src/ui/system.h
+++ b/src/ui/system.h
@@ -19,6 +19,12 @@ namespace ui {
class Widget;
+ class UISystem {
+ public:
+ UISystem();
+ ~UISystem();
+ };
+
int display_w();
int display_h();
diff --git a/src/ui/theme.cpp b/src/ui/theme.cpp
index dcd994e..e8de225 100644
--- a/src/ui/theme.cpp
+++ b/src/ui/theme.cpp
@@ -43,13 +43,13 @@ void Theme::regenerate()
onRegenerate();
- resetFontAllWidgets();
+ details::resetFontAllWidgets();
// TODO We cannot reinitialize all widgets because this mess all
// child spacing, border, etc. But it could be good to change the
// uiscale() and get the new look without the need to restart the
// whole app.
- //reinitThemeForAllWidgets();
+ //details::reinitThemeForAllWidgets();
set_mouse_cursor(type);
}
diff --git a/src/ui/ui.cpp b/src/ui/ui.cpp
deleted file mode 100644
index a1f228d..0000000
--- a/src/ui/ui.cpp
+++ /dev/null
@@ -1,42 +0,0 @@
-// Aseprite UI Library
-// Copyright (C) 2001-2013, 2015 David Capello
-//
-// This file is released under the terms of the MIT license.
-// Read LICENSE.txt for more information.
-
-#ifdef HAVE_CONFIG_H
-#include "config.h"
-#endif
-
-#include "ui/base.h"
-#include "ui/overlay_manager.h"
-#include "ui/theme.h"
-
-namespace ui {
-
-int init_widgets();
-void exit_widgets();
-
-int init_system();
-void exit_system();
-
-GuiSystem::GuiSystem()
-{
- // initialize system
- init_system();
- init_widgets();
-}
-
-GuiSystem::~GuiSystem()
-{
- OverlayManager::destroyInstance();
-
- // finish theme
- CurrentTheme::set(NULL);
-
- // shutdown system
- exit_widgets();
- exit_system();
-}
-
-} // namespace ui
diff --git a/src/ui/widget.cpp b/src/ui/widget.cpp
index 52eaf20..42d78a8 100644
--- a/src/ui/widget.cpp
+++ b/src/ui/widget.cpp
@@ -75,7 +75,7 @@ Widget::Widget(WidgetType type)
, m_maxSize(INT_MAX, INT_MAX)
, m_childSpacing(0)
{
- addWidget(this);
+ details::addWidget(this);
}
Widget::~Widget()
@@ -101,7 +101,7 @@ Widget::~Widget()
delete m_preferredSize;
// Low level free
- removeWidget(this);
+ details::removeWidget(this);
}
void Widget::deferDelete()
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-games/aseprite.git
More information about the Pkg-games-commits
mailing list