[krita/kazakov/shift-gesture-slowdown] /: Fix Shift+gensture slowdown

Scott Petrovic scottpetrovic at gmail.com
Tue Sep 13 23:55:00 UTC 2016


I tested the branch and the gesture is definitely way faster.

The only type of regression I saw has to do with the Brush Tip: auto area.
The big square on the left that shows the shape doesn't show anything any
more. It is hard to tell what the brush tip auto shape will look like now.

Other than that it looks great!


On Mon, Sep 12, 2016 at 12:17 PM, Dmitry Kazakov <dimula73 at gmail.com> wrote:

> Git commit b38e2c64c4831d4fc1e01ecdd8b7c9b08ce3376c by Dmitry Kazakov.
> Committed on 12/09/2016 at 17:16.
> Pushed by dkazakov into branch 'kazakov/shift-gesture-slowdown'.
>
> Fix Shift+gensture slowdown
>
> Thsi is a really severe refactoring! I need your help with testing
> is the paintop editor popup still works fine!
>
> CC:kimageshop at kde.org
>
> M  +1    -0    libs/brush/CMakeLists.txt
> M  +3    -3    libs/brush/kis_abr_brush.cpp
> M  +2    -2    libs/brush/kis_abr_brush.h
> M  +2    -2    libs/brush/kis_abr_brush_collection.cpp
> M  +2    -2    libs/brush/kis_abr_brush_collection.h
> M  +12   -0    libs/brush/kis_auto_brush.cpp
> M  +3    -0    libs/brush/kis_auto_brush.h
> M  +3    -0    libs/brush/kis_brush.h
> M  +5    -5    libs/brush/kis_gbr_brush.cpp
> M  +2    -2    libs/brush/kis_gbr_brush.h
> M  +1    -1    libs/brush/kis_png_brush.cpp
> M  +2    -2    libs/brush/kis_png_brush.h
> C  +17   -14   libs/brush/kis_scaling_size_brush.cpp [from:
> plugins/paintops/experiment/kis_experiment_paintop_settings_widget.h -
> 058% similarity]
> C  +12   -11   libs/brush/kis_scaling_size_brush.h [from:
> plugins/paintops/experiment/kis_experiment_paintop_settings_widget.h -
> 059% similarity]
> M  +2    -2    libs/brush/kis_svg_brush.cpp
> M  +2    -2    libs/brush/kis_svg_brush.h
> M  +1    -1    libs/brush/kis_text_brush.cpp
> M  +2    -2    libs/brush/kis_text_brush.h
> M  +1    -0    libs/image/CMakeLists.txt
> C  +12   -14   libs/image/brushengine/kis_no_size_paintop_settings.cpp
> [from: plugins/paintops/experiment/kis_experiment_paintop_settings_widget.h
> - 058% similarity]
> C  +10   -11   libs/image/brushengine/kis_no_size_paintop_settings.h
> [from: plugins/paintops/experiment/kis_experiment_paintop_settings_widget.h
> - 059% similarity]
> M  +0    -9    libs/image/brushengine/kis_paintop_config_widget.cpp
> M  +0    -10   libs/image/brushengine/kis_paintop_config_widget.h
> M  +0    -32   libs/image/brushengine/kis_paintop_settings.cpp
> M  +2    -2    libs/image/brushengine/kis_paintop_settings.h
> M  +7    -0    libs/image/kis_base_mask_generator.cpp
> M  +3    -1    libs/image/kis_base_mask_generator.h
> C  +1    -18   libs/image/kisproofingconfiguration.cpp [from:
> plugins/paintops/experiment/kis_experiment_paintop_settings_widget.h -
> 057% similarity]
> M  +4    -2    libs/ui/kis_paintop_box.cc
> M  +4    -4    libs/ui/tool/kis_tool_freehand.cc
> M  +1    -0    libs/ui/widgets/kis_paintop_presets_popup.cpp
> M  +1    -0    libs/ui/widgets/kis_paintop_presets_popup.h
> M  +15   -0    plugins/paintops/chalk/kis_chalk_paintop_settings.cpp
> M  +3    -0    plugins/paintops/chalk/kis_chalk_paintop_settings.h
> M  +0    -14   plugins/paintops/chalk/kis_chalk_paintop_settings_widget.
> cpp
> M  +0    -4    plugins/paintops/chalk/kis_chalk_paintop_settings_widget.h
> M  +7    -0    plugins/paintops/chalk/kis_chalkop_option.h
> M  +16   -1    plugins/paintops/curvebrush/kis_curve_paintop_settings.cpp
> M  +3    -0    plugins/paintops/curvebrush/kis_curve_paintop_settings.h
> M  +15   -0    plugins/paintops/deform/kis_deform_paintop_settings.cpp
> M  +3    -0    plugins/paintops/deform/kis_deform_paintop_settings.h
> M  +0    -19   plugins/paintops/deform/kis_deform_paintop_settings_
> widget.cpp
> M  +0    -2    plugins/paintops/deform/kis_deform_paintop_settings_
> widget.h
> M  +17   -1    plugins/paintops/dynadraw/kis_dyna_paintop_settings.cpp
> M  +3    -0    plugins/paintops/dynadraw/kis_dyna_paintop_settings.h
> M  +2    -2    plugins/paintops/experiment/kis_experiment_paintop_
> settings.h
> M  +0    -4    plugins/paintops/experiment/kis_experiment_paintop_
> settings_widget.cpp
> M  +0    -1    plugins/paintops/experiment/kis_experiment_paintop_
> settings_widget.h
> M  +2    -2    plugins/paintops/gridbrush/kis_grid_paintop.cpp
> M  +2    -1    plugins/paintops/gridbrush/kis_grid_paintop.h
> M  +17   -1    plugins/paintops/gridbrush/kis_grid_paintop_settings.cpp
> M  +3    -0    plugins/paintops/gridbrush/kis_grid_paintop_settings.h
> M  +0    -15   plugins/paintops/gridbrush/kis_grid_paintop_settings_
> widget.cpp
> M  +0    -2    plugins/paintops/gridbrush/kis_grid_paintop_settings_
> widget.h
> M  +4    -4    plugins/paintops/gridbrush/kis_gridop_option.h
> M  +0    -11   plugins/paintops/libpaintop/kis_brush_based_paintop_
> options_widget.cpp
> M  +0    -2    plugins/paintops/libpaintop/kis_brush_based_paintop_
> options_widget.h
> M  +56   -43   plugins/paintops/libpaintop/kis_brush_based_paintop_
> settings.cpp
> M  +2    -0    plugins/paintops/libpaintop/kis_brush_based_paintop_
> settings.h
> M  +0    -11   plugins/paintops/libpaintop/kis_brush_option_widget.cpp
> M  +0    -3    plugins/paintops/libpaintop/kis_brush_option_widget.h
> M  +1    -46   plugins/paintops/libpaintop/kis_brush_selection_widget.cpp
> M  +0    -2    plugins/paintops/libpaintop/kis_brush_selection_widget.h
> M  +2    -2    plugins/paintops/particle/kis_particle_paintop_settings.h
> M  +17   -1    plugins/paintops/spray/kis_spray_paintop_settings.cpp
> M  +4    -1    plugins/paintops/spray/kis_spray_paintop_settings.h
> M  +0    -13   plugins/paintops/spray/kis_spray_paintop_settings_widget.
> cpp
> M  +0    -3    plugins/paintops/spray/kis_spray_paintop_settings_widget.h
>
> http://commits.kde.org/krita/b38e2c64c4831d4fc1e01ecdd8b7c9b08ce3376c
>
> diff --git a/libs/brush/CMakeLists.txt b/libs/brush/CMakeLists.txt
> index 415553c..704906c 100644
> --- a/libs/brush/CMakeLists.txt
> +++ b/libs/brush/CMakeLists.txt
> @@ -9,6 +9,7 @@ set(kritalibbrush_LIB_SRCS
>      kis_auto_brush.cpp
>      kis_boundary.cc
>      kis_brush.cpp
> +    kis_scaling_size_brush.cpp
>      kis_brush_registry.cpp
>      kis_brush_server.cpp
>      kis_gbr_brush.cpp
> diff --git a/libs/brush/kis_abr_brush.cpp b/libs/brush/kis_abr_brush.cpp
> index fbdca10..aeb5c83 100644
> --- a/libs/brush/kis_abr_brush.cpp
> +++ b/libs/brush/kis_abr_brush.cpp
> @@ -40,7 +40,7 @@
>  #define DEFAULT_SPACING 0.25
>
>  KisAbrBrush::KisAbrBrush(const QString& filename, KisAbrBrushCollection
> *parent)
> -    : KisBrush(filename)
> +    : KisScalingSizeBrush(filename)
>      , m_parent(parent)
>  {
>      setBrushType(INVALID);
> @@ -49,14 +49,14 @@ KisAbrBrush::KisAbrBrush(const QString& filename,
> KisAbrBrushCollection *parent)
>  }
>
>  KisAbrBrush::KisAbrBrush(const KisAbrBrush& rhs)
> -    : KisBrush(rhs),
> +    : KisScalingSizeBrush(rhs),
>        m_parent(0)
>  {
>      // Warning! The brush became detached from the parent!
>  }
>
>  KisAbrBrush::KisAbrBrush(const KisAbrBrush& rhs, KisAbrBrushCollection
> *parent)
> -    : KisBrush(rhs),
> +    : KisScalingSizeBrush(rhs),
>        m_parent(parent)
>  {
>  }
> diff --git a/libs/brush/kis_abr_brush.h b/libs/brush/kis_abr_brush.h
> index 5b5af6e..0eb9ca9 100644
> --- a/libs/brush/kis_abr_brush.h
> +++ b/libs/brush/kis_abr_brush.h
> @@ -23,7 +23,7 @@
>  #include <QImage>
>  #include <QVector>
>
> -#include <kis_brush.h>
> +#include <kis_scaling_size_brush.h>
>  #include <kis_types.h>
>  #include <kis_shared.h>
>  #include <brushengine/kis_paint_information.h>
> @@ -38,7 +38,7 @@ class QString;
>  class QIODevice;
>
>
> -class BRUSH_EXPORT KisAbrBrush : public KisBrush
> +class BRUSH_EXPORT KisAbrBrush : public KisScalingSizeBrush
>  {
>
>  public:
> diff --git a/libs/brush/kis_abr_brush_collection.cpp
> b/libs/brush/kis_abr_brush_collection.cpp
> index 0ee1e90..8ae392b 100644
> --- a/libs/brush/kis_abr_brush_collection.cpp
> +++ b/libs/brush/kis_abr_brush_collection.cpp
> @@ -523,12 +523,12 @@ qint32 KisAbrBrushCollection::abr_brush_load(QDataStream
> & abr, AbrInfo *abr_hdr
>
>
>  KisAbrBrushCollection::KisAbrBrushCollection(const QString& filename)
> -    : KisBrush(filename)
> +    : KisScalingSizeBrush(filename)
>  {
>  }
>
>  KisAbrBrushCollection::KisAbrBrushCollection(const
> KisAbrBrushCollection& rhs)
> -    : KisBrush(rhs)
> +    : KisScalingSizeBrush(rhs)
>  {
>      for (auto it = rhs.m_abrBrushes.begin();
>           it != rhs.m_abrBrushes.end();
> diff --git a/libs/brush/kis_abr_brush_collection.h
> b/libs/brush/kis_abr_brush_collection.h
> index aca684c..bb857a4 100644
> --- a/libs/brush/kis_abr_brush_collection.h
> +++ b/libs/brush/kis_abr_brush_collection.h
> @@ -26,7 +26,7 @@
>  #include <QString>
>  #include <kis_debug.h>
>
> -#include <kis_brush.h>
> +#include <kis_scaling_size_brush.h>
>  #include <kis_types.h>
>  #include <kis_shared.h>
>  #include <brushengine/kis_paint_information.h>
> @@ -40,7 +40,7 @@ struct AbrInfo;
>  /**
>   * load a collection of brushes from an abr file
>   */
> -class BRUSH_EXPORT KisAbrBrushCollection : public KisBrush
> +class BRUSH_EXPORT KisAbrBrushCollection : public KisScalingSizeBrush
>  {
>
>  protected:
> diff --git a/libs/brush/kis_auto_brush.cpp b/libs/brush/kis_auto_brush.cpp
> index d91f232..2bb6916 100644
> --- a/libs/brush/kis_auto_brush.cpp
> +++ b/libs/brush/kis_auto_brush.cpp
> @@ -99,6 +99,16 @@ KisAutoBrush::~KisAutoBrush()
>  {
>  }
>
> +qreal KisAutoBrush::userEffectiveSize() const
> +{
> +    return d->shape->diameter();
> +}
> +
> +void KisAutoBrush::setUserEffectiveSize(qreal value)
> +{
> +    d->shape->setDiameter(value);
> +}
> +
>  KisAutoBrush::KisAutoBrush(const KisAutoBrush& rhs)
>      : KisBrush(rhs),
>        d(new Private(*rhs.d))
> @@ -324,6 +334,8 @@ void KisAutoBrush::toXML(QDomDocument& doc,
> QDomElement& e) const
>
>  QImage KisAutoBrush::createBrushPreview()
>  {
> +    return QImage();
> +
>      srand(0);
>      srand48(0);
>      int width = maskWidth(KisDabShape(), 0.0, 0.0, KisPaintInformation());
> diff --git a/libs/brush/kis_auto_brush.h b/libs/brush/kis_auto_brush.h
> index cda35e2..86cad04 100644
> --- a/libs/brush/kis_auto_brush.h
> +++ b/libs/brush/kis_auto_brush.h
> @@ -42,6 +42,9 @@ public:
>
>  public:
>
> +    qreal userEffectiveSize() const;
> +    void setUserEffectiveSize(qreal value);
> +
>      qint32 maskHeight(KisDabShape const& shape, qreal subPixelX, qreal
> subPixelY,
>          const KisPaintInformation& info) const Q_DECL_OVERRIDE;
>
> diff --git a/libs/brush/kis_brush.h b/libs/brush/kis_brush.h
> index 4ded24a..be7adb2 100644
> --- a/libs/brush/kis_brush.h
> +++ b/libs/brush/kis_brush.h
> @@ -120,6 +120,9 @@ public:
>
>      virtual ~KisBrush();
>
> +    virtual qreal userEffectiveSize() const { return 0;};
> +    virtual void setUserEffectiveSize(qreal value) {};
> +
>      virtual bool load() {
>          return false;
>      }
> diff --git a/libs/brush/kis_gbr_brush.cpp b/libs/brush/kis_gbr_brush.cpp
> index 6969837..2a17626 100644
> --- a/libs/brush/kis_gbr_brush.cpp
> +++ b/libs/brush/kis_gbr_brush.cpp
> @@ -84,7 +84,7 @@ struct KisGbrBrush::Private {
>  #define DEFAULT_SPACING 0.25
>
>  KisGbrBrush::KisGbrBrush(const QString& filename)
> -    : KisBrush(filename)
> +    : KisScalingSizeBrush(filename)
>      , d(new Private)
>  {
>      d->ownData = true;
> @@ -96,7 +96,7 @@ KisGbrBrush::KisGbrBrush(const QString& filename)
>  KisGbrBrush::KisGbrBrush(const QString& filename,
>                           const QByteArray& data,
>                           qint32 & dataPos)
> -    : KisBrush(filename)
> +    : KisScalingSizeBrush(filename)
>      , d(new Private)
>  {
>      d->ownData = false;
> @@ -111,7 +111,7 @@ KisGbrBrush::KisGbrBrush(const QString& filename,
>  }
>
>  KisGbrBrush::KisGbrBrush(KisPaintDeviceSP image, int x, int y, int w,
> int h)
> -    : KisBrush()
> +    : KisScalingSizeBrush()
>      , d(new Private)
>  {
>      d->ownData = true;
> @@ -122,7 +122,7 @@ KisGbrBrush::KisGbrBrush(KisPaintDeviceSP image, int
> x, int y, int w, int h)
>  }
>
>  KisGbrBrush::KisGbrBrush(const QImage& image, const QString& name)
> -    : KisBrush()
> +    : KisScalingSizeBrush()
>      , d(new Private)
>  {
>      d->ownData = false;
> @@ -135,7 +135,7 @@ KisGbrBrush::KisGbrBrush(const QImage& image, const
> QString& name)
>  }
>
>  KisGbrBrush::KisGbrBrush(const KisGbrBrush& rhs)
> -    : KisBrush(rhs)
> +    : KisScalingSizeBrush(rhs)
>      , d(new Private(*rhs.d))
>  {
>      setName(rhs.name());
> diff --git a/libs/brush/kis_gbr_brush.h b/libs/brush/kis_gbr_brush.h
> index cc27d00..faefbe3 100644
> --- a/libs/brush/kis_gbr_brush.h
> +++ b/libs/brush/kis_gbr_brush.h
> @@ -23,7 +23,7 @@
>  #include <QImage>
>  #include <QVector>
>
> -#include "kis_brush.h"
> +#include "kis_scaling_size_brush.h"
>  #include <kis_types.h>
>  #include <kis_shared.h>
>  #include <brushengine/kis_paint_information.h>
> @@ -36,7 +36,7 @@ typedef KisSharedPtr<KisQImagemask> KisQImagemaskSP;
>  class QString;
>  class QIODevice;
>
> -class BRUSH_EXPORT KisGbrBrush : public KisBrush
> +class BRUSH_EXPORT KisGbrBrush : public KisScalingSizeBrush
>  {
>
>  protected:
> diff --git a/libs/brush/kis_png_brush.cpp b/libs/brush/kis_png_brush.cpp
> index 12f9390..6709913 100644
> --- a/libs/brush/kis_png_brush.cpp
> +++ b/libs/brush/kis_png_brush.cpp
> @@ -27,7 +27,7 @@
>  #include <kis_dom_utils.h>
>
>  KisPngBrush::KisPngBrush(const QString& filename)
> -    : KisBrush(filename)
> +    : KisScalingSizeBrush(filename)
>  {
>      setBrushType(INVALID);
>      setSpacing(0.25);
> diff --git a/libs/brush/kis_png_brush.h b/libs/brush/kis_png_brush.h
> index c993847..4c524c5 100644
> --- a/libs/brush/kis_png_brush.h
> +++ b/libs/brush/kis_png_brush.h
> @@ -19,9 +19,9 @@
>  #ifndef KIS_PNG_BRUSH_
>  #define KIS_PNG_BRUSH_
>
> -#include "kis_brush.h"
> +#include "kis_scaling_size_brush.h"
>
> -class BRUSH_EXPORT  KisPngBrush : public KisBrush
> +class BRUSH_EXPORT  KisPngBrush : public KisScalingSizeBrush
>  {
>  public:
>      /// Construct brush to load filename later as brush
> diff --git a/plugins/paintops/experiment/kis_experiment_paintop_settings_widget.h
> b/libs/brush/kis_scaling_size_brush.cpp
> similarity index 58%
> copy from plugins/paintops/experiment/kis_experiment_paintop_
> settings_widget.h
> copy to libs/brush/kis_scaling_size_brush.cpp
> index ec136cc..276b295 100644
> --- a/plugins/paintops/experiment/kis_experiment_paintop_settings_widget.h
> +++ b/libs/brush/kis_scaling_size_brush.cpp
> @@ -1,5 +1,5 @@
>  /*
> - *  Copyright (c) 2009,2010 Lukáš Tvrdý <lukast.dev at gmail.com>
> + *  Copyright (c) 2016 Dmitry Kazakov <dimula73 at gmail.com>
>   *
>   *  This program is free software; you can redistribute it and/or modify
>   *  it under the terms of the GNU General Public License as published by
> @@ -16,21 +16,24 @@
>   *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
> 02110-1301, USA.
>   */
>
> -#ifndef KIS_EXPERIMENTPAINTOP_SETTINGS_WIDGET_H_
> -#define KIS_EXPERIMENTPAINTOP_SETTINGS_WIDGET_H_
> -
> -#include <kis_paintop_settings_widget.h>
> +#include "kis_scaling_size_brush.h"
>
> +KisScalingSizeBrush::KisScalingSizeBrush()
> +    : KisBrush()
> +{
> +}
>
> -class KisExperimentPaintOpSettingsWidget : public
> KisPaintOpSettingsWidget
> +KisScalingSizeBrush::KisScalingSizeBrush(const QString &filename)
> +    : KisBrush(filename)
>  {
> -    Q_OBJECT
> -public:
> -    KisExperimentPaintOpSettingsWidget(QWidget* parent = 0);
> -    virtual ~KisExperimentPaintOpSettingsWidget();
> -    virtual void changePaintOpSize(qreal x, qreal y);
> +}
>
> -    KisPropertiesConfiguration* configuration() const;
> -};
> +qreal KisScalingSizeBrush::userEffectiveSize() const
> +{
> +    return this->width() * this->scale();
> +}
>
> -#endif
> +void KisScalingSizeBrush::setUserEffectiveSize(qreal value)
> +{
> +    this->setScale(value / this->width());
> +}
> diff --git a/plugins/paintops/experiment/kis_experiment_paintop_settings_widget.h
> b/libs/brush/kis_scaling_size_brush.h
> similarity index 59%
> copy from plugins/paintops/experiment/kis_experiment_paintop_
> settings_widget.h
> copy to libs/brush/kis_scaling_size_brush.h
> index ec136cc..e5718a4 100644
> --- a/plugins/paintops/experiment/kis_experiment_paintop_settings_widget.h
> +++ b/libs/brush/kis_scaling_size_brush.h
> @@ -1,5 +1,5 @@
>  /*
> - *  Copyright (c) 2009,2010 Lukáš Tvrdý <lukast.dev at gmail.com>
> + *  Copyright (c) 2016 Dmitry Kazakov <dimula73 at gmail.com>
>   *
>   *  This program is free software; you can redistribute it and/or modify
>   *  it under the terms of the GNU General Public License as published by
> @@ -16,21 +16,22 @@
>   *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
> 02110-1301, USA.
>   */
>
> -#ifndef KIS_EXPERIMENTPAINTOP_SETTINGS_WIDGET_H_
> -#define KIS_EXPERIMENTPAINTOP_SETTINGS_WIDGET_H_
> +#ifndef KISSCALINGSIZEBRUSH_H
> +#define KISSCALINGSIZEBRUSH_H
>
> -#include <kis_paintop_settings_widget.h>
> +#include "kritabrush_export.h"
> +#include "kis_brush.h"
>
>
> -class KisExperimentPaintOpSettingsWidget : public
> KisPaintOpSettingsWidget
> +class BRUSH_EXPORT KisScalingSizeBrush : public KisBrush
>  {
> -    Q_OBJECT
>  public:
> -    KisExperimentPaintOpSettingsWidget(QWidget* parent = 0);
> -    virtual ~KisExperimentPaintOpSettingsWidget();
> -    virtual void changePaintOpSize(qreal x, qreal y);
>
> -    KisPropertiesConfiguration* configuration() const;
> +    KisScalingSizeBrush();
> +    KisScalingSizeBrush(const QString& filename);
> +
> +    qreal userEffectiveSize() const;
> +    void setUserEffectiveSize(qreal value);
>  };
>
> -#endif
> +#endif // KISSCALINGSIZEBRUSH_H
> diff --git a/libs/brush/kis_svg_brush.cpp b/libs/brush/kis_svg_brush.cpp
> index efc5893..1d3175a 100644
> --- a/libs/brush/kis_svg_brush.cpp
> +++ b/libs/brush/kis_svg_brush.cpp
> @@ -25,7 +25,7 @@
>  #include <QSvgRenderer>
>
>  KisSvgBrush::KisSvgBrush(const QString& filename)
> -    : KisBrush(filename)
> +    : KisScalingSizeBrush(filename)
>  {
>      setBrushType(INVALID);
>      setSpacing(0.25);
> @@ -34,7 +34,7 @@ KisSvgBrush::KisSvgBrush(const QString& filename)
>  }
>
>  KisSvgBrush::KisSvgBrush(const KisSvgBrush& rhs)
> -    : KisBrush(rhs),
> +    : KisScalingSizeBrush(rhs),
>        m_svg(rhs.m_svg)
>  {
>  }
> diff --git a/libs/brush/kis_svg_brush.h b/libs/brush/kis_svg_brush.h
> index 3e6b038..4374e31 100644
> --- a/libs/brush/kis_svg_brush.h
> +++ b/libs/brush/kis_svg_brush.h
> @@ -19,9 +19,9 @@
>  #ifndef KIS_SVG_BRUSH_
>  #define KIS_SVG_BRUSH_
>
> -#include "kis_brush.h"
> +#include "kis_scaling_size_brush.h"
>
> -class BRUSH_EXPORT KisSvgBrush : public KisBrush
> +class BRUSH_EXPORT KisSvgBrush : public KisScalingSizeBrush
>  {
>  public:
>      /// Construct brush to load filename later as brush
> diff --git a/libs/brush/kis_text_brush.cpp b/libs/brush/kis_text_brush.cpp
> index e0630cd..d95ea9b 100644
> --- a/libs/brush/kis_text_brush.cpp
> +++ b/libs/brush/kis_text_brush.cpp
> @@ -164,7 +164,7 @@ KisTextBrush::KisTextBrush()
>  }
>
>  KisTextBrush::KisTextBrush(const KisTextBrush &rhs)
> -    : KisBrush(rhs),
> +    : KisScalingSizeBrush(rhs),
>        m_brushesPipe(new KisTextBrushesPipe(*rhs.m_brushesPipe))
>  {
>  }
> diff --git a/libs/brush/kis_text_brush.h b/libs/brush/kis_text_brush.h
> index d91f0d1..69617da 100644
> --- a/libs/brush/kis_text_brush.h
> +++ b/libs/brush/kis_text_brush.h
> @@ -22,13 +22,13 @@
>
>  #include <QFont>
>
> -#include "kis_brush.h"
> +#include "kis_scaling_size_brush.h"
>  #include "kritabrush_export.h"
>
>  class KisTextBrushesPipe;
>
>
> -class BRUSH_EXPORT KisTextBrush : public KisBrush
> +class BRUSH_EXPORT KisTextBrush : public KisScalingSizeBrush
>  {
>
>  public:
> diff --git a/libs/image/CMakeLists.txt b/libs/image/CMakeLists.txt
> index d4cd630..c07ae71 100644
> --- a/libs/image/CMakeLists.txt
> +++ b/libs/image/CMakeLists.txt
> @@ -66,6 +66,7 @@ set(kritaimage_LIB_SRCS
>     brushengine/kis_paintop_registry.cc
>     brushengine/kis_paintop_settings.cpp
>     brushengine/kis_paintop_settings_update_proxy.cpp
> +   brushengine/kis_no_size_paintop_settings.cpp
>     brushengine/kis_locked_properties.cc
>     brushengine/kis_locked_properties_proxy.cpp
>     brushengine/kis_locked_properties_server.cpp
> diff --git a/plugins/paintops/experiment/kis_experiment_paintop_settings_widget.h
> b/libs/image/brushengine/kis_no_size_paintop_settings.cpp
> similarity index 58%
> copy from plugins/paintops/experiment/kis_experiment_paintop_
> settings_widget.h
> copy to libs/image/brushengine/kis_no_size_paintop_settings.cpp
> index ec136cc..1efdf16 100644
> --- a/plugins/paintops/experiment/kis_experiment_paintop_settings_widget.h
> +++ b/libs/image/brushengine/kis_no_size_paintop_settings.cpp
> @@ -1,5 +1,5 @@
>  /*
> - *  Copyright (c) 2009,2010 Lukáš Tvrdý <lukast.dev at gmail.com>
> + *  Copyright (c) 2016 Dmitry Kazakov <dimula73 at gmail.com>
>   *
>   *  This program is free software; you can redistribute it and/or modify
>   *  it under the terms of the GNU General Public License as published by
> @@ -16,21 +16,19 @@
>   *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
> 02110-1301, USA.
>   */
>
> -#ifndef KIS_EXPERIMENTPAINTOP_SETTINGS_WIDGET_H_
> -#define KIS_EXPERIMENTPAINTOP_SETTINGS_WIDGET_H_
> -
> -#include <kis_paintop_settings_widget.h>
> +#include "kis_no_size_paintop_settings.h"
>
> +KisNoSizePaintOpSettings::KisNoSizePaintOpSettings()
> +{
> +}
>
> -class KisExperimentPaintOpSettingsWidget : public
> KisPaintOpSettingsWidget
> +void KisNoSizePaintOpSettings::setPaintOpSize(qreal value)
>  {
> -    Q_OBJECT
> -public:
> -    KisExperimentPaintOpSettingsWidget(QWidget* parent = 0);
> -    virtual ~KisExperimentPaintOpSettingsWidget();
> -    virtual void changePaintOpSize(qreal x, qreal y);
> +    Q_UNUSED(value);
> +}
>
> -    KisPropertiesConfiguration* configuration() const;
> -};
> +qreal KisNoSizePaintOpSettings::paintOpSize() const
> +{
> +    return 1.0;
> +}
>
> -#endif
> diff --git a/plugins/paintops/experiment/kis_experiment_paintop_settings_widget.h
> b/libs/image/brushengine/kis_no_size_paintop_settings.h
> similarity index 59%
> copy from plugins/paintops/experiment/kis_experiment_paintop_
> settings_widget.h
> copy to libs/image/brushengine/kis_no_size_paintop_settings.h
> index ec136cc..accd1f2 100644
> --- a/plugins/paintops/experiment/kis_experiment_paintop_settings_widget.h
> +++ b/libs/image/brushengine/kis_no_size_paintop_settings.h
> @@ -1,5 +1,5 @@
>  /*
> - *  Copyright (c) 2009,2010 Lukáš Tvrdý <lukast.dev at gmail.com>
> + *  Copyright (c) 2016 Dmitry Kazakov <dimula73 at gmail.com>
>   *
>   *  This program is free software; you can redistribute it and/or modify
>   *  it under the terms of the GNU General Public License as published by
> @@ -16,21 +16,20 @@
>   *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
> 02110-1301, USA.
>   */
>
> -#ifndef KIS_EXPERIMENTPAINTOP_SETTINGS_WIDGET_H_
> -#define KIS_EXPERIMENTPAINTOP_SETTINGS_WIDGET_H_
> +#ifndef KISNOSIZEPAINTOPSETTINGS_H
> +#define KISNOSIZEPAINTOPSETTINGS_H
>
> -#include <kis_paintop_settings_widget.h>
> +#include "kis_paintop_settings.h"
> +#include "kritaimage_export.h"
>
>
> -class KisExperimentPaintOpSettingsWidget : public
> KisPaintOpSettingsWidget
> +class KRITAIMAGE_EXPORT KisNoSizePaintOpSettings : public
> KisPaintOpSettings
>  {
> -    Q_OBJECT
>  public:
> -    KisExperimentPaintOpSettingsWidget(QWidget* parent = 0);
> -    virtual ~KisExperimentPaintOpSettingsWidget();
> -    virtual void changePaintOpSize(qreal x, qreal y);
> +    KisNoSizePaintOpSettings();
>
> -    KisPropertiesConfiguration* configuration() const;
> +    void setPaintOpSize(qreal value) Q_DECL_OVERRIDE;
> +    qreal paintOpSize() const Q_DECL_OVERRIDE;
>  };
>
> -#endif
> +#endif // KISNOSIZEPAINTOPSETTINGS_H
> diff --git a/libs/image/brushengine/kis_paintop_config_widget.cpp
> b/libs/image/brushengine/kis_paintop_config_widget.cpp
> index 2fbc631..66e8a78 100644
> --- a/libs/image/brushengine/kis_paintop_config_widget.cpp
> +++ b/libs/image/brushengine/kis_paintop_config_widget.cpp
> @@ -66,15 +66,6 @@ void KisPaintOpConfigWidget::setNode(KisNodeWSP node) {
>      m_node = node;
>  }
>
> -void KisPaintOpConfigWidget::changePaintOpSize(qreal x, qreal y) {
> -    Q_UNUSED(x);
> -    Q_UNUSED(y);
> -}
> -
> -QSizeF KisPaintOpConfigWidget::paintOpSize() const {
> -    return QSizeF(1.0, 1.0);
> -}
> -
>  bool KisPaintOpConfigWidget::presetIsValid() {
>      return true;
>  }
> diff --git a/libs/image/brushengine/kis_paintop_config_widget.h
> b/libs/image/brushengine/kis_paintop_config_widget.h
> index f1d3a3f..5933b26 100644
> --- a/libs/image/brushengine/kis_paintop_config_widget.h
> +++ b/libs/image/brushengine/kis_paintop_config_widget.h
> @@ -56,16 +56,6 @@ public:
>      virtual void setNode(KisNodeWSP node);
>
>      /**
> -     * @see KisPaintOpSettings::changePaintOpSize(qreal x, qreal y)
> -     */
> -    virtual void changePaintOpSize(qreal x, qreal y);
> -
> -    /**
> -     * @see KisPaintOpSettings::paintOpSize()
> -     */
> -    virtual QSizeF paintOpSize() const;
> -
> -    /**
>       * This is true for all of the paintop widget except for the Custom
> brush tab in the Brush tip dialog
>       */
>      virtual bool presetIsValid();
> diff --git a/libs/image/brushengine/kis_paintop_settings.cpp
> b/libs/image/brushengine/kis_paintop_settings.cpp
> index 993c762..29cd8df 100644
> --- a/libs/image/brushengine/kis_paintop_settings.cpp
> +++ b/libs/image/brushengine/kis_paintop_settings.cpp
> @@ -201,38 +201,6 @@ qreal KisPaintOpSettings::paintOpFlow() const
>      return proxy->getDouble("FlowValue", 1.0);
>  }
>
> -void KisPaintOpSettings::setPaintOpSize(qreal value)
> -{
> -    /**
> -     * The widget already has the wrapping for the locked setings
> -     * functionality, so just request it.
> -     */
> -
> -    if (d->settingsWidget) {
> -        const qreal sizeDiff = value - paintOpSize();
> -
> -        {
> -            KisSignalsBlocker b(d->settingsWidget);
> -            d->settingsWidget.data()->setConfigurationSafe(this);
> -            d->settingsWidget.data()->changePaintOpSize(sizeDiff, 0);
> -        }
> -        d->settingsWidget.data()->writeConfigurationSafe(this);
> -    }
> -}
> -
> -qreal KisPaintOpSettings::paintOpSize() const
> -{
> -    // see a comment about locked settings in setPaintOpSize()
> -
> -    qreal size = 1.0;
> -
> -    if (d->settingsWidget) {
> -        size = d->settingsWidget.data()->paintOpSize().width();
> -    }
> -
> -    return size;
> -}
> -
>  QString KisPaintOpSettings::paintOpCompositeOp() const
>  {
>      KisLockedPropertiesProxySP proxy(
> diff --git a/libs/image/brushengine/kis_paintop_settings.h
> b/libs/image/brushengine/kis_paintop_settings.h
> index 1af16fc..925b588 100644
> --- a/libs/image/brushengine/kis_paintop_settings.h
> +++ b/libs/image/brushengine/kis_paintop_settings.h
> @@ -193,12 +193,12 @@ public:
>      /**
>       * Set paintop size directly in the properties
>       */
> -    void setPaintOpSize(qreal value);
> +    virtual void setPaintOpSize(qreal value) = 0;
>
>      /**
>       * @return size saved in the properties
>       */
> -    qreal paintOpSize() const;
> +    virtual qreal paintOpSize() const = 0;
>
>      void setEraserMode(bool value);
>      bool eraserMode() const;
> diff --git a/libs/image/kis_base_mask_generator.cpp
> b/libs/image/kis_base_mask_generator.cpp
> index 14f8adb..f6d451a 100644
> --- a/libs/image/kis_base_mask_generator.cpp
> +++ b/libs/image/kis_base_mask_generator.cpp
> @@ -249,6 +249,13 @@ qreal KisMaskGenerator::diameter() const
>      return d->diameter;
>  }
>
> +void KisMaskGenerator::setDiameter(qreal value)
> +{
> +    d->diameter = value;
> +    init();
> +    setScale(d->scaleX, d->scaleY);
> +}
> +
>  qreal KisMaskGenerator::ratio() const
>  {
>      return d->ratio;
> diff --git a/libs/image/kis_base_mask_generator.h
> b/libs/image/kis_base_mask_generator.h
> index ef7cb34..8df0dfe 100644
> --- a/libs/image/kis_base_mask_generator.h
> +++ b/libs/image/kis_base_mask_generator.h
> @@ -92,7 +92,9 @@ public:
>
>      qreal height() const;
>
> -    qreal diameter() const;
> +    qreal diameter() const;
> +    void setDiameter(qreal value);
> +
>      qreal ratio() const;
>      qreal horizontalFade() const;
>      qreal verticalFade() const;
> diff --git a/plugins/paintops/experiment/kis_experiment_paintop_settings_widget.h
> b/libs/image/kisproofingconfiguration.cpp
> similarity index 57%
> copy from plugins/paintops/experiment/kis_experiment_paintop_
> settings_widget.h
> copy to libs/image/kisproofingconfiguration.cpp
> index ec136cc..ccbecdf 100644
> --- a/plugins/paintops/experiment/kis_experiment_paintop_settings_widget.h
> +++ b/libs/image/kisproofingconfiguration.cpp
> @@ -1,5 +1,5 @@
>  /*
> - *  Copyright (c) 2009,2010 Lukáš Tvrdý <lukast.dev at gmail.com>
> + *  Copyright (c) 2016 Dmitry Kazakov <dimula73 at gmail.com>
>   *
>   *  This program is free software; you can redistribute it and/or modify
>   *  it under the terms of the GNU General Public License as published by
> @@ -16,21 +16,4 @@
>   *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
> 02110-1301, USA.
>   */
>
> -#ifndef KIS_EXPERIMENTPAINTOP_SETTINGS_WIDGET_H_
> -#define KIS_EXPERIMENTPAINTOP_SETTINGS_WIDGET_H_
>
> -#include <kis_paintop_settings_widget.h>
> -
> -
> -class KisExperimentPaintOpSettingsWidget : public
> KisPaintOpSettingsWidget
> -{
> -    Q_OBJECT
> -public:
> -    KisExperimentPaintOpSettingsWidget(QWidget* parent = 0);
> -    virtual ~KisExperimentPaintOpSettingsWidget();
> -    virtual void changePaintOpSize(qreal x, qreal y);
> -
> -    KisPropertiesConfiguration* configuration() const;
> -};
> -
> -#endif
> diff --git a/libs/ui/kis_paintop_box.cc b/libs/ui/kis_paintop_box.cc
> index 7ac139a..ca1a2b9 100644
> --- a/libs/ui/kis_paintop_box.cc
> +++ b/libs/ui/kis_paintop_box.cc
> @@ -431,6 +431,7 @@ KisPaintopBox::KisPaintopBox(KisViewManager *view,
> QWidget *parent, const char *
>      m_presetsPopup = new KisPaintOpPresetsPopup(m_resourceProvider);
>      m_brushEditorPopupButton->setPopupWidget(m_presetsPopup);
>      m_presetsPopup->switchDetached(false);
> +    connect(m_presetsPopup, SIGNAL(brushEditorShown()),
> SLOT(slotUpdateOptionsWidget()));
>      connect(m_viewManager->mainWindow(), SIGNAL(themeChanged()),
> m_presetsPopup, SLOT(updateThemedIcons()));
>
>      m_presetsChooserPopup = new KisPaintOpPresetsChooserPopup();
> @@ -641,8 +642,9 @@ void KisPaintopBox::slotUpdateOptionsWidget()
>      KIS_SAFE_ASSERT_RECOVER_RETURN(preset);
>      KIS_SAFE_ASSERT_RECOVER_RETURN(m_optionWidget);
>
> -    KisSignalsBlocker b(m_optionWidget);
> -    m_optionWidget->setConfigurationSafe(preset->settings().data());
> +    if (m_optionWidget->isVisible()) {
> +        m_optionWidget->setConfigurationSafe(preset->settings().data());
> +    }
>
>      m_presetsPopup->resourceSelected(preset.data());
>      m_presetsPopup->updateViewSettings();
> diff --git a/libs/ui/tool/kis_tool_freehand.cc b/libs/ui/tool/kis_tool_
> freehand.cc
> index 44ae2a2..c1968c9 100644
> --- a/libs/ui/tool/kis_tool_freehand.cc
> +++ b/libs/ui/tool/kis_tool_freehand.cc
> @@ -361,12 +361,12 @@ void KisToolFreehand::continueAlternateAction(KoPointerEvent
> *event, AlternateAc
>      const qreal sizeDiff = scaleCoeff * offset.x() ;
>
>      if (qAbs(sizeDiff) > 0.01) {
> -        //KisPaintOpSettingsSP settings = currentPaintOpPreset()->
> settings();
> +        KisPaintOpSettingsSP settings = currentPaintOpPreset()->
> settings();
>          const qreal newSize = qBound(0.01, m_lastPaintOpSize + sizeDiff,
> maxBrushSize);
>
> -        //settings->setPaintOpSize(newSize);
> -        //requestUpdateOutline(m_initialGestureDocPoint, 0);
> -        m_brushResizeCompressor.start(newSize);
> +        settings->setPaintOpSize(newSize);
> +        requestUpdateOutline(m_initialGestureDocPoint, 0);
> +        //m_brushResizeCompressor.start(newSize);
>
>          m_lastDocumentPoint = event->point;
>          m_lastPaintOpSize = newSize;
> diff --git a/libs/ui/widgets/kis_paintop_presets_popup.cpp
> b/libs/ui/widgets/kis_paintop_presets_popup.cpp
> index d19ceca..9b829f5 100644
> --- a/libs/ui/widgets/kis_paintop_presets_popup.cpp
> +++ b/libs/ui/widgets/kis_paintop_presets_popup.cpp
> @@ -368,6 +368,7 @@ void KisPaintOpPresetsPopup::showEvent(QShowEvent *)
>      if (m_d->detached) {
>          window()->setGeometry(m_d->detachedGeometry);
>      }
> +    emit brushEditorShown();
>  }
>
>  void KisPaintOpPresetsPopup::resizeEvent(QResizeEvent* event)
> diff --git a/libs/ui/widgets/kis_paintop_presets_popup.h
> b/libs/ui/widgets/kis_paintop_presets_popup.h
> index d4b9ee3..bf291bc 100644
> --- a/libs/ui/widgets/kis_paintop_presets_popup.h
> +++ b/libs/ui/widgets/kis_paintop_presets_popup.h
> @@ -96,6 +96,7 @@ Q_SIGNALS:
>      void eraserBrushSizeToggled(bool value);
>
>      void sizeChanged();
> +    void brushEditorShown();
>
>  private Q_SLOTS:
>      void slotSwitchPresetStrip(bool visible);
> diff --git a/plugins/paintops/chalk/kis_chalk_paintop_settings.cpp
> b/plugins/paintops/chalk/kis_chalk_paintop_settings.cpp
> index 8f2f60d..e0f5616 100644
> --- a/plugins/paintops/chalk/kis_chalk_paintop_settings.cpp
> +++ b/plugins/paintops/chalk/kis_chalk_paintop_settings.cpp
> @@ -57,3 +57,18 @@ QPainterPath KisChalkPaintOpSettings::brushOutline(const
> KisPaintInformation &in
>      }
>      return path;
>  }
> +
> +void KisChalkPaintOpSettings::setPaintOpSize(qreal value)
> +{
> +    ChalkProperties properties;
> +    properties.readOptionSetting(this);
> +    properties.radius = qRound(0.5 * value);
> +    properties.writeOptionSetting(this);
> +}
> +
> +qreal KisChalkPaintOpSettings::paintOpSize() const
> +{
> +    ChalkProperties properties;
> +    properties.readOptionSetting(this);
> +    return properties.radius * 2;
> +}
> diff --git a/plugins/paintops/chalk/kis_chalk_paintop_settings.h
> b/plugins/paintops/chalk/kis_chalk_paintop_settings.h
> index 6826057..9cbf4aa 100644
> --- a/plugins/paintops/chalk/kis_chalk_paintop_settings.h
> +++ b/plugins/paintops/chalk/kis_chalk_paintop_settings.h
> @@ -36,6 +36,9 @@ public:
>
>      QPainterPath brushOutline(const KisPaintInformation &info,
> OutlineMode mode) const;
>
> +    void setPaintOpSize(qreal value) Q_DECL_OVERRIDE;
> +    qreal paintOpSize() const Q_DECL_OVERRIDE;
> +
>      bool paintIncremental();
>      bool isAirbrushing() const;
>      int rate() const;
> diff --git a/plugins/paintops/chalk/kis_chalk_paintop_settings_widget.cpp
> b/plugins/paintops/chalk/kis_chalk_paintop_settings_widget.cpp
> index 5e6e16e..3b5eec2 100644
> --- a/plugins/paintops/chalk/kis_chalk_paintop_settings_widget.cpp
> +++ b/plugins/paintops/chalk/kis_chalk_paintop_settings_widget.cpp
> @@ -50,17 +50,3 @@ KisPropertiesConfiguration*
> KisChalkPaintOpSettingsWidget::configuration() cons
>      writeConfiguration(config);
>      return config;
>  }
> -
> -void KisChalkPaintOpSettingsWidget::changePaintOpSize(qreal x, qreal y)
> -{
> -    // if the movement is more left<->right then up<->down
> -    if (qAbs(x) > qAbs(y)) {
> -        m_chalkOption->setRadius(m_chalkOption->radius() + qRound(x));
> -    }
> -}
> -
> -QSizeF KisChalkPaintOpSettingsWidget::paintOpSize() const
> -{
> -    qreal width = m_chalkOption->radius() * 2.0 + 1.0;
> -    return QSizeF(width, width);
> -}
> diff --git a/plugins/paintops/chalk/kis_chalk_paintop_settings_widget.h
> b/plugins/paintops/chalk/kis_chalk_paintop_settings_widget.h
> index 5e7f618..0d4f9c5 100644
> --- a/plugins/paintops/chalk/kis_chalk_paintop_settings_widget.h
> +++ b/plugins/paintops/chalk/kis_chalk_paintop_settings_widget.h
> @@ -35,10 +35,6 @@ public:
>
>      KisPropertiesConfiguration* configuration() const;
>
> -    ///Reimplemented
> -    void changePaintOpSize(qreal x, qreal y);
> -    virtual QSizeF paintOpSize() const;
> -
>  public:
>      KisChalkOpOption* m_chalkOption;
>  };
> diff --git a/plugins/paintops/chalk/kis_chalkop_option.h
> b/plugins/paintops/chalk/kis_chalkop_option.h
> index d61a4d2..7479dd5 100644
> --- a/plugins/paintops/chalk/kis_chalkop_option.h
> +++ b/plugins/paintops/chalk/kis_chalkop_option.h
> @@ -64,6 +64,13 @@ public:
>          useOpacity = settings->getBool(CHALK_USE_OPACITY);
>          useSaturation = settings->getBool(CHALK_USE_SATURATION);
>      }
> +
> +    void writeOptionSetting(KisPropertiesConfiguration* settings) {
> +        settings->setProperty(CHALK_RADIUS, radius);
> +        settings->setProperty(CHALK_INK_DEPLETION, inkDepletion);
> +        settings->setProperty(CHALK_USE_OPACITY, useOpacity);
> +        settings->setProperty(CHALK_USE_SATURATION, useSaturation);
> +    }
>  };
>
>  #endif
> diff --git a/plugins/paintops/curvebrush/kis_curve_paintop_settings.cpp
> b/plugins/paintops/curvebrush/kis_curve_paintop_settings.cpp
> index ed5368e..dd9401f 100644
> --- a/plugins/paintops/curvebrush/kis_curve_paintop_settings.cpp
> +++ b/plugins/paintops/curvebrush/kis_curve_paintop_settings.cpp
> @@ -17,6 +17,7 @@
>   */
>  #include <kis_curve_paintop_settings.h>
>  #include <kis_paint_action_type_option.h>
> +#include "kis_curve_line_option.h"
>
>  struct KisCurvePaintOpSettings::Private
>  {
> @@ -32,6 +33,21 @@ KisCurvePaintOpSettings::~KisCurvePaintOpSettings()
>  {
>  }
>
> +void KisCurvePaintOpSettings::setPaintOpSize(qreal value)
> +{
> +    CurveOption option;
> +    option.readOptionSetting(this);
> +    option.curve_line_width = value;
> +    option.writeOptionSetting(this);
> +}
> +
> +qreal KisCurvePaintOpSettings::paintOpSize() const
> +{
> +    CurveOption option;
> +    option.readOptionSetting(this);
> +    return option.curve_line_width;
> +}
> +
>  bool KisCurvePaintOpSettings::paintIncremental()
>  {
>      return (enumPaintActionType)getInt("PaintOpAction", WASH) == BUILDUP;
> @@ -41,7 +57,6 @@ bool KisCurvePaintOpSettings::paintIncremental()
>  #include <brushengine/kis_slider_based_paintop_property.h>
>  #include "kis_paintop_preset.h"
>  #include "kis_paintop_settings_update_proxy.h"
> -#include "kis_curve_line_option.h"
>  #include "kis_standard_uniform_properties_factory.h"
>  typedef KisCallbackBasedPaintopProperty<KisUniformPaintOpProperty>
> KisUniformPaintOpPropertyCallback;
>
> diff --git a/plugins/paintops/curvebrush/kis_curve_paintop_settings.h
> b/plugins/paintops/curvebrush/kis_curve_paintop_settings.h
> index 485c9fe..49072e1 100644
> --- a/plugins/paintops/curvebrush/kis_curve_paintop_settings.h
> +++ b/plugins/paintops/curvebrush/kis_curve_paintop_settings.h
> @@ -29,6 +29,9 @@ public:
>      KisCurvePaintOpSettings();
>      virtual ~KisCurvePaintOpSettings();
>
> +    void setPaintOpSize(qreal value) Q_DECL_OVERRIDE;
> +    qreal paintOpSize() const Q_DECL_OVERRIDE;
> +
>      virtual bool paintIncremental();
>
>      QList<KisUniformPaintOpPropertySP> uniformProperties();
> diff --git a/plugins/paintops/deform/kis_deform_paintop_settings.cpp
> b/plugins/paintops/deform/kis_deform_paintop_settings.cpp
> index 508081a..43a68a1 100644
> --- a/plugins/paintops/deform/kis_deform_paintop_settings.cpp
> +++ b/plugins/paintops/deform/kis_deform_paintop_settings.cpp
> @@ -40,6 +40,21 @@ KisDeformPaintOpSettings::~KisDeformPaintOpSettings()
>  {
>  }
>
> +void KisDeformPaintOpSettings::setPaintOpSize(qreal value)
> +{
> +    BrushSizeOption option;
> +    option.readOptionSetting(this);
> +    option.brush_diameter = value;
> +    option.writeOptionSetting(this);
> +}
> +
> +qreal KisDeformPaintOpSettings::paintOpSize() const
> +{
> +    BrushSizeOption option;
> +    option.readOptionSetting(this);
> +    return option.brush_diameter;
> +}
> +
>  bool KisDeformPaintOpSettings::paintIncremental()
>  {
>      return true;
> diff --git a/plugins/paintops/deform/kis_deform_paintop_settings.h
> b/plugins/paintops/deform/kis_deform_paintop_settings.h
> index c4d8855..0ab27ce 100644
> --- a/plugins/paintops/deform/kis_deform_paintop_settings.h
> +++ b/plugins/paintops/deform/kis_deform_paintop_settings.h
> @@ -31,6 +31,9 @@ public:
>      KisDeformPaintOpSettings();
>      ~KisDeformPaintOpSettings();
>
> +    void setPaintOpSize(qreal value) Q_DECL_OVERRIDE;
> +    qreal paintOpSize() const Q_DECL_OVERRIDE;
> +
>      QPainterPath brushOutline(const KisPaintInformation &info,
> OutlineMode mode) const;
>
>      bool paintIncremental();
> diff --git a/plugins/paintops/deform/kis_deform_paintop_settings_widget.cpp
> b/plugins/paintops/deform/kis_deform_paintop_settings_widget.cpp
> index bb2f519..cd5fd82 100644
> --- a/plugins/paintops/deform/kis_deform_paintop_settings_widget.cpp
> +++ b/plugins/paintops/deform/kis_deform_paintop_settings_widget.cpp
> @@ -50,25 +50,6 @@ KisDeformPaintOpSettingsWidget::~
> KisDeformPaintOpSettingsWidget()
>  }
>
>
> -void KisDeformPaintOpSettingsWidget::changePaintOpSize(qreal x, qreal y)
> -{
> -    // if the movement is more left<->right then up<->down
> -    if (qAbs(x) > qAbs(y)) {
> -        m_brushSizeOption->setDiameter(m_brushSizeOption->diameter() +
> qRound(x));
> -    }
> -    else { // vice-versa
> -        // we can do something different, e.g. change deform mode or ...
> -    }
> -}
> -
> -
> -QSizeF KisDeformPaintOpSettingsWidget::paintOpSize() const
> -{
> -    qreal height = m_brushSizeOption->diameter() * m_brushSizeOption->
> brushAspect();
> -    return QSizeF(m_brushSizeOption->diameter(), height);
> -}
> -
> -
>  KisPropertiesConfiguration* KisDeformPaintOpSettingsWidget::configuration()
> const
>  {
>      KisDeformPaintOpSettings* config = new KisDeformPaintOpSettings();
> diff --git a/plugins/paintops/deform/kis_deform_paintop_settings_widget.h
> b/plugins/paintops/deform/kis_deform_paintop_settings_widget.h
> index 1811409..a87fb29 100644
> --- a/plugins/paintops/deform/kis_deform_paintop_settings_widget.h
> +++ b/plugins/paintops/deform/kis_deform_paintop_settings_widget.h
> @@ -32,8 +32,6 @@ public:
>      virtual ~KisDeformPaintOpSettingsWidget();
>
>      virtual KisPropertiesConfiguration* configuration() const;
> -    virtual void changePaintOpSize(qreal x, qreal y);
> -    virtual QSizeF paintOpSize() const;
>
>  private:
>      KisDeformOption * m_deformOption;
> diff --git a/plugins/paintops/dynadraw/kis_dyna_paintop_settings.cpp
> b/plugins/paintops/dynadraw/kis_dyna_paintop_settings.cpp
> index 8915c1e..cfe817b 100644
> --- a/plugins/paintops/dynadraw/kis_dyna_paintop_settings.cpp
> +++ b/plugins/paintops/dynadraw/kis_dyna_paintop_settings.cpp
> @@ -19,6 +19,7 @@
>  #include "kis_dyna_paintop_settings.h"
>  #include <kis_paint_action_type_option.h>
>  #include <kis_airbrush_option.h>
> +#include "kis_dynaop_option.h"
>
>  struct KisDynaPaintOpSettings::Private
>  {
> @@ -34,6 +35,22 @@ KisDynaPaintOpSettings::~KisDynaPaintOpSettings()
>  {
>  }
>
> +void KisDynaPaintOpSettings::setPaintOpSize(qreal value)
> +{
> +    DynaOption option;
> +    option.readOptionSetting(this);
> +    option.dyna_diameter = value;
> +    option.writeOptionSetting(this);
> +}
> +
> +qreal KisDynaPaintOpSettings::paintOpSize() const
> +{
> +    DynaOption option;
> +    option.readOptionSetting(this);
> +
> +    return option.dyna_diameter;
> +}
> +
>  bool KisDynaPaintOpSettings::paintIncremental()
>  {
>      return (enumPaintActionType)getInt("PaintOpAction", WASH) == BUILDUP;
> @@ -54,7 +71,6 @@ int KisDynaPaintOpSettings::rate() const
>  #include <brushengine/kis_combo_based_paintop_property.h>
>  #include "kis_paintop_preset.h"
>  #include "kis_paintop_settings_update_proxy.h"
> -#include "kis_dynaop_option.h"
>  #include "kis_standard_uniform_properties_factory.h"
>
>
> diff --git a/plugins/paintops/dynadraw/kis_dyna_paintop_settings.h
> b/plugins/paintops/dynadraw/kis_dyna_paintop_settings.h
> index 96f0ce0..e203a7c 100644
> --- a/plugins/paintops/dynadraw/kis_dyna_paintop_settings.h
> +++ b/plugins/paintops/dynadraw/kis_dyna_paintop_settings.h
> @@ -29,6 +29,9 @@ public:
>      KisDynaPaintOpSettings();
>      ~KisDynaPaintOpSettings();
>
> +    void setPaintOpSize(qreal value) Q_DECL_OVERRIDE;
> +    qreal paintOpSize() const Q_DECL_OVERRIDE;
> +
>      bool paintIncremental();
>      virtual bool isAirbrushing() const;
>      virtual int rate() const;
> diff --git a/plugins/paintops/experiment/kis_experiment_paintop_settings.h
> b/plugins/paintops/experiment/kis_experiment_paintop_settings.h
> index 9701ec4..5a088a3 100644
> --- a/plugins/paintops/experiment/kis_experiment_paintop_settings.h
> +++ b/plugins/paintops/experiment/kis_experiment_paintop_settings.h
> @@ -19,10 +19,10 @@
>  #ifndef KIS_EXPERIMENT_PAINTOP_SETTINGS_H_
>  #define KIS_EXPERIMENT_PAINTOP_SETTINGS_H_
>
> -#include <brushengine/kis_paintop_settings.h>
> +#include <brushengine/kis_no_size_paintop_settings.h>
>  #include <QScopedPointer>
>
> -class KisExperimentPaintOpSettings : public KisPaintOpSettings
> +class KisExperimentPaintOpSettings : public KisNoSizePaintOpSettings
>  {
>  public:
>      KisExperimentPaintOpSettings();
> diff --git a/plugins/paintops/experiment/kis_experiment_paintop_settings_widget.cpp
> b/plugins/paintops/experiment/kis_experiment_paintop_settings_widget.cpp
> index 225d4f5..8bd7b11 100644
> --- a/plugins/paintops/experiment/kis_experiment_paintop_
> settings_widget.cpp
> +++ b/plugins/paintops/experiment/kis_experiment_paintop_
> settings_widget.cpp
> @@ -49,8 +49,4 @@ KisPropertiesConfiguration*
> KisExperimentPaintOpSettingsWidget::configuration()
>      writeConfiguration(config);
>      return config;
>  }
> -void KisExperimentPaintOpSettingsWidget::changePaintOpSize(qreal /*x*/,
> qreal /*y*/)
> -{
> -    //m_experimentOption->setDiameter( m_experimentOption->startSize() +
> qRound(x) );
> -}
>
> diff --git a/plugins/paintops/experiment/kis_experiment_paintop_settings_widget.h
> b/plugins/paintops/experiment/kis_experiment_paintop_settings_widget.h
> index ec136cc..65422e7 100644
> --- a/plugins/paintops/experiment/kis_experiment_paintop_settings_widget.h
> +++ b/plugins/paintops/experiment/kis_experiment_paintop_settings_widget.h
> @@ -28,7 +28,6 @@ class KisExperimentPaintOpSettingsWidget : public
> KisPaintOpSettingsWidget
>  public:
>      KisExperimentPaintOpSettingsWidget(QWidget* parent = 0);
>      virtual ~KisExperimentPaintOpSettingsWidget();
> -    virtual void changePaintOpSize(qreal x, qreal y);
>
>      KisPropertiesConfiguration* configuration() const;
>  };
> diff --git a/plugins/paintops/gridbrush/kis_grid_paintop.cpp
> b/plugins/paintops/gridbrush/kis_grid_paintop.cpp
> index b2e09a8..ad8db9e 100644
> --- a/plugins/paintops/gridbrush/kis_grid_paintop.cpp
> +++ b/plugins/paintops/gridbrush/kis_grid_paintop.cpp
> @@ -53,7 +53,7 @@ KisGridPaintOp::KisGridPaintOp(const
> KisGridPaintOpSettings *settings, KisPainte
>      , m_image(image)
>      , m_node(node)
>  {
> -    m_properties.fillProperties(settings);
> +    m_properties.readOptionSetting(settings);
>      m_colorProperties.fillProperties(settings);
>
>      m_xSpacing = m_properties.gridWidth * m_properties.scale;
> @@ -240,7 +240,7 @@ KisSpacingInformation KisGridPaintOp::paintAt(const
> KisPaintInformation& info)
>      return KisSpacingInformation(m_spacing * additionalScale);
>  }
>
> -void KisGridProperties::fillProperties(const KisPropertiesConfiguration*
> setting)
> +void KisGridProperties::readOptionSetting(const
> KisPropertiesConfiguration* setting)
>  {
>      gridWidth = qMax(1, setting->getInt(GRID_WIDTH));
>      gridHeight = qMax(1, setting->getInt(GRID_HEIGHT));
> diff --git a/plugins/paintops/gridbrush/kis_grid_paintop.h
> b/plugins/paintops/gridbrush/kis_grid_paintop.h
> index 54794de..0e333c9 100644
> --- a/plugins/paintops/gridbrush/kis_grid_paintop.h
> +++ b/plugins/paintops/gridbrush/kis_grid_paintop.h
> @@ -45,7 +45,8 @@ public:
>
>      quint8 shape;
>  public:
> -    void fillProperties(const KisPropertiesConfiguration* setting);
> +    void readOptionSetting(const KisPropertiesConfiguration* setting);
> +    void writeOptionSetting(KisPropertiesConfiguration* setting);
>  };
>
>  class KisGridPaintOp : public KisPaintOp
> diff --git a/plugins/paintops/gridbrush/kis_grid_paintop_settings.cpp
> b/plugins/paintops/gridbrush/kis_grid_paintop_settings.cpp
> index 1cc71f0..a346d9c 100644
> --- a/plugins/paintops/gridbrush/kis_grid_paintop_settings.cpp
> +++ b/plugins/paintops/gridbrush/kis_grid_paintop_settings.cpp
> @@ -36,6 +36,23 @@ KisGridPaintOpSettings::KisGridPaintOpSettings()
>  {
>  }
>
> +void KisGridPaintOpSettings::setPaintOpSize(qreal value)
> +{
> +    GridOption option;
> +    option.readOptionSetting(this);
> +    option.grid_width = value;
> +    option.grid_height = value;
> +    option.writeOptionSetting(this);
> +}
> +
> +qreal KisGridPaintOpSettings::paintOpSize() const
> +{
> +    GridOption option;
> +    option.readOptionSetting(this);
> +
> +    return option.grid_width;
> +}
> +
>  bool KisGridPaintOpSettings::paintIncremental()
>  {
>      return (enumPaintActionType)getInt("PaintOpAction", WASH) == BUILDUP;
> @@ -64,7 +81,6 @@ QPainterPath KisGridPaintOpSettings::brushOutline(const
> KisPaintInformation &inf
>  #include <brushengine/kis_slider_based_paintop_property.h>
>  #include "kis_paintop_preset.h"
>  #include "kis_paintop_settings_update_proxy.h"
> -#include "kis_gridop_option.h"
>  typedef KisCallbackBasedPaintopProperty<KisUniformPaintOpProperty>
> KisUniformPaintOpPropertyCallback;
>
>
> diff --git a/plugins/paintops/gridbrush/kis_grid_paintop_settings.h
> b/plugins/paintops/gridbrush/kis_grid_paintop_settings.h
> index c7827c0..6b24765 100644
> --- a/plugins/paintops/gridbrush/kis_grid_paintop_settings.h
> +++ b/plugins/paintops/gridbrush/kis_grid_paintop_settings.h
> @@ -34,6 +34,9 @@ class KisGridPaintOpSettings : public
> KisOutlineGenerationPolicy<KisPaintOpSetti
>  public:
>      KisGridPaintOpSettings();
>
> +    void setPaintOpSize(qreal value) Q_DECL_OVERRIDE;
> +    qreal paintOpSize() const Q_DECL_OVERRIDE;
> +
>      QPainterPath brushOutline(const KisPaintInformation &info,
> OutlineMode mode) const;
>      bool paintIncremental();
>
> diff --git a/plugins/paintops/gridbrush/kis_grid_paintop_settings_widget.cpp
> b/plugins/paintops/gridbrush/kis_grid_paintop_settings_widget.cpp
> index bdac8f4..37aadfb 100644
> --- a/plugins/paintops/gridbrush/kis_grid_paintop_settings_widget.cpp
> +++ b/plugins/paintops/gridbrush/kis_grid_paintop_settings_widget.cpp
> @@ -54,18 +54,3 @@ KisPropertiesConfiguration*
> KisGridPaintOpSettingsWidget::configuration() const
>      writeConfiguration(config);
>      return config;
>  }
> -void KisGridPaintOpSettingsWidget::changePaintOpSize(qreal x, qreal y)
> -{
> -    if (qAbs(x) > qAbs(y)) {
> -        m_gridOption->setWidth(m_gridOption->gridWidth() + qRound(x));
> -        m_gridOption->setHeight(m_gridOption->gridHeight() + qRound(x));
> -    }
> -    else {
> -        //m_options->m_gridOption->setHeight( gridHeight() + qRound(y) );
> -    }
> -}
> -
> -QSizeF KisGridPaintOpSettingsWidget::paintOpSize() const
> -{
> -    return QSizeF(m_gridOption->gridWidth(), m_gridOption->gridHeight());
> -}
> diff --git a/plugins/paintops/gridbrush/kis_grid_paintop_settings_widget.h
> b/plugins/paintops/gridbrush/kis_grid_paintop_settings_widget.h
> index 51c2698..da5e272 100644
> --- a/plugins/paintops/gridbrush/kis_grid_paintop_settings_widget.h
> +++ b/plugins/paintops/gridbrush/kis_grid_paintop_settings_widget.h
> @@ -32,8 +32,6 @@ class KisGridPaintOpSettingsWidget : public
> KisPaintOpSettingsWidget
>  public:
>      KisGridPaintOpSettingsWidget(QWidget* parent = 0);
>      virtual ~KisGridPaintOpSettingsWidget();
> -    virtual void changePaintOpSize(qreal x, qreal y);
> -    virtual QSizeF paintOpSize() const;
>
>      KisPropertiesConfiguration* configuration() const;
>
> diff --git a/plugins/paintops/gridbrush/kis_gridop_option.h
> b/plugins/paintops/gridbrush/kis_gridop_option.h
> index 3f67817..ddcf69b 100644
> --- a/plugins/paintops/gridbrush/kis_gridop_option.h
> +++ b/plugins/paintops/gridbrush/kis_gridop_option.h
> @@ -75,8 +75,8 @@ struct GridOption
>
>
>      void readOptionSetting(const KisPropertiesConfiguration* setting) {
> -        grid_width = setting->getInt(GRID_WIDTH);
> -        grid_height = setting->getInt(GRID_HEIGHT);
> +        grid_width = qMax(1, setting->getInt(GRID_WIDTH));
> +        grid_height = qMax(1, setting->getInt(GRID_HEIGHT));
>          grid_division_level = setting->getInt(GRID_DIVISION_LEVEL);
>          grid_pressure_division = setting->getBool(GRID_
> PRESSURE_DIVISION);
>          grid_scale = setting->getDouble(GRID_SCALE);
> @@ -86,8 +86,8 @@ struct GridOption
>      }
>
>      void writeOptionSetting(KisPropertiesConfiguration* setting) const {
> -        setting->setProperty(GRID_WIDTH, grid_width);
> -        setting->setProperty(GRID_HEIGHT, grid_height);
> +        setting->setProperty(GRID_WIDTH, qMax(1, grid_width));
> +        setting->setProperty(GRID_HEIGHT, qMax(1, grid_height));
>          setting->setProperty(GRID_DIVISION_LEVEL, grid_division_level);
>          setting->setProperty(GRID_PRESSURE_DIVISION,
> grid_pressure_division);
>          setting->setProperty(GRID_SCALE, grid_scale);
> diff --git a/plugins/paintops/libpaintop/kis_brush_based_paintop_options_widget.cpp
> b/plugins/paintops/libpaintop/kis_brush_based_paintop_options_widget.cpp
> index 439002e..6e098cb 100644
> --- a/plugins/paintops/libpaintop/kis_brush_based_paintop_
> options_widget.cpp
> +++ b/plugins/paintops/libpaintop/kis_brush_based_paintop_
> options_widget.cpp
> @@ -42,17 +42,6 @@ KisBrushSP KisBrushBasedPaintopOptionWidget::brush()
>      return m_brushOption->brush();
>  }
>
> -void KisBrushBasedPaintopOptionWidget::changePaintOpSize(qreal x, qreal
> y)
> -{
> -    m_brushOption->setBrushSize(x, y);
> -}
> -
> -QSizeF KisBrushBasedPaintopOptionWidget::paintOpSize() const
> -{
> -    return m_brushOption->brushSize();
> -}
> -
> -
>  bool KisBrushBasedPaintopOptionWidget::presetIsValid()
>  {
>      return m_brushOption->presetIsValid();
> diff --git a/plugins/paintops/libpaintop/kis_brush_based_paintop_options_widget.h
> b/plugins/paintops/libpaintop/kis_brush_based_paintop_options_widget.h
> index 05843a4..b1aa32d 100644
> --- a/plugins/paintops/libpaintop/kis_brush_based_paintop_options_widget.h
> +++ b/plugins/paintops/libpaintop/kis_brush_based_paintop_options_widget.h
> @@ -36,8 +36,6 @@ public:
>
>      KisBrushSP brush();
>
> -    void changePaintOpSize(qreal x, qreal y);
> -    virtual QSizeF paintOpSize() const;
>      virtual bool presetIsValid();
>
>
> diff --git a/plugins/paintops/libpaintop/kis_brush_based_paintop_settings.cpp
> b/plugins/paintops/libpaintop/kis_brush_based_paintop_settings.cpp
> index 021345d..4dfcfd4 100644
> --- a/plugins/paintops/libpaintop/kis_brush_based_paintop_settings.cpp
> +++ b/plugins/paintops/libpaintop/kis_brush_based_paintop_settings.cpp
> @@ -25,6 +25,41 @@
>  #include "kis_brush_server.h"
>  #include <QLineF>
>  #include "kis_signals_blocker.h"
> +#include "kis_brush_option.h"
> +
> +struct BrushReader {
> +    BrushReader(const KisBrushBasedPaintOpSettings *parent)
> +        : m_parent(parent)
> +    {
> +        m_option.readOptionSetting(m_parent, false);
> +    }
> +
> +    KisBrushSP brush() {
> +        return m_option.brush();
> +    }
> +
> +    const KisBrushBasedPaintOpSettings *m_parent;
> +    KisBrushOption m_option;
> +};
> +
> +struct BrushWriter {
> +    BrushWriter(KisBrushBasedPaintOpSettings *parent)
> +        : m_parent(parent)
> +    {
> +        m_option.readOptionSetting(m_parent, false);
> +    }
> +
> +    ~BrushWriter() {
> +        m_option.writeOptionSetting(m_parent);
> +    }
> +
> +    KisBrushSP brush() {
> +        return m_option.brush();
> +    }
> +
> +    KisBrushBasedPaintOpSettings *m_parent;
> +    KisBrushOption m_option;
> +};
>
>
>  KisBrushBasedPaintOpSettings::KisBrushBasedPaintOpSettings()
> @@ -64,8 +99,10 @@ KisPaintOpSettingsSP KisBrushBasedPaintOpSettings::clone()
> const
>
>  KisBrushSP KisBrushBasedPaintOpSettings::brush() const
>  {
> -    KisBrushBasedPaintopOptionWidget *widget = dynamic_cast<
> KisBrushBasedPaintopOptionWidget*>(optionsWidget());
> -    return widget ? widget->brush() : m_savedBrush;
> +    BrushReader w(this);
> +    if (!w.brush()) return 0;
> +
> +    return w.brush();
>  }
>
>  QPainterPath KisBrushBasedPaintOpSettings::brushOutlineImpl(const
> KisPaintInformation &info,
> @@ -125,47 +162,6 @@ bool KisBrushBasedPaintOpSettings::isLoadable()
>      return (KisBrushServer::instance()->brushServer()->resources().count()
> > 0);
>  }
>
> -struct BrushReader {
> -    BrushReader(const KisBrushBasedPaintOpSettings *parent)
> -        : m_parent(parent)
> -    {
> -        if (m_parent->optionsWidget()) {
> -            KisSignalsBlocker b(m_parent->optionsWidget());
> -            m_parent->optionsWidget()->setConfigurationSafe(m_parent);
> -        } else {
> -            m_parent = 0;
> -        }
> -    }
> -
> -    KisBrushSP brush() {
> -        return m_parent ? m_parent->brush() : 0;
> -    }
> -
> -    const KisBrushBasedPaintOpSettings *m_parent;
> -};
> -
> -struct BrushWriter {
> -    BrushWriter(KisBrushBasedPaintOpSettings *parent)
> -        : m_parent(parent)
> -    {
> -        if (!m_parent->optionsWidget()) {
> -            m_parent = 0;
> -        }
> -    }
> -
> -    ~BrushWriter() {
> -        if (m_parent && m_parent->optionsWidget()) {
> -            m_parent->optionsWidget()->writeConfigurationSafe(m_parent);
> -        }
> -    }
> -
> -    KisBrushSP brush() {
> -        return m_parent ? m_parent->brush() : 0;
> -    }
> -
> -    KisBrushBasedPaintOpSettings *m_parent;
> -};
> -
>  void KisBrushBasedPaintOpSettings::setAngle(qreal value)
>  {
>      BrushWriter w(this);
> @@ -216,6 +212,23 @@ qreal KisBrushBasedPaintOpSettings::autoSpacingCoeff()
> const
>      return w.brush()->autoSpacingCoeff();
>  }
>
> +void KisBrushBasedPaintOpSettings::setPaintOpSize(qreal value)
> +{
> +    BrushWriter w(this);
> +    if (!w.brush()) return;
> +
> +    w.brush()->setUserEffectiveSize(value);
> +}
> +
> +qreal KisBrushBasedPaintOpSettings::paintOpSize() const
> +{
> +    BrushReader w(this);
> +    if (!w.brush()) return 0.0;
> +
> +    return w.brush()->userEffectiveSize();
> +}
> +
> +
>
>  #include <brushengine/kis_slider_based_paintop_property.h>
>  #include "kis_paintop_preset.h"
> diff --git a/plugins/paintops/libpaintop/kis_brush_based_paintop_settings.h
> b/plugins/paintops/libpaintop/kis_brush_based_paintop_settings.h
> index 5a6d1b6..d065b61 100644
> --- a/plugins/paintops/libpaintop/kis_brush_based_paintop_settings.h
> +++ b/plugins/paintops/libpaintop/kis_brush_based_paintop_settings.h
> @@ -63,6 +63,8 @@ public:
>      bool autoSpacingActive() const;
>      qreal autoSpacingCoeff() const;
>
> +    void setPaintOpSize(qreal value);
> +    qreal paintOpSize() const;
>
>      QList<KisUniformPaintOpPropertySP> uniformProperties();
>
> diff --git a/plugins/paintops/libpaintop/kis_brush_option_widget.cpp
> b/plugins/paintops/libpaintop/kis_brush_option_widget.cpp
> index 7ac9c0d..bce0a15 100644
> --- a/plugins/paintops/libpaintop/kis_brush_option_widget.cpp
> +++ b/plugins/paintops/libpaintop/kis_brush_option_widget.cpp
> @@ -93,17 +93,6 @@ void KisBrushOptionWidget::lodLimitations(KisPaintopLodLimitations
> *l) const
>      brush->lodLimitations(l);
>  }
>
> -void KisBrushOptionWidget::setBrushSize(qreal dxPixels, qreal dyPixels)
> -{
> -    m_brushSelectionWidget->setBrushSize(dxPixels, dyPixels);
> -}
> -
> -
> -QSizeF KisBrushOptionWidget::brushSize() const
> -{
> -    return m_brushSelectionWidget->brushSize();
> -}
> -
>  void KisBrushOptionWidget::brushChanged()
>  {
>      m_brushOption.setBrush(brush());
> diff --git a/plugins/paintops/libpaintop/kis_brush_option_widget.h
> b/plugins/paintops/libpaintop/kis_brush_option_widget.h
> index 0c230fc..041b5b6 100644
> --- a/plugins/paintops/libpaintop/kis_brush_option_widget.h
> +++ b/plugins/paintops/libpaintop/kis_brush_option_widget.h
> @@ -57,9 +57,6 @@ public:
>
>      void lodLimitations(KisPaintopLodLimitations *l) const;
>
> -    void setBrushSize(qreal dxPixels, qreal dyPixels);
> -    QSizeF brushSize() const;
> -
>      bool presetIsValid();
>
>  private Q_SLOTS:
> diff --git a/plugins/paintops/libpaintop/kis_brush_selection_widget.cpp
> b/plugins/paintops/libpaintop/kis_brush_selection_widget.cpp
> index 9456146..642ad7a 100644
> --- a/plugins/paintops/libpaintop/kis_brush_selection_widget.cpp
> +++ b/plugins/paintops/libpaintop/kis_brush_selection_widget.cpp
> @@ -175,51 +175,6 @@ void KisBrushSelectionWidget::setCurrentBrush(KisBrushSP
> brush)
>
>  }
>
> -void KisBrushSelectionWidget::setBrushSize(qreal dxPixels, qreal
> dyPixels)
> -{
> -    if (m_buttonGroup->checkedId() == AUTOBRUSH) {
> -        m_autoBrushWidget->setBrushSize(dxPixels, dyPixels);
> -    }
> -    else if (m_buttonGroup->checkedId() == PREDEFINEDBRUSH) {
> -        m_brushChooser->setBrushSize(dxPixels, dyPixels);
> -    }
> -    else if (m_buttonGroup->checkedId() == CUSTOMBRUSH ||
> -               m_buttonGroup->checkedId() == CLIPBOARDBRUSH) {
> -
> -        // switch to the predefined brush and resize it
> -        KisBrushSP brush = this->brush();
> -        if (brush) {
> -            setCurrentWidget(m_brushChooser);
> -            m_brushChooser->setBrush(brush);
> -            m_brushChooser->setBrushSize(dxPixels, dyPixels);
> -        }
> -    }
> -    if(m_precisionOption.autoPrecisionEnabled())
> -    {
> -        m_precisionOption.setAutoPrecision(this->brushSize().width());
> -        uiWdgBrushChooser.lblPrecisionValue->setText("
> Precision:"+QString::number(m_precisionOption.precisionLevel()));
> -        emit sigPrecisionChanged();
> -    }
> -}
> -
> -
> -QSizeF KisBrushSelectionWidget::brushSize() const
> -{
> -    if (m_buttonGroup->checkedId() == AUTOBRUSH) {
> -        return m_autoBrushWidget->brushSize();
> -    }
> -    else if (KisBrushSP brush = this->brush()) {
> -        qreal width = brush->width() * brush->scale();
> -        qreal height = brush->height() * brush->scale();
> -        return QSizeF(width, height);
> -    }
> -
> -    // return neutral value
> -    return QSizeF(1.0, 1.0);
> -}
> -
> -
> -
>  void KisBrushSelectionWidget::buttonClicked(int id)
>  {
>      setCurrentWidget(m_chooserMap[id]);
> @@ -336,7 +291,7 @@ void KisBrushSelectionWidget::setAutoPrecisionEnabled(int
> value)
>      m_precisionOption.setAutoPrecisionEnabled(value);
>      if(m_precisionOption.autoPrecisionEnabled())
>      {
> -        m_precisionOption.setAutoPrecision(this->brushSize().height());
> +        m_precisionOption.setAutoPrecision(brush()->width());
>          setPrecisionEnabled(false);
>          precisionChanged(m_precisionOption.precisionLevel());
>          uiWdgBrushChooser.label->setVisible(true);
> diff --git a/plugins/paintops/libpaintop/kis_brush_selection_widget.h
> b/plugins/paintops/libpaintop/kis_brush_selection_widget.h
> index 8f187bd..38bb26d 100644
> --- a/plugins/paintops/libpaintop/kis_brush_selection_widget.h
> +++ b/plugins/paintops/libpaintop/kis_brush_selection_widget.h
> @@ -57,8 +57,6 @@ public:
>
>      void setCurrentBrush(KisBrushSP brush);
>
> -    void setBrushSize(qreal dxPixels, qreal dyPixels);
> -    QSizeF brushSize() const;
>      bool presetIsValid() {
>          return m_presetIsValid;
>      }
> diff --git a/plugins/paintops/particle/kis_particle_paintop_settings.h
> b/plugins/paintops/particle/kis_particle_paintop_settings.h
> index 7062770..0f01a6e 100644
> --- a/plugins/paintops/particle/kis_particle_paintop_settings.h
> +++ b/plugins/paintops/particle/kis_particle_paintop_settings.h
> @@ -20,10 +20,10 @@
>  #define KIS_PARTICLE_PAINTOP_SETTINGS_H_
>
>  #include <QScopedPointer>
> -#include <brushengine/kis_paintop_settings.h>
> +#include <brushengine/kis_no_size_paintop_settings.h>
>  #include <kis_types.h>
>
> -class KisParticlePaintOpSettings : public KisPaintOpSettings
> +class KisParticlePaintOpSettings : public KisNoSizePaintOpSettings
>  {
>
>  public:
> diff --git a/plugins/paintops/spray/kis_spray_paintop_settings.cpp
> b/plugins/paintops/spray/kis_spray_paintop_settings.cpp
> index 4706ba8..3b3f393 100644
> --- a/plugins/paintops/spray/kis_spray_paintop_settings.cpp
> +++ b/plugins/paintops/spray/kis_spray_paintop_settings.cpp
> @@ -43,6 +43,23 @@ KisSprayPaintOpSettings::~KisSprayPaintOpSettings()
>  {
>  }
>
> +void KisSprayPaintOpSettings::setPaintOpSize(qreal value)
> +{
> +    KisSprayProperties option;
> +    option.readOptionSetting(this);
> +    option.diameter = value;
> +    option.writeOptionSetting(this);
> +}
> +
> +qreal KisSprayPaintOpSettings::paintOpSize() const
> +{
> +
> +    KisSprayProperties option;
> +    option.readOptionSetting(this);
> +
> +    return option.diameter;
> +}
> +
>  bool KisSprayPaintOpSettings::paintIncremental()
>  {
>      return (enumPaintActionType)getInt("PaintOpAction", WASH) == BUILDUP;
> @@ -80,7 +97,6 @@ QPainterPath KisSprayPaintOpSettings::brushOutline(const
> KisPaintInformation &in
>  #include <brushengine/kis_slider_based_paintop_property.h>
>  #include "kis_paintop_preset.h"
>  #include "kis_paintop_settings_update_proxy.h"
> -#include "kis_sprayop_option.h"
>  #include "kis_standard_uniform_properties_factory.h"
>  typedef KisCallbackBasedPaintopProperty<KisUniformPaintOpProperty>
> KisUniformPaintOpPropertyCallback;
>
> diff --git a/plugins/paintops/spray/kis_spray_paintop_settings.h
> b/plugins/paintops/spray/kis_spray_paintop_settings.h
> index 9da8eca..da75cd9 100644
> --- a/plugins/paintops/spray/kis_spray_paintop_settings.h
> +++ b/plugins/paintops/spray/kis_spray_paintop_settings.h
> @@ -21,7 +21,7 @@
>
>  #include <QScopedPointer>
>
> -#include <brushengine/kis_paintop_settings.h>
> +#include <brushengine/kis_no_size_paintop_settings.h>
>  #include <kis_types.h>
>
>  #include <kis_outline_generation_policy.h>
> @@ -34,6 +34,9 @@ public:
>      KisSprayPaintOpSettings();
>      ~KisSprayPaintOpSettings();
>
> +    void setPaintOpSize(qreal value) Q_DECL_OVERRIDE;
> +    qreal paintOpSize() const Q_DECL_OVERRIDE;
> +
>
>      QPainterPath brushOutline(const KisPaintInformation &info,
> OutlineMode mode) const;
>
> diff --git a/plugins/paintops/spray/kis_spray_paintop_settings_widget.cpp
> b/plugins/paintops/spray/kis_spray_paintop_settings_widget.cpp
> index d12db67..e0acfce 100644
> --- a/plugins/paintops/spray/kis_spray_paintop_settings_widget.cpp
> +++ b/plugins/paintops/spray/kis_spray_paintop_settings_widget.cpp
> @@ -65,16 +65,3 @@ KisPropertiesConfiguration*
> KisSprayPaintOpSettingsWidget::configuration() cons
>      writeConfiguration(config);
>      return config;
>  }
> -
> -void KisSprayPaintOpSettingsWidget::changePaintOpSize(qreal x, qreal y)
> -{
> -    Q_UNUSED(y);
> -    m_sprayArea->setDiameter(m_sprayArea->diameter() + qRound(x));
> -}
> -
> -QSizeF KisSprayPaintOpSettingsWidget::paintOpSize() const
> -{
> -    qreal width = m_sprayArea->diameter();
> -    qreal height = width * m_sprayArea->brushAspect();
> -    return QSizeF(width, height);
> -}
> diff --git a/plugins/paintops/spray/kis_spray_paintop_settings_widget.h
> b/plugins/paintops/spray/kis_spray_paintop_settings_widget.h
> index 9f3fef7..601c7a1 100644
> --- a/plugins/paintops/spray/kis_spray_paintop_settings_widget.h
> +++ b/plugins/paintops/spray/kis_spray_paintop_settings_widget.h
> @@ -31,9 +31,6 @@ public:
>      KisSprayPaintOpSettingsWidget(QWidget* parent = 0);
>      virtual ~KisSprayPaintOpSettingsWidget();
>
> -
> -    virtual void changePaintOpSize(qreal x, qreal y);
> -    virtual QSizeF paintOpSize() const;
>      KisPropertiesConfiguration* configuration() const;
>
>  public:
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.kde.org/pipermail/kimageshop/attachments/20160913/ae6017dd/attachment-0001.html>


More information about the kimageshop mailing list