diff options
| author | Jabier Arraiza <jabier.arraiza@marker.es> | 2019-06-22 10:38:08 +0000 |
|---|---|---|
| committer | Jabier Arraiza <jabier.arraiza@marker.es> | 2019-08-02 21:26:28 +0000 |
| commit | f618042e75b267e7fb405c649f735bc18f64ef37 (patch) | |
| tree | 9035477ae9c52ef4b2f2937291b649309da5367d /src/ui/widget/spinbutton.cpp | |
| parent | addpopover to textmenu (diff) | |
| download | inkscape-f618042e75b267e7fb405c649f735bc18f64ef37.tar.gz inkscape-f618042e75b267e7fb405c649f735bc18f64ef37.zip | |
moving hamburger to only line height part
Diffstat (limited to 'src/ui/widget/spinbutton.cpp')
| -rw-r--r-- | src/ui/widget/spinbutton.cpp | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/src/ui/widget/spinbutton.cpp b/src/ui/widget/spinbutton.cpp index c633035cf..0cf29f1dd 100644 --- a/src/ui/widget/spinbutton.cpp +++ b/src/ui/widget/spinbutton.cpp @@ -13,6 +13,7 @@ #include "unit-tracker.h" #include "util/expression-evaluator.h" #include "ui/tools/tool-base.h" +#include <cmath> namespace Inkscape { namespace UI { @@ -26,7 +27,10 @@ SpinButton::connect_signals() { signal_key_press_event().connect(sigc::mem_fun(*this, &SpinButton::on_my_key_press_event)); gtk_widget_add_events(GTK_WIDGET(gobj()), GDK_SCROLL_MASK | GDK_SMOOTH_SCROLL_MASK); signal_scroll_event().connect(sigc::mem_fun(*this, &SpinButton::on_scroll_event)); + signal_value_changed().connect(sigc::mem_fun(*this, &SpinButton::on_value_changed)); set_focus_on_click(true); + prevdigits = get_digits(); + on_value_changed(); }; int SpinButton::on_input(double* newvalue) @@ -61,6 +65,26 @@ int SpinButton::on_input(double* newvalue) return true; } +void SpinButton::on_value_changed() { + double val = get_value(); + double absval = std::abs(val); + int count = get_digits(); + double intpart; + if (modf(absval, &intpart) == 0.0) { + set_digits(0); + count = 0; + } else { + set_digits(prevdigits); + count = prevdigits + 1; + } + if (val < 0) { + count += 1; + } + count += absval > 9 ? (int) log10 (absval) + 1 : 1; + count = std::min(std::max(count, 3), 7); + set_width_chars(count); +} + bool SpinButton::on_my_focus_in_event(GdkEventFocus* /*event*/) { _on_focus_in_value = get_value(); |
