diff options
| author | Patrick Storz <eduard.braun2@gmx.de> | 2019-11-16 21:43:27 +0000 |
|---|---|---|
| committer | Patrick Storz <eduard.braun2@gmx.de> | 2019-11-18 18:01:39 +0000 |
| commit | 4928517e27bf261d667eaa4417cecef0a04b3609 (patch) | |
| tree | 3223de223e2dfbfc6013fae4062149ae8c5b3f50 /src/ui/tools/tool-base.cpp | |
| parent | remove hex color defaults from pref skeleton (diff) | |
| download | inkscape-4928517e27bf261d667eaa4417cecef0a04b3609.tar.gz inkscape-4928517e27bf261d667eaa4417cecef0a04b3609.zip | |
Selectively disable motion event compression for specific tools
It was globally disabled in ab71599ea1af1ea5042e35502e9aa722cc4ab51e
However most of the time we do not care for intermediate motion
events, and forcing to process them only causes unnecessary
performance overhead.
Diffstat (limited to 'src/ui/tools/tool-base.cpp')
| -rw-r--r-- | src/ui/tools/tool-base.cpp | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/src/ui/tools/tool-base.cpp b/src/ui/tools/tool-base.cpp index eb2f2119a..0047e32ef 100644 --- a/src/ui/tools/tool-base.cpp +++ b/src/ui/tools/tool-base.cpp @@ -1057,6 +1057,23 @@ bool ToolBase::deleteSelectedDrag(bool just_one) { return FALSE; } +/** Enable (or disable) high precision for motion events + * + * This is intended to be used by drawing tools, that need to process motion events with high accuracy + * and high update rate (for example free hand tools) + * + * With standard accuracy some intermediate motion events might be discarded + * + * Call this function when an operation that requires high accuracy is started (e.g. mouse button is pressed + * to draw a line). Make sure to call it again and restore standard precision afterwards. **/ +void ToolBase::set_high_motion_precision(bool high_precision) { + Glib::RefPtr<Gdk::Window> window = desktop->getToplevel()->get_window(); + + if (window) { + window->set_event_compression(!high_precision); + } +} + /** * Calls virtual set() function of ToolBase. */ |
