summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJabiertxof <jabier.arraiza@marker.es>2019-10-28 15:56:06 +0000
committerJabiertxof <jabier.arraiza@marker.es>2019-10-28 15:56:06 +0000
commita226c6d04a8b96e9bb8ed1d593780ef77808b344 (patch)
tree5114d05b576a479ac1355f1d46e241cbf298d8c4
parentUpdate Russian translation (diff)
downloadinkscape-a226c6d04a8b96e9bb8ed1d593780ef77808b344.tar.gz
inkscape-a226c6d04a8b96e9bb8ed1d593780ef77808b344.zip
Fix some blurs iddle large loops
-rw-r--r--src/display/sp-canvas.cpp8
-rw-r--r--src/ui/dialog/objects.cpp1
-rw-r--r--src/ui/tools/select-tool.cpp14
-rw-r--r--src/ui/widget/object-composite-settings.cpp13
4 files changed, 18 insertions, 18 deletions
diff --git a/src/display/sp-canvas.cpp b/src/display/sp-canvas.cpp
index a2901741a..311a727ec 100644
--- a/src/display/sp-canvas.cpp
+++ b/src/display/sp-canvas.cpp
@@ -2559,11 +2559,11 @@ gint SPCanvas::idle_handler(gpointer data)
}
#ifdef DEBUG_PERFORMANCE
- now = g_get_monotonic_time();
- elapsed = now - canvas->_idle_time;
- g_message("[%i] loop ended unclean at %f", canvas->_idle_id,
- canvas->_totalelapsed / (double)1000000 + elapsed / (double)1000000);
if (ret == 0) {
+ now = g_get_monotonic_time();
+ elapsed = now - canvas->_idle_time;
+ g_message("[%i] loop ended unclean at %f", canvas->_idle_id,
+ canvas->_totalelapsed / (double)1000000 + elapsed / (double)1000000);
totaloops += 1;
}
if (ret) {
diff --git a/src/ui/dialog/objects.cpp b/src/ui/dialog/objects.cpp
index 821037a8d..a2874fd8f 100644
--- a/src/ui/dialog/objects.cpp
+++ b/src/ui/dialog/objects.cpp
@@ -1670,7 +1670,6 @@ void ObjectsPanel::_blurChangedIter(const Gtk::TreeIter& iter, double blur)
remove_filter(item, false);
}
}
- item->updateRepr(SP_OBJECT_WRITE_NO_CHILDREN | SP_OBJECT_WRITE_EXT);
}
}
}
diff --git a/src/ui/tools/select-tool.cpp b/src/ui/tools/select-tool.cpp
index 6d5fdd2b9..2627f2e9a 100644
--- a/src/ui/tools/select-tool.cpp
+++ b/src/ui/tools/select-tool.cpp
@@ -328,8 +328,7 @@ bool SelectTool::item_handler(SPItem* item, GdkEvent* event) {
nullptr, event->button.time);
this->grabbed = SP_CANVAS_ITEM(desktop->drawing);
-
- desktop->canvas->forceFullRedrawAfterInterruptions(5);
+ desktop->canvas->endForcedFullRedraws();
ret = TRUE;
}
@@ -338,6 +337,7 @@ bool SelectTool::item_handler(SPItem* item, GdkEvent* event) {
this->sp_select_context_abort();
}
break;
+
case GDK_ENTER_NOTIFY: {
if (!desktop->isWaitingCursor() && !this->dragging) {
@@ -490,7 +490,7 @@ bool SelectTool::root_handler(GdkEvent* event) {
this->dragging = false;
sp_event_context_discard_delayed_snap_event(this);
- desktop->canvas->endForcedFullRedraws();
+
} else { // switch tool
Geom::Point const button_pt(event->button.x, event->button.y);
Geom::Point const p(desktop->w2d(button_pt));
@@ -641,8 +641,9 @@ bool SelectTool::root_handler(GdkEvent* event) {
} else {
this->dragging = FALSE;
sp_event_context_discard_delayed_snap_event(this);
- desktop->canvas->endForcedFullRedraws();
+
}
+
} else {
if (Inkscape::Rubberband::get(desktop)->is_started()) {
Inkscape::Rubberband::get(desktop)->move(p);
@@ -656,6 +657,9 @@ bool SelectTool::root_handler(GdkEvent* event) {
gobble_motion_events(GDK_BUTTON1_MASK);
}
}
+ if (this->button_press_ctrl || (this->button_press_alt && !this->button_press_shift && !selection->isEmpty())) {
+ desktop->canvas->endForcedFullRedraws();
+ }
}
break;
}
@@ -704,7 +708,6 @@ bool SelectTool::root_handler(GdkEvent* event) {
gdk_window_set_cursor(window, CursorSelectMouseover);
sp_event_context_discard_delayed_snap_event(this);
- desktop->canvas->endForcedFullRedraws();
if (this->item) {
sp_object_unref( this->item, nullptr);
@@ -790,6 +793,7 @@ bool SelectTool::root_handler(GdkEvent* event) {
ret = TRUE;
}
+ desktop->canvas->endForcedFullRedraws();
if (this->grabbed) {
sp_canvas_item_ungrab(this->grabbed);
diff --git a/src/ui/widget/object-composite-settings.cpp b/src/ui/widget/object-composite-settings.cpp
index d628870e2..adf6427a7 100644
--- a/src/ui/widget/object-composite-settings.cpp
+++ b/src/ui/widget/object-composite-settings.cpp
@@ -109,30 +109,27 @@ ObjectCompositeSettings::_blendBlurValueChanged()
if (!SP_IS_ITEM(*i)) {
continue;
}
-
SPItem * item = SP_ITEM(*i);
SPStyle *style = item->style;
g_assert(style != nullptr);
+ bool change_blend = (item->style->mix_blend_mode.set ? item->style->mix_blend_mode.value : SP_CSS_BLEND_NORMAL) != _filter_modifier.get_blend_mode();
item->style->mix_blend_mode.set = TRUE;
if (item->style->isolation.value == SP_CSS_ISOLATION_ISOLATE) {
item->style->mix_blend_mode.value = SP_CSS_BLEND_NORMAL;
} else {
item->style->mix_blend_mode.value = _filter_modifier.get_blend_mode();
}
- item->updateRepr(SP_OBJECT_WRITE_NO_CHILDREN | SP_OBJECT_WRITE_EXT);
if (radius == 0 && item->style->filter.set
&& filter_is_single_gaussian_blur(SP_FILTER(item->style->getFilter()))) {
remove_filter(item, false);
- }
- else if (radius != 0) {
+ } else if (radius != 0) {
SPFilter *filter = modify_filter_gaussian_blur_from_item(document, item, radius);
sp_style_set_property_url(item, "filter", filter, false);
+ }
+ if (change_blend) { //we do blend so we need update display style
+ item->updateRepr(SP_OBJECT_WRITE_NO_CHILDREN | SP_OBJECT_WRITE_EXT);
}
-
- //request update
- item->requestDisplayUpdate(( SP_OBJECT_MODIFIED_FLAG |
- SP_OBJECT_STYLE_MODIFIED_FLAG ));
}
DocumentUndo::maybeDone(document, _blur_tag.c_str(), _verb_code,