diff options
Diffstat (limited to 'src/ui/toolbar/text-toolbar.cpp')
| -rw-r--r-- | src/ui/toolbar/text-toolbar.cpp | 30 |
1 files changed, 17 insertions, 13 deletions
diff --git a/src/ui/toolbar/text-toolbar.cpp b/src/ui/toolbar/text-toolbar.cpp index f2cf73257..0145a01c4 100644 --- a/src/ui/toolbar/text-toolbar.cpp +++ b/src/ui/toolbar/text-toolbar.cpp @@ -2187,28 +2187,32 @@ void TextToolbar::selection_changed(Inkscape::Selection *selection) // don't bot } void -TextToolbar::watch_ec(SPDesktop* desktop, Inkscape::UI::Tools::ToolBase* ec) {https://gitlab.com/inkscape/inkscape/merge_requests/796 - if (SP_IS_TEXT_CONTEXT(ec)) { +TextToolbar::watch_ec(SPDesktop* desktop, Inkscape::UI::Tools::ToolBase* ec) { + bool is_text_toolbar = SP_IS_TEXT_CONTEXT(ec); + bool is_select_toolbar = !is_text_toolbar && SP_IS_SELECT_CONTEXT(ec); + if (is_text_toolbar) { // Watch selection - // Ensure FontLister is updated here first.................. VVVVV + // Ensure FontLister is updated here first.................. c_selection_changed = desktop->getSelection()->connectChangedFirst(sigc::mem_fun(*this, &TextToolbar::selection_changed)); c_selection_modified = desktop->getSelection()->connectModifiedFirst(sigc::mem_fun(*this, &TextToolbar::selection_modified)); c_subselection_changed = desktop->connectToolSubselectionChanged(sigc::mem_fun(*this, &TextToolbar::subselection_changed)); this->_sub_active_item = nullptr; selection_changed(desktop->getSelection()); - } else if (SP_IS_SELECT_CONTEXT(ec)) { + } else if (is_select_toolbar) { c_selection_modified_select_tool = desktop->getSelection()->connectModifiedFirst( sigc::mem_fun(*this, &TextToolbar::selection_modified_select_tool)); - } else { - if (c_selection_changed) - c_selection_changed.disconnect(); - if (c_selection_modified) - c_selection_modified.disconnect(); - if (c_subselection_changed) - c_subselection_changed.disconnect(); - if (c_selection_modified_select_tool) - c_selection_modified_select_tool.disconnect(); + } + + + if (!is_text_toolbar) { + c_selection_changed.disconnect(); + c_selection_modified.disconnect(); + c_subselection_changed.disconnect(); + } + + if (!is_select_toolbar) { + c_selection_modified_select_tool.disconnect(); } } |
