summaryrefslogtreecommitdiffstats
path: root/src/ui/toolbar/text-toolbar.cpp
diff options
context:
space:
mode:
authorNathan Lee <2431820-nathanal@users.noreply.gitlab.com>2019-10-11 07:16:40 +0000
committerNathan Lee <2431820-nathanal@users.noreply.gitlab.com>2019-10-11 11:21:28 +0000
commit7c928d9e08793063ab8f3f16aee6326cec193ba1 (patch)
tree094f9711d6a19cd278153fdbc8d357a62a0d7993 /src/ui/toolbar/text-toolbar.cpp
parentReduce memory leak on editing text, etc. (diff)
downloadinkscape-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.cpp30
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();
}
}