diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/inkscape-application.cpp | 15 | ||||
| -rw-r--r-- | src/inkscape-application.h | 3 | ||||
| -rw-r--r-- | src/inkscape-main.cpp | 4 | ||||
| -rw-r--r-- | src/inkscape-window.cpp | 3 |
4 files changed, 23 insertions, 2 deletions
diff --git a/src/inkscape-application.cpp b/src/inkscape-application.cpp index 0ebc93f82..cd88345ff 100644 --- a/src/inkscape-application.cpp +++ b/src/inkscape-application.cpp @@ -52,6 +52,11 @@ InkscapeApplication::InkscapeApplication() , _active_view(nullptr) {} +/** Update windows in response to: + * - New active window + * - Document change + * - Selection change + */ void InkscapeApplication::update_windows(SPDocument* document) { @@ -60,12 +65,22 @@ InkscapeApplication::update_windows(SPDocument* document) if (it != _documents.end()) { std::vector<InkscapeWindow*> windows = it->second; std::cout << "InkscapeApplication::update_windows: windows: " << windows.size() << std::endl; + // Loop over InkscapeWindows. + // Loop over DialogWindows. TBD } else { std::cout << "InkscapeApplication::update_windows: no windows found" << std::endl; } } template<class T> +ConcreteInkscapeApplication<T>& +ConcreteInkscapeApplication<T>::get_instance() +{ + static ConcreteInkscapeApplication<T> instance; + return instance; +} + +template<class T> ConcreteInkscapeApplication<T>::ConcreteInkscapeApplication() : T("org.inkscape.application.with_gui", Gio::APPLICATION_HANDLES_OPEN | // Use default file opening. diff --git a/src/inkscape-application.h b/src/inkscape-application.h index 3b84770cf..d5b58d5cd 100644 --- a/src/inkscape-application.h +++ b/src/inkscape-application.h @@ -96,6 +96,9 @@ protected: template <class T> class ConcreteInkscapeApplication : public T, public InkscapeApplication { public: + static ConcreteInkscapeApplication<T>& get_instance(); + +private: ConcreteInkscapeApplication(); public: diff --git a/src/inkscape-main.cpp b/src/inkscape-main.cpp index d4fe68bb8..3e008558f 100644 --- a/src/inkscape-main.cpp +++ b/src/inkscape-main.cpp @@ -21,9 +21,9 @@ int main(int argc, char *argv[]) { if (gtk_init_check(NULL, NULL)) - return (new ConcreteInkscapeApplication<Gtk::Application>())->run(argc, argv); + return (ConcreteInkscapeApplication<Gtk::Application>::get_instance()).run(argc, argv); else - return (new ConcreteInkscapeApplication<Gio::Application>())->run(argc, argv); + return (ConcreteInkscapeApplication<Gio::Application>::get_instance()).run(argc, argv); } /* diff --git a/src/inkscape-window.cpp b/src/inkscape-window.cpp index 68a8db819..600b602d1 100644 --- a/src/inkscape-window.cpp +++ b/src/inkscape-window.cpp @@ -41,6 +41,9 @@ InkscapeWindow::InkscapeWindow(SPDocument* document) return; } + ConcreteInkscapeApplication<Gtk::Application>& my_app = + ConcreteInkscapeApplication<Gtk::Application>::get_instance(); + Glib::RefPtr<Gio::Application> gio_app = Gio::Application::get_default(); Glib::RefPtr<Gtk::Application> gtk_app = Glib::RefPtr<Gtk::Application>::cast_dynamic(gio_app); _app = Glib::RefPtr<InkscapeApplication>::cast_dynamic(gtk_app); |
