diff --git a/src/gui/gtk-lumiera.cpp b/src/gui/gtk-lumiera.cpp index 31d319b47..87e2c34a7 100644 --- a/src/gui/gtk-lumiera.cpp +++ b/src/gui/gtk-lumiera.cpp @@ -66,14 +66,18 @@ GtkLumiera::main(int argc, char *argv[]) Project project; Controller controller(project); - WindowManager *manager = WindowManager::instance(); - REQUIRE(manager); - manager->set_theme("lumiera_ui.rc"); - manager->new_window(project, controller); + windowManager.init(); + windowManager.set_theme("lumiera_ui.rc"); + windowManager.new_window(project, controller); kit.run(); } +WindowManager& +GtkLumiera::get_window_manager() +{ + return windowManager; +} Glib::ustring GtkLumiera::get_home_data_path() diff --git a/src/gui/gtk-lumiera.hpp b/src/gui/gtk-lumiera.hpp index 9536f348b..07b36b290 100644 --- a/src/gui/gtk-lumiera.hpp +++ b/src/gui/gtk-lumiera.hpp @@ -39,6 +39,8 @@ #include #include "lib/util.hpp" +#include "window-manager.hpp" + extern "C" { #include } @@ -72,6 +74,8 @@ class GtkLumiera : private boost::noncopyable public: void main(int argc, char *argv[]); + WindowManager& get_window_manager(); + static Glib::ustring get_home_data_path(); /** @@ -98,6 +102,12 @@ public: * Returns tn alphabetical list of the application's authors **/ static const std::vector get_app_authors(); + +protected: + /** + * The application window manager object + **/ + WindowManager windowManager; }; /** diff --git a/src/gui/window-manager.cpp b/src/gui/window-manager.cpp index ec8596563..04f9ffdc9 100644 --- a/src/gui/window-manager.cpp +++ b/src/gui/window-manager.cpp @@ -22,6 +22,7 @@ #include "window-manager.hpp" #include "include/logging.h" +#include "workspace/workspace-window.hpp" using namespace Gtk; using namespace Glib; @@ -34,7 +35,8 @@ namespace gui { IconSize WindowManager::GiantIconSize = ICON_SIZE_INVALID; IconSize WindowManager::MenuIconSize = ICON_SIZE_INVALID; -WindowManager::WindowManager() +void +WindowManager::init() { register_app_icon_sizes(); register_stock_items(); @@ -73,14 +75,6 @@ WindowManager::set_theme(Glib::ustring path) return true; } -WindowManager* -WindowManager::instance() -{ - // Initialized during first access - static WindowManager manager; - return &manager; -} - bool WindowManager::on_window_closed(GdkEventAny* event) { diff --git a/src/gui/window-manager.hpp b/src/gui/window-manager.hpp index 0f2f9c0e2..341c25fcb 100644 --- a/src/gui/window-manager.hpp +++ b/src/gui/window-manager.hpp @@ -26,7 +26,7 @@ */ #include "gtk-lumiera.hpp" -#include "workspace/workspace-window.hpp" +//#include "workspace/workspace-window.hpp" #ifndef WINDOW_MANAGER_HPP #define WINDOW_MANAGER_HPP @@ -41,6 +41,10 @@ namespace controller { class Controller; } // model +namespace workspace { + class WorkspaceWindow; +} + /** * The centralised manager of all lumiera-gui's windows. **/ @@ -48,9 +52,9 @@ class WindowManager : private boost::noncopyable { public: /** - * Default constructor + * Initializes the window manager object **/ - WindowManager(); + void init(); /** * Creates a new window connected to a specified project and @@ -68,10 +72,6 @@ public: **/ bool set_theme(Glib::ustring path); -public: - - static WindowManager* instance(); - /** * A utility function which reads a colour style from the GTK Style. * @param widget The widget to load the style out of. diff --git a/src/gui/workspace/actions.cpp b/src/gui/workspace/actions.cpp index f226775be..e2679b7f1 100644 --- a/src/gui/workspace/actions.cpp +++ b/src/gui/workspace/actions.cpp @@ -190,7 +190,7 @@ Actions::on_menu_view_viewer() void Actions::on_menu_view_new_window() { - WindowManager::instance()->new_window(workspaceWindow.project, + application().get_window_manager().new_window(workspaceWindow.project, workspaceWindow.controller); }