diff options
| author | Jabiertxof <jabier.arraiza@marker.es> | 2019-10-28 15:56:06 +0000 |
|---|---|---|
| committer | Jabiertxof <jabier.arraiza@marker.es> | 2019-10-28 15:56:06 +0000 |
| commit | a226c6d04a8b96e9bb8ed1d593780ef77808b344 (patch) | |
| tree | 5114d05b576a479ac1355f1d46e241cbf298d8c4 | |
| parent | Update Russian translation (diff) | |
| download | inkscape-a226c6d04a8b96e9bb8ed1d593780ef77808b344.tar.gz inkscape-a226c6d04a8b96e9bb8ed1d593780ef77808b344.zip | |
Fix some blurs iddle large loops
| -rw-r--r-- | src/display/sp-canvas.cpp | 8 | ||||
| -rw-r--r-- | src/ui/dialog/objects.cpp | 1 | ||||
| -rw-r--r-- | src/ui/tools/select-tool.cpp | 14 | ||||
| -rw-r--r-- | src/ui/widget/object-composite-settings.cpp | 13 |
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, |
