summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/inkscape-application.cpp15
-rw-r--r--src/inkscape-application.h3
-rw-r--r--src/inkscape-main.cpp4
-rw-r--r--src/inkscape-window.cpp3
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);