diff options
| author | Nathan Lee <2431820-nathanal@users.noreply.gitlab.com> | 2019-10-11 07:16:40 +0000 |
|---|---|---|
| committer | Nathan Lee <2431820-nathanal@users.noreply.gitlab.com> | 2019-10-11 11:21:28 +0000 |
| commit | 7c928d9e08793063ab8f3f16aee6326cec193ba1 (patch) | |
| tree | 094f9711d6a19cd278153fdbc8d357a62a0d7993 /src/ui/toolbar/text-toolbar.cpp | |
| parent | Reduce memory leak on editing text, etc. (diff) | |
| download | inkscape-7c928d9e08793063ab8f3f16aee6326cec193ba1.tar.gz inkscape-7c928d9e08793063ab8f3f16aee6326cec193ba1.zip | |
Fix slowdown from switching Text tool a lot
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(); } } |
