summaryrefslogtreecommitdiffstats
path: root/src/ui/dialog/dialog-manager.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/ui/dialog/dialog-manager.cpp')
-rw-r--r--src/ui/dialog/dialog-manager.cpp17
1 files changed, 17 insertions, 0 deletions
diff --git a/src/ui/dialog/dialog-manager.cpp b/src/ui/dialog/dialog-manager.cpp
index f8c07cf53..17215ac00 100644
--- a/src/ui/dialog/dialog-manager.cpp
+++ b/src/ui/dialog/dialog-manager.cpp
@@ -147,6 +147,23 @@ DialogManager::~DialogManager() {
// Appears to cause a segfault if we do
}
+
+DialogManager &DialogManager::getInstance()
+{
+ int dialogs_type = prefs_get_int_attribute_limited ("options.dialogtype", "value", DOCK, 0, 1);
+
+ /* Use singleton behavior for floating dialogs */
+ if (dialogs_type == FLOATING) {
+ static DialogManager *instance = 0;
+
+ if (!instance)
+ instance = new DialogManager();
+ return *instance;
+ }
+
+ return *new DialogManager();
+}
+
/**
* Registers a dialog factory function used to create the named dialog.
*/