summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/desktop.cpp80
-rw-r--r--src/ui/dialog/dialog-manager.cpp9
-rw-r--r--src/ui/dialog/dialog-manager.h4
3 files changed, 42 insertions, 51 deletions
diff --git a/src/desktop.cpp b/src/desktop.cpp
index d19a99da6..dbad37b92 100644
--- a/src/desktop.cpp
+++ b/src/desktop.cpp
@@ -1896,55 +1896,45 @@ SPDesktop::show_dialogs()
/*
- * Get each dialogs previous state from preferences and reopen on startup if needed.
- * Map dialog 'open' verb ids to dialog last visible state preference.
- * Would prefer to use the Dialog Manager to open, but currently it doesn't support non-dockable dialogs
+ * Get each dialogs previous state from preferences and reopen on startup if needed, without grabbing focus (canvas retains focus).
+ * Map dialog manager's dialog IDs to dialog last visible state preference. FIXME: store this correspondence in dialogs themselves!
*/
- std::map<int, Glib::ustring> mapVerbPreference;
- std::map<int, Glib::ustring>::const_iterator iter;
- mapVerbPreference.insert(std::make_pair ((int)SP_VERB_DIALOG_LAYERS, "/dialogs/layers") );
- mapVerbPreference.insert(std::make_pair ((int)SP_VERB_DIALOG_FILL_STROKE, "/dialogs/fillstroke") );
- mapVerbPreference.insert(std::make_pair ((int)SP_VERB_DIALOG_EXTENSIONEDITOR, "/dialogs/extensioneditor") );
- mapVerbPreference.insert(std::make_pair ((int)SP_VERB_DIALOG_ALIGN_DISTRIBUTE, "/dialogs/align") );
- mapVerbPreference.insert(std::make_pair ((int)SP_VERB_DIALOG_METADATA, "/dialogs/documentmetadata") );
- mapVerbPreference.insert(std::make_pair ((int)SP_VERB_DIALOG_NAMEDVIEW, "/dialogs/documentoptions") );
- mapVerbPreference.insert(std::make_pair ((int)SP_VERB_DIALOG_FILTER_EFFECTS, "/dialogs/filtereffects") );
- mapVerbPreference.insert(std::make_pair ((int)SP_VERB_DIALOG_FIND, "/dialogs/find") );
- mapVerbPreference.insert(std::make_pair ((int)SP_VERB_DIALOG_GLYPHS, "/dialogs/glyphs") );
- mapVerbPreference.insert(std::make_pair ((int)SP_VERB_DIALOG_DEBUG, "/dialogs/messages") );
- mapVerbPreference.insert(std::make_pair ((int)SP_VERB_HELP_MEMORY, "/dialogs/memory") );
- mapVerbPreference.insert(std::make_pair ((int)SP_VERB_DIALOG_LIVE_PATH_EFFECT, "/dialogs/livepatheffect") );
- mapVerbPreference.insert(std::make_pair ((int)SP_VERB_DIALOG_UNDO_HISTORY, "/dialogs/undo-history") );
- mapVerbPreference.insert(std::make_pair ((int)SP_VERB_DIALOG_TRANSFORM, "/dialogs/transformation") );
- mapVerbPreference.insert(std::make_pair ((int)SP_VERB_DIALOG_SWATCHES, "/dialogs/swatches") );
- mapVerbPreference.insert(std::make_pair ((int)SP_VERB_VIEW_ICON_PREVIEW, "/dialogs/iconpreview") );
- mapVerbPreference.insert(std::make_pair ((int)SP_VERB_DIALOG_SVG_FONTS, "/dialogs/svgfonts") );
- mapVerbPreference.insert(std::make_pair ((int)SP_VERB_DIALOG_INPUT, "/dialogs/inputdevices") );
- mapVerbPreference.insert(std::make_pair ((int)SP_VERB_DIALOG_DISPLAY, "/dialogs/preferences") );
- mapVerbPreference.insert(std::make_pair ((int)SP_VERB_SELECTION_GRIDTILE, "/dialogs/gridtiler") );
- mapVerbPreference.insert(std::make_pair ((int)SP_VERB_SELECTION_TRACE, "/dialogs/trace") );
- mapVerbPreference.insert(std::make_pair ((int)SP_VERB_SELECTION_PIXEL_ART, "/dialogs/pixelart") );
- mapVerbPreference.insert(std::make_pair ((int)SP_VERB_DIALOG_TEXT, "/dialogs/textandfont") );
- mapVerbPreference.insert(std::make_pair ((int)SP_VERB_DIALOG_EXPORT, "/dialogs/export") );
- mapVerbPreference.insert(std::make_pair ((int)SP_VERB_DIALOG_XML_EDITOR, "/dialogs/xml") );
- mapVerbPreference.insert(std::make_pair ((int)SP_VERB_DIALOG_FIND, "/dialogs/find") );
- mapVerbPreference.insert(std::make_pair ((int)SP_VERB_DIALOG_CLONETILER, "/dialogs/clonetiler") );
- mapVerbPreference.insert(std::make_pair ((int)SP_VERB_DIALOG_ITEM, "/dialogs/object") );
- mapVerbPreference.insert(std::make_pair ((int)SP_VERB_DIALOG_SPELLCHECK, "/dialogs/spellcheck") );
- mapVerbPreference.insert(std::make_pair ((int)SP_VERB_DIALOG_SYMBOLS, "/dialogs/symbols") );
-
- for (iter = mapVerbPreference.begin(); iter != mapVerbPreference.end(); iter++) {
- int verbId = iter->first;
+ std::map<Glib::ustring, Glib::ustring> mapVerbPreference;
+ mapVerbPreference.insert(std::make_pair ("LayersPanel", "/dialogs/layers") );
+ mapVerbPreference.insert(std::make_pair ("FillAndStroke", "/dialogs/fillstroke") );
+ mapVerbPreference.insert(std::make_pair ("ExtensionEditor", "/dialogs/extensioneditor") );
+ mapVerbPreference.insert(std::make_pair ("AlignAndDistribute", "/dialogs/align") );
+ mapVerbPreference.insert(std::make_pair ("DocumentMetadata", "/dialogs/documentmetadata") );
+ mapVerbPreference.insert(std::make_pair ("DocumentProperties", "/dialogs/documentoptions") );
+ mapVerbPreference.insert(std::make_pair ("FilterEffectsDialog", "/dialogs/filtereffects") );
+ mapVerbPreference.insert(std::make_pair ("Find", "/dialogs/find") );
+ mapVerbPreference.insert(std::make_pair ("Glyphs", "/dialogs/glyphs") );
+ mapVerbPreference.insert(std::make_pair ("Messages", "/dialogs/messages") );
+ mapVerbPreference.insert(std::make_pair ("Memory", "/dialogs/memory") );
+ mapVerbPreference.insert(std::make_pair ("LivePathEffect", "/dialogs/livepatheffect") );
+ mapVerbPreference.insert(std::make_pair ("UndoHistory", "/dialogs/undo-history") );
+ mapVerbPreference.insert(std::make_pair ("Transformation", "/dialogs/transformation") );
+ mapVerbPreference.insert(std::make_pair ("Swatches", "/dialogs/swatches") );
+ mapVerbPreference.insert(std::make_pair ("IconPreviewPanel", "/dialogs/iconpreview") );
+ mapVerbPreference.insert(std::make_pair ("SvgFontsDialog", "/dialogs/svgfonts") );
+ mapVerbPreference.insert(std::make_pair ("InputDevices", "/dialogs/inputdevices") );
+ mapVerbPreference.insert(std::make_pair ("InkscapePreferences", "/dialogs/preferences") );
+ mapVerbPreference.insert(std::make_pair ("TileDialog", "/dialogs/gridtiler") );
+ mapVerbPreference.insert(std::make_pair ("Trace", "/dialogs/trace") );
+ mapVerbPreference.insert(std::make_pair ("PixelArt", "/dialogs/pixelart") );
+ mapVerbPreference.insert(std::make_pair ("TextFont", "/dialogs/textandfont") );
+ mapVerbPreference.insert(std::make_pair ("Export", "/dialogs/export") );
+ mapVerbPreference.insert(std::make_pair ("XmlTree", "/dialogs/xml") );
+ mapVerbPreference.insert(std::make_pair ("CloneTiler", "/dialogs/clonetiler") );
+ mapVerbPreference.insert(std::make_pair ("ObjectProperties", "/dialogs/object") );
+ mapVerbPreference.insert(std::make_pair ("SpellCheck", "/dialogs/spellcheck") );
+ mapVerbPreference.insert(std::make_pair ("Symbols", "/dialogs/symbols") );
+
+ for (std::map<Glib::ustring, Glib::ustring>::const_iterator iter = mapVerbPreference.begin(); iter != mapVerbPreference.end(); iter++) {
Glib::ustring pref = iter->second;
int visible = prefs->getInt(pref + "/visible", 0);
if (visible) {
- Inkscape::Verb *verb = Inkscape::Verb::get(verbId);
- if (verb) {
- SPAction *action = verb->get_action(Inkscape::ActionContext(this));
- if (action) {
- sp_action_perform(action, NULL);
- }
- }
+ _dlg_mgr->showDialog(iter->first.c_str(), false); // without grabbing focus, we need focus to remain on the canvas
}
}
}
diff --git a/src/ui/dialog/dialog-manager.cpp b/src/ui/dialog/dialog-manager.cpp
index 17f6ae74d..6d32e3aa8 100644
--- a/src/ui/dialog/dialog-manager.cpp
+++ b/src/ui/dialog/dialog-manager.cpp
@@ -243,14 +243,14 @@ Dialog *DialogManager::getDialog(GQuark name) {
/**
* Shows the named dialog, creating it if necessary.
*/
-void DialogManager::showDialog(gchar const *name) {
- showDialog(g_quark_from_string(name));
+void DialogManager::showDialog(gchar const *name, bool grabfocus) {
+ showDialog(g_quark_from_string(name), grabfocus);
}
/**
* Shows the named dialog, creating it if necessary.
*/
-void DialogManager::showDialog(GQuark name) {
+void DialogManager::showDialog(GQuark name, bool grabfocus) {
bool wantTiming = Inkscape::Preferences::get()->getBool("/dialogs/debug/trackAppear", false);
GTimer *timer = (wantTiming) ? g_timer_new() : 0; // if needed, must be created/started before getDialog()
Dialog *dialog = getDialog(name);
@@ -261,7 +261,8 @@ void DialogManager::showDialog(GQuark name) {
tracker->setAutodelete(true);
timer = 0;
}
- dialog->present();
+ if (grabfocus)
+ dialog->present();
}
if ( timer ) {
diff --git a/src/ui/dialog/dialog-manager.h b/src/ui/dialog/dialog-manager.h
index 33b166aa1..15573f760 100644
--- a/src/ui/dialog/dialog-manager.h
+++ b/src/ui/dialog/dialog-manager.h
@@ -44,8 +44,8 @@ public:
void registerFactory(GQuark name, DialogFactory factory);
Dialog *getDialog(gchar const* dlgName);
Dialog *getDialog(GQuark dlgName);
- void showDialog(gchar const *name);
- void showDialog(GQuark name);
+ void showDialog(gchar const *name, bool grabfocus=true);
+ void showDialog(GQuark name, bool grabfocus=true);
protected:
DialogManager(DialogManager const &d); // no copy