From 49bcc69c9a0928453cf7a0f7017e9ac194c1b603 Mon Sep 17 00:00:00 2001 From: David Capello Date: Fri, 11 Jun 2021 12:07:28 -0300 Subject: [PATCH] Add stabilizer options for the Lasso tool --- data/widgets/dynamics.xml | 4 ++-- src/app/ui/context_bar.cpp | 11 ++++++++++- src/app/ui/dynamics_popup.cpp | 7 +++++++ src/app/ui/dynamics_popup.h | 3 ++- 4 files changed, 21 insertions(+), 4 deletions(-) diff --git a/data/widgets/dynamics.xml b/data/widgets/dynamics.xml index 884770ee5..59cf45345 100644 --- a/data/widgets/dynamics.xml +++ b/data/widgets/dynamics.xml @@ -6,10 +6,10 @@ + tooltip="@.stabilizer_tooltip" tooltip_dir="bottom" minwidth="64" /> - + diff --git a/src/app/ui/context_bar.cpp b/src/app/ui/context_bar.cpp index 2848242c3..4fd2a42a9 100644 --- a/src/app/ui/context_bar.cpp +++ b/src/app/ui/context_bar.cpp @@ -1150,6 +1150,7 @@ public: if (!m_popup) { m_popup.reset(new DynamicsPopup(this)); + m_popup->setOptionsGridVisibility(m_optionsGridVisibility); m_popup->Close.connect( [this](CloseEvent&){ deselectItems(); @@ -1173,6 +1174,12 @@ public: return m_dynamics; } + void setOptionsGridVisibility(bool state) { + m_optionsGridVisibility = state; + if (m_popup) + m_popup->setOptionsGridVisibility(state); + } + private: // DynamicsPopup::Delegate impl doc::BrushRef getActiveBrush() override { @@ -1205,6 +1212,7 @@ private: std::unique_ptr m_popup; ContextBar* m_ctxBar; mutable tools::DynamicsOptions m_dynamics; + bool m_optionsGridVisibility = true; }; class ContextBar::FreehandAlgorithmField : public CheckBox { @@ -2096,7 +2104,8 @@ void ContextBar::updateForTool(tools::Tool* tool) m_eyedropperField->setVisible(isEyedropper); m_autoSelectLayer->setVisible(isMove); m_dynamics->setVisible(isFreehand && supportDynamics); - m_freehandBox->setVisible(isFreehand && supportOpacity); + m_dynamics->setOptionsGridVisibility(isFreehand && !hasSelectOptions); + m_freehandBox->setVisible(isFreehand); m_toleranceLabel->setVisible(hasTolerance); m_tolerance->setVisible(hasTolerance); m_contiguous->setVisible(hasTolerance); diff --git a/src/app/ui/dynamics_popup.cpp b/src/app/ui/dynamics_popup.cpp index 60f27b79e..e0fe4c8b8 100644 --- a/src/app/ui/dynamics_popup.cpp +++ b/src/app/ui/dynamics_popup.cpp @@ -264,6 +264,13 @@ DynamicsPopup::DynamicsPopup(Delegate* delegate) onValuesChange(nullptr); } +void DynamicsPopup::setOptionsGridVisibility(bool state) +{ + m_dynamics->grid()->setVisible(state); + if (isVisible()) + expandWindow(sizeHint()); +} + tools::DynamicsOptions DynamicsPopup::getDynamics() const { tools::DynamicsOptions opts; diff --git a/src/app/ui/dynamics_popup.h b/src/app/ui/dynamics_popup.h index 93e44fb1c..be3a1d9e5 100644 --- a/src/app/ui/dynamics_popup.h +++ b/src/app/ui/dynamics_popup.h @@ -1,5 +1,5 @@ // Aseprite -// Copyright (C) 2020 Igara Studio S.A. +// Copyright (C) 2020-2021 Igara Studio S.A. // // This program is distributed under the terms of // the End-User License Agreement for Aseprite. @@ -35,6 +35,7 @@ namespace app { DynamicsPopup(Delegate* delegate); tools::DynamicsOptions getDynamics() const; + void setOptionsGridVisibility(bool state); private: class ThresholdSlider;