[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-kimageshop
Subject:    Re: [krita/kazakov/shift-gesture-slowdown] /: Fix Shift+gensture slowdown
From:       Dmitry Kazakov <dimula73 () gmail ! com>
Date:       2016-09-14 9:21:15
Message-ID: CAEkBSfW1zasW4KkyAts8oO5o1=gLJmbhuOr5aR5AMHSsHu7ZuQ () mail ! gmail ! com
[Download RAW message or body]

Oh, I forgot to uncomment that line! Thank you for finding that out! :)

On Wed, Sep 14, 2016 at 2:55 AM, Scott Petrovic <scottpetrovic@gmail.com>
wrote:

> 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@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@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_ch
>> alk_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_d
>> eform_paintop_settings_widget.cpp
>> M  +0    -2    plugins/paintops/deform/kis_de
>> form_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/ki
>> s_experiment_paintop_settings.h
>> M  +0    -4    plugins/paintops/experiment/ki
>> s_experiment_paintop_settings_widget.cpp
>> M  +0    -1    plugins/paintops/experiment/ki
>> s_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/ki
>> s_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/k
>> is_brush_based_paintop_options_widget.cpp
>> M  +0    -2    plugins/paintops/libpaintop/ki
>> s_brush_based_paintop_options_widget.h
>> M  +56   -43   plugins/paintops/libpaintop/k
>> is_brush_based_paintop_settings.cpp
>> M  +2    -0    plugins/paintops/libpaintop/ki
>> s_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_sp
>> ray_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.cp
>> p
>> 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_setting
>> s_widget.h
>> +++ b/libs/brush/kis_scaling_size_brush.cpp
>> @@ -1,5 +1,5 @@
>>  /*
>> - *  Copyright (c) 2009,2010 Lukáš Tvrdý <lukast.dev@gmail.com>
>> + *  Copyright (c) 2016 Dmitry Kazakov <dimula73@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_setting
>> s_widget.h
>> +++ b/libs/brush/kis_scaling_size_brush.h
>> @@ -1,5 +1,5 @@
>>  /*
>> - *  Copyright (c) 2009,2010 Lukáš Tvrdý <lukast.dev@gmail.com>
>> + *  Copyright (c) 2016 Dmitry Kazakov <dimula73@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.cp
>> p
>> 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_setting
>> s_widget.h
>> +++ b/libs/image/brushengine/kis_no_size_paintop_settings.cpp
>> @@ -1,5 +1,5 @@
>>  /*
>> - *  Copyright (c) 2009,2010 Lukáš Tvrdý <lukast.dev@gmail.com>
>> + *  Copyright (c) 2016 Dmitry Kazakov <dimula73@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_setting
>> s_widget.h
>> +++ b/libs/image/brushengine/kis_no_size_paintop_settings.h
>> @@ -1,5 +1,5 @@
>>  /*
>> - *  Copyright (c) 2009,2010 Lukáš Tvrdý <lukast.dev@gmail.com>
>> + *  Copyright (c) 2016 Dmitry Kazakov <dimula73@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_setting
>> s_widget.h
>> +++ b/libs/image/kisproofingconfiguration.cpp
>> @@ -1,5 +1,5 @@
>>  /*
>> - *  Copyright (c) 2009,2010 Lukáš Tvrdý <lukast.dev@gmail.com>
>> + *  Copyright (c) 2016 Dmitry Kazakov <dimula73@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()->settin
>> gs();
>> +        KisPaintOpSettingsSP settings = currentPaintOpPreset()->settin
>> gs();
>>          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_setting
>> s_widget.cpp
>> +++ b/plugins/paintops/experiment/kis_experiment_paintop_setting
>> s_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_setting
>> s_widget.h
>> +++ b/plugins/paintops/experiment/kis_experiment_paintop_setting
>> s_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_option
>> s_widget.cpp
>> +++ b/plugins/paintops/libpaintop/kis_brush_based_paintop_option
>> s_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_option
>> s_widget.h
>> +++ b/plugins/paintops/libpaintop/kis_brush_based_paintop_option
>> s_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::lodLimit
>> ations(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:
>>
>>
>


-- 
Dmitry Kazakov

[Attachment #3 (text/html)]

<div dir="ltr">Oh, I forgot to uncomment that line! Thank you for finding that out! \
:)<br></div><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Sep 14, \
2016 at 2:55 AM, Scott Petrovic <span dir="ltr">&lt;<a \
href="mailto:scottpetrovic@gmail.com" \
target="_blank">scottpetrovic@gmail.com</a>&gt;</span> wrote:<br><blockquote \
class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc \
solid;padding-left:1ex"><div dir="ltr">I tested the branch and the gesture is \
definitely way faster.  <div><br></div><div>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&#39;t show anything any more. It is hard to tell what the brush tip auto shape \
will look like now.</div><div><br></div><div>Other than that it looks \
great!</div><div><br></div></div><div class="HOEnZb"><div class="h5"><div \
class="gmail_extra"><br><div class="gmail_quote">On Mon, Sep 12, 2016 at 12:17 PM, \
Dmitry Kazakov <span dir="ltr">&lt;<a href="mailto:dimula73@gmail.com" \
target="_blank">dimula73@gmail.com</a>&gt;</span> wrote:<br><blockquote \
class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc \
solid;padding-left:1ex">Git commit b38e2c64c4831d4fc1e01ecdd8b7c9<wbr>b08ce3376c by \
Dmitry Kazakov.<br> Committed on 12/09/2016 at 17:16.<br>
Pushed by dkazakov into branch &#39;kazakov/shift-gesture-slowdow<wbr>n&#39;.<br>
<br>
Fix Shift+gensture slowdown<br>
<br>
Thsi is a really severe refactoring! I need your help with testing<br>
is the paintop editor popup still works fine!<br>
<br>
<a href="mailto:CC%3Akimageshop@kde.org" \
target="_blank">CC:kimageshop@kde.org</a><br> <br>
M   +1      -0      libs/brush/CMakeLists.txt<br>
M   +3      -3      libs/brush/kis_abr_brush.cpp<br>
M   +2      -2      libs/brush/kis_abr_brush.h<br>
M   +2      -2      libs/brush/kis_abr_brush_colle<wbr>ction.cpp<br>
M   +2      -2      libs/brush/kis_abr_brush_colle<wbr>ction.h<br>
M   +12     -0      libs/brush/kis_auto_brush.cpp<br>
M   +3      -0      libs/brush/kis_auto_brush.h<br>
M   +3      -0      libs/brush/kis_brush.h<br>
M   +5      -5      libs/brush/kis_gbr_brush.cpp<br>
M   +2      -2      libs/brush/kis_gbr_brush.h<br>
M   +1      -1      libs/brush/kis_png_brush.cpp<br>
M   +2      -2      libs/brush/kis_png_brush.h<br>
C   +17     -14     libs/brush/kis_scaling_size_b<wbr>rush.cpp [from: \
plugins/paintops/experiment/ki<wbr>s_experiment_paintop_settings_<wbr>widget.h - 058% \
similarity]<br> C   +12     -11     libs/brush/kis_scaling_size_b<wbr>rush.h [from: \
plugins/paintops/experiment/ki<wbr>s_experiment_paintop_settings_<wbr>widget.h - 059% \
similarity]<br> M   +2      -2      libs/brush/kis_svg_brush.cpp<br>
M   +2      -2      libs/brush/kis_svg_brush.h<br>
M   +1      -1      libs/brush/kis_text_brush.cpp<br>
M   +2      -2      libs/brush/kis_text_brush.h<br>
M   +1      -0      libs/image/CMakeLists.txt<br>
C   +12     -14     libs/image/brushengine/kis_<wbr>no_size_paintop_settings.cpp \
[from: plugins/paintops/experiment/ki<wbr>s_experiment_paintop_settings_<wbr>widget.h \
- 058% similarity]<br> C   +10     -11     \
libs/image/brushengine/kis_<wbr>no_size_paintop_settings.h [from: \
plugins/paintops/experiment/ki<wbr>s_experiment_paintop_settings_<wbr>widget.h - 059% \
similarity]<br> M   +0      -9      \
libs/image/brushengine/kis_pai<wbr>ntop_config_widget.cpp<br> M   +0      -10     \
libs/image/brushengine/kis_pa<wbr>intop_config_widget.h<br> M   +0      -32     \
libs/image/brushengine/kis_pa<wbr>intop_settings.cpp<br> M   +2      -2      \
libs/image/brushengine/kis_pai<wbr>ntop_settings.h<br> M   +7      -0      \
libs/image/kis_base_mask_gener<wbr>ator.cpp<br> M   +3      -1      \
libs/image/kis_base_mask_gener<wbr>ator.h<br> C   +1      -18     \
libs/image/kisproofingconfigu<wbr>ration.cpp [from: \
plugins/paintops/experiment/ki<wbr>s_experiment_paintop_settings_<wbr>widget.h - 057% \
similarity]<br> M   +4      -2      libs/ui/kis_paintop_box.cc<br>
M   +4      -4      libs/ui/tool/kis_tool_freehand<wbr>.cc<br>
M   +1      -0      libs/ui/widgets/kis_paintop_pr<wbr>esets_popup.cpp<br>
M   +1      -0      libs/ui/widgets/kis_paintop_pr<wbr>esets_popup.h<br>
M   +15     -0      plugins/paintops/chalk/kis_cha<wbr>lk_paintop_settings.cpp<br>
M   +3      -0      plugins/paintops/chalk/kis_cha<wbr>lk_paintop_settings.h<br>
M   +0      -14     plugins/paintops/chalk/kis_ch<wbr>alk_paintop_settings_widget.cp<wbr>p<br>
 M   +0      -4      \
plugins/paintops/chalk/kis_cha<wbr>lk_paintop_settings_widget.h<br> M   +7      -0    \
plugins/paintops/chalk/kis_cha<wbr>lkop_option.h<br> M   +16     -1      \
plugins/paintops/curvebrush/ki<wbr>s_curve_paintop_settings.cpp<br> M   +3      -0    \
plugins/paintops/curvebrush/ki<wbr>s_curve_paintop_settings.h<br> M   +15     -0      \
plugins/paintops/deform/kis_de<wbr>form_paintop_settings.cpp<br> M   +3      -0      \
plugins/paintops/deform/kis_de<wbr>form_paintop_settings.h<br> M   +0      -19     \
plugins/paintops/deform/kis_d<wbr>eform_paintop_settings_widget.<wbr>cpp<br> M   +0   \
-2      plugins/paintops/deform/kis_de<wbr>form_paintop_settings_widget.h<br> M   +17 \
-1      plugins/paintops/dynadraw/kis_<wbr>dyna_paintop_settings.cpp<br> M   +3      \
-0      plugins/paintops/dynadraw/kis_<wbr>dyna_paintop_settings.h<br> M   +2      -2 \
plugins/paintops/experiment/ki<wbr>s_experiment_paintop_settings.<wbr>h<br> M   +0    \
-4      plugins/paintops/experiment/ki<wbr>s_experiment_paintop_settings_<wbr>widget.cpp<br>
 M   +0      -1      \
plugins/paintops/experiment/ki<wbr>s_experiment_paintop_settings_<wbr>widget.h<br> M  \
+2      -2      plugins/paintops/gridbrush/kis<wbr>_grid_paintop.cpp<br> M   +2      \
-1      plugins/paintops/gridbrush/kis<wbr>_grid_paintop.h<br> M   +17     -1      \
plugins/paintops/gridbrush/kis<wbr>_grid_paintop_settings.cpp<br> M   +3      -0      \
plugins/paintops/gridbrush/kis<wbr>_grid_paintop_settings.h<br> M   +0      -15     \
plugins/paintops/gridbrush/ki<wbr>s_grid_paintop_settings_widget<wbr>.cpp<br> M   +0  \
-2      plugins/paintops/gridbrush/kis<wbr>_grid_paintop_settings_widget.<wbr>h<br> M \
+4      -4      plugins/paintops/gridbrush/kis<wbr>_gridop_option.h<br> M   +0      \
-11     plugins/paintops/libpaintop/k<wbr>is_brush_based_paintop_options<wbr>_widget.cpp<br>
 M   +0      -2      \
plugins/paintops/libpaintop/ki<wbr>s_brush_based_paintop_options_<wbr>widget.h<br> M  \
+56     -43     plugins/paintops/libpaintop/k<wbr>is_brush_based_paintop_setting<wbr>s.cpp<br>
 M   +2      -0      \
plugins/paintops/libpaintop/ki<wbr>s_brush_based_paintop_settings<wbr>.h<br> M   +0   \
-11     plugins/paintops/libpaintop/k<wbr>is_brush_option_widget.cpp<br> M   +0      \
-3      plugins/paintops/libpaintop/ki<wbr>s_brush_option_widget.h<br> M   +1      \
-46     plugins/paintops/libpaintop/k<wbr>is_brush_selection_widget.cpp<br> M   +0    \
-2      plugins/paintops/libpaintop/ki<wbr>s_brush_selection_widget.h<br> M   +2      \
-2      plugins/paintops/particle/kis_<wbr>particle_paintop_settings.h<br> M   +17    \
-1      plugins/paintops/spray/kis_spr<wbr>ay_paintop_settings.cpp<br> M   +4      -1 \
plugins/paintops/spray/kis_spr<wbr>ay_paintop_settings.h<br> M   +0      -13     \
plugins/paintops/spray/kis_sp<wbr>ray_paintop_settings_widget.cp<wbr>p<br> M   +0     \
-3      plugins/paintops/spray/kis_spr<wbr>ay_paintop_settings_widget.h<br> <br>
<a href="http://commits.kde.org/krita/b38e2c64c4831d4fc1e01ecdd8b7c9b08ce3376c" \
rel="noreferrer" target="_blank">http://commits.kde.org/krita/b<wbr>38e2c64c4831d4fc1e01ecdd8b7c9b<wbr>08ce3376c</a><br>
 <br>
diff --git a/libs/brush/CMakeLists.txt b/libs/brush/CMakeLists.txt<br>
index 415553c..704906c 100644<br>
--- a/libs/brush/CMakeLists.txt<br>
+++ b/libs/brush/CMakeLists.txt<br>
@@ -9,6 +9,7 @@ set(kritalibbrush_LIB_SRCS<br>
        kis_auto_brush.cpp<br>
        kis_boundary.cc<br>
        kis_brush.cpp<br>
+      kis_scaling_size_brush.cpp<br>
        kis_brush_registry.cpp<br>
        kis_brush_server.cpp<br>
        kis_gbr_brush.cpp<br>
diff --git a/libs/brush/kis_abr_brush.cpp b/libs/brush/kis_abr_brush.cpp<br>
index fbdca10..aeb5c83 100644<br>
--- a/libs/brush/kis_abr_brush.cpp<br>
+++ b/libs/brush/kis_abr_brush.cpp<br>
@@ -40,7 +40,7 @@<br>
  #define DEFAULT_SPACING 0.25<br>
<br>
  KisAbrBrush::KisAbrBrush(<wbr>const QString&amp; filename, KisAbrBrushCollection \
                *parent)<br>
-      : KisBrush(filename)<br>
+      : KisScalingSizeBrush(filename)<br>
        , m_parent(parent)<br>
  {<br>
        setBrushType(INVALID);<br>
@@ -49,14 +49,14 @@ KisAbrBrush::KisAbrBrush(const QString&amp; filename, \
KisAbrBrushCollection *parent)<br>  }<br>
<br>
  KisAbrBrush::KisAbrBrush(<wbr>const KisAbrBrush&amp; rhs)<br>
-      : KisBrush(rhs),<br>
+      : KisScalingSizeBrush(rhs),<br>
           m_parent(0)<br>
  {<br>
        // Warning! The brush became detached from the parent!<br>
  }<br>
<br>
  KisAbrBrush::KisAbrBrush(<wbr>const KisAbrBrush&amp; rhs, KisAbrBrushCollection \
                *parent)<br>
-      : KisBrush(rhs),<br>
+      : KisScalingSizeBrush(rhs),<br>
           m_parent(parent)<br>
  {<br>
  }<br>
diff --git a/libs/brush/kis_abr_brush.h b/libs/brush/kis_abr_brush.h<br>
index 5b5af6e..0eb9ca9 100644<br>
--- a/libs/brush/kis_abr_brush.h<br>
+++ b/libs/brush/kis_abr_brush.h<br>
@@ -23,7 +23,7 @@<br>
  #include &lt;QImage&gt;<br>
  #include &lt;QVector&gt;<br>
<br>
-#include &lt;kis_brush.h&gt;<br>
+#include &lt;kis_scaling_size_brush.h&gt;<br>
  #include &lt;kis_types.h&gt;<br>
  #include &lt;kis_shared.h&gt;<br>
  #include &lt;brushengine/kis_paint_informa<wbr>tion.h&gt;<br>
@@ -38,7 +38,7 @@ class QString;<br>
  class QIODevice;<br>
<br>
<br>
-class BRUSH_EXPORT KisAbrBrush : public KisBrush<br>
+class BRUSH_EXPORT KisAbrBrush : public KisScalingSizeBrush<br>
  {<br>
<br>
  public:<br>
diff --git a/libs/brush/kis_abr_brush_col<wbr>lection.cpp \
b/libs/brush/kis_abr_brush_col<wbr>lection.cpp<br> index 0ee1e90..8ae392b 100644<br>
--- a/libs/brush/kis_abr_brush_col<wbr>lection.cpp<br>
+++ b/libs/brush/kis_abr_brush_col<wbr>lection.cpp<br>
@@ -523,12 +523,12 @@ qint32 KisAbrBrushCollection::abr_bru<wbr>sh_load(QDataStream \
&amp; abr, AbrInfo *abr_hdr<br> <br>
<br>
  KisAbrBrushCollection::KisAbr<wbr>BrushCollection(const QString&amp; filename)<br>
-      : KisBrush(filename)<br>
+      : KisScalingSizeBrush(filename)<br>
  {<br>
  }<br>
<br>
  KisAbrBrushCollection::KisAbr<wbr>BrushCollection(const KisAbrBrushCollection&amp; \
                rhs)<br>
-      : KisBrush(rhs)<br>
+      : KisScalingSizeBrush(rhs)<br>
  {<br>
        for (auto it = rhs.m_abrBrushes.begin();<br>
               it != rhs.m_abrBrushes.end();<br>
diff --git a/libs/brush/kis_abr_brush_col<wbr>lection.h \
b/libs/brush/kis_abr_brush_col<wbr>lection.h<br> index aca684c..bb857a4 100644<br>
--- a/libs/brush/kis_abr_brush_col<wbr>lection.h<br>
+++ b/libs/brush/kis_abr_brush_col<wbr>lection.h<br>
@@ -26,7 +26,7 @@<br>
  #include &lt;QString&gt;<br>
  #include &lt;kis_debug.h&gt;<br>
<br>
-#include &lt;kis_brush.h&gt;<br>
+#include &lt;kis_scaling_size_brush.h&gt;<br>
  #include &lt;kis_types.h&gt;<br>
  #include &lt;kis_shared.h&gt;<br>
  #include &lt;brushengine/kis_paint_informa<wbr>tion.h&gt;<br>
@@ -40,7 +40,7 @@ struct AbrInfo;<br>
  /**<br>
   * load a collection of brushes from an abr file<br>
   */<br>
-class BRUSH_EXPORT KisAbrBrushCollection : public KisBrush<br>
+class BRUSH_EXPORT KisAbrBrushCollection : public KisScalingSizeBrush<br>
  {<br>
<br>
  protected:<br>
diff --git a/libs/brush/kis_auto_brush.cp<wbr>p \
b/libs/brush/kis_auto_brush.cp<wbr>p<br> index d91f232..2bb6916 100644<br>
--- a/libs/brush/kis_auto_brush.cp<wbr>p<br>
+++ b/libs/brush/kis_auto_brush.cp<wbr>p<br>
@@ -99,6 +99,16 @@ KisAutoBrush::~KisAutoBrush()<br>
  {<br>
  }<br>
<br>
+qreal KisAutoBrush::userEffectiveSiz<wbr>e() const<br>
+{<br>
+      return d-&gt;shape-&gt;diameter();<br>
+}<br>
+<br>
+void KisAutoBrush::setUserEffective<wbr>Size(qreal value)<br>
+{<br>
+      d-&gt;shape-&gt;setDiameter(value);<br>
+}<br>
+<br>
  KisAutoBrush::KisAutoBrush(co<wbr>nst KisAutoBrush&amp; rhs)<br>
        : KisBrush(rhs),<br>
           d(new Private(*rhs.d))<br>
@@ -324,6 +334,8 @@ void KisAutoBrush::toXML(QDomDocume<wbr>nt&amp; doc, \
QDomElement&amp; e) const<br> <br>
  QImage KisAutoBrush::createBrushPrevi<wbr>ew()<br>
  {<br>
+      return QImage();<br>
+<br>
        srand(0);<br>
        srand48(0);<br>
        int width = maskWidth(KisDabShape(), 0.0, 0.0, KisPaintInformation());<br>
diff --git a/libs/brush/kis_auto_brush.h b/libs/brush/kis_auto_brush.h<br>
index cda35e2..86cad04 100644<br>
--- a/libs/brush/kis_auto_brush.h<br>
+++ b/libs/brush/kis_auto_brush.h<br>
@@ -42,6 +42,9 @@ public:<br>
<br>
  public:<br>
<br>
+      qreal userEffectiveSize() const;<br>
+      void setUserEffectiveSize(qreal value);<br>
+<br>
        qint32 maskHeight(KisDabShape const&amp; shape, qreal subPixelX, qreal \
                subPixelY,<br>
              const KisPaintInformation&amp; info) const Q_DECL_OVERRIDE;<br>
<br>
diff --git a/libs/brush/kis_brush.h b/libs/brush/kis_brush.h<br>
index 4ded24a..be7adb2 100644<br>
--- a/libs/brush/kis_brush.h<br>
+++ b/libs/brush/kis_brush.h<br>
@@ -120,6 +120,9 @@ public:<br>
<br>
        virtual ~KisBrush();<br>
<br>
+      virtual qreal userEffectiveSize() const { return 0;};<br>
+      virtual void setUserEffectiveSize(qreal value) {};<br>
+<br>
        virtual bool load() {<br>
              return false;<br>
        }<br>
diff --git a/libs/brush/kis_gbr_brush.cpp b/libs/brush/kis_gbr_brush.cpp<br>
index 6969837..2a17626 100644<br>
--- a/libs/brush/kis_gbr_brush.cpp<br>
+++ b/libs/brush/kis_gbr_brush.cpp<br>
@@ -84,7 +84,7 @@ struct KisGbrBrush::Private {<br>
  #define DEFAULT_SPACING 0.25<br>
<br>
  KisGbrBrush::KisGbrBrush(<wbr>const QString&amp; filename)<br>
-      : KisBrush(filename)<br>
+      : KisScalingSizeBrush(filename)<br>
        , d(new Private)<br>
  {<br>
        d-&gt;ownData = true;<br>
@@ -96,7 +96,7 @@ KisGbrBrush::KisGbrBrush(const QString&amp; filename)<br>
  KisGbrBrush::KisGbrBrush(<wbr>const QString&amp; filename,<br>
                                       const QByteArray&amp; data,<br>
                                       qint32 &amp; dataPos)<br>
-      : KisBrush(filename)<br>
+      : KisScalingSizeBrush(filename)<br>
        , d(new Private)<br>
  {<br>
        d-&gt;ownData = false;<br>
@@ -111,7 +111,7 @@ KisGbrBrush::KisGbrBrush(const QString&amp; filename,<br>
  }<br>
<br>
  KisGbrBrush::KisGbrBrush(KisP<wbr>aintDeviceSP image, int x, int y, int w, int \
                h)<br>
-      : KisBrush()<br>
+      : KisScalingSizeBrush()<br>
        , d(new Private)<br>
  {<br>
        d-&gt;ownData = true;<br>
@@ -122,7 +122,7 @@ KisGbrBrush::KisGbrBrush(KisPa<wbr>intDeviceSP image, int x, int \
y, int w, int h)<br>  }<br>
<br>
  KisGbrBrush::KisGbrBrush(<wbr>const QImage&amp; image, const QString&amp; name)<br>
-      : KisBrush()<br>
+      : KisScalingSizeBrush()<br>
        , d(new Private)<br>
  {<br>
        d-&gt;ownData = false;<br>
@@ -135,7 +135,7 @@ KisGbrBrush::KisGbrBrush(const QImage&amp; image, const \
QString&amp; name)<br>  }<br>
<br>
  KisGbrBrush::KisGbrBrush(<wbr>const KisGbrBrush&amp; rhs)<br>
-      : KisBrush(rhs)<br>
+      : KisScalingSizeBrush(rhs)<br>
        , d(new Private(*rhs.d))<br>
  {<br>
        setName(<a href="http://rhs.name" rel="noreferrer" \
                target="_blank">rhs.name</a>());<br>
diff --git a/libs/brush/kis_gbr_brush.h b/libs/brush/kis_gbr_brush.h<br>
index cc27d00..faefbe3 100644<br>
--- a/libs/brush/kis_gbr_brush.h<br>
+++ b/libs/brush/kis_gbr_brush.h<br>
@@ -23,7 +23,7 @@<br>
  #include &lt;QImage&gt;<br>
  #include &lt;QVector&gt;<br>
<br>
-#include &quot;kis_brush.h&quot;<br>
+#include &quot;kis_scaling_size_brush.h&quot;<br>
  #include &lt;kis_types.h&gt;<br>
  #include &lt;kis_shared.h&gt;<br>
  #include &lt;brushengine/kis_paint_informa<wbr>tion.h&gt;<br>
@@ -36,7 +36,7 @@ typedef KisSharedPtr&lt;KisQImagemask&gt; KisQImagemaskSP;<br>
  class QString;<br>
  class QIODevice;<br>
<br>
-class BRUSH_EXPORT KisGbrBrush : public KisBrush<br>
+class BRUSH_EXPORT KisGbrBrush : public KisScalingSizeBrush<br>
  {<br>
<br>
  protected:<br>
diff --git a/libs/brush/kis_png_brush.cpp b/libs/brush/kis_png_brush.cpp<br>
index 12f9390..6709913 100644<br>
--- a/libs/brush/kis_png_brush.cpp<br>
+++ b/libs/brush/kis_png_brush.cpp<br>
@@ -27,7 +27,7 @@<br>
  #include &lt;kis_dom_utils.h&gt;<br>
<br>
  KisPngBrush::KisPngBrush(<wbr>const QString&amp; filename)<br>
-      : KisBrush(filename)<br>
+      : KisScalingSizeBrush(filename)<br>
  {<br>
        setBrushType(INVALID);<br>
        setSpacing(0.25);<br>
diff --git a/libs/brush/kis_png_brush.h b/libs/brush/kis_png_brush.h<br>
index c993847..4c524c5 100644<br>
--- a/libs/brush/kis_png_brush.h<br>
+++ b/libs/brush/kis_png_brush.h<br>
@@ -19,9 +19,9 @@<br>
  #ifndef KIS_PNG_BRUSH_<br>
  #define KIS_PNG_BRUSH_<br>
<br>
-#include &quot;kis_brush.h&quot;<br>
+#include &quot;kis_scaling_size_brush.h&quot;<br>
<br>
-class BRUSH_EXPORT   KisPngBrush : public KisBrush<br>
+class BRUSH_EXPORT   KisPngBrush : public KisScalingSizeBrush<br>
  {<br>
  public:<br>
        /// Construct brush to load filename later as brush<br>
diff --git a/plugins/paintops/experiment/<wbr>kis_experiment_paintop_setting<wbr>s_widget.h \
b/libs/brush/kis_scaling_size_<wbr>brush.cpp<br> similarity index 58%<br>
copy from plugins/paintops/experiment/ki<wbr>s_experiment_paintop_settings_<wbr>widget.h<br>
 copy to libs/brush/kis_scaling_size_br<wbr>ush.cpp<br>
index ec136cc..276b295 100644<br>
--- a/plugins/paintops/experiment/<wbr>kis_experiment_paintop_setting<wbr>s_widget.h<br>
                
+++ b/libs/brush/kis_scaling_size_<wbr>brush.cpp<br>
@@ -1,5 +1,5 @@<br>
  /*<br>
- *   Copyright (c) 2009,2010 Lukáš Tvrdý &lt;<a \
href="mailto:lukast.dev@gmail.com" target="_blank">lukast.dev@gmail.com</a>&gt;<br> + \
*   Copyright (c) 2016 Dmitry Kazakov &lt;<a href="mailto:dimula73@gmail.com" \
                target="_blank">dimula73@gmail.com</a>&gt;<br>
   *<br>
   *   This program is free software; you can redistribute it and/or modify<br>
   *   it under the terms of the GNU General Public License as published by<br>
@@ -16,21 +16,24 @@<br>
   *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA <a \
                href="tel:02110-1301" value="+4921101301" \
                target="_blank">02110-1301</a>, USA.<br>
   */<br>
<br>
-#ifndef KIS_EXPERIMENTPAINTOP_SETTINGS<wbr>_WIDGET_H_<br>
-#define KIS_EXPERIMENTPAINTOP_SETTINGS<wbr>_WIDGET_H_<br>
-<br>
-#include &lt;kis_paintop_settings_widget.h<wbr>&gt;<br>
+#include &quot;kis_scaling_size_brush.h&quot;<br>
<br>
+KisScalingSizeBrush::KisScali<wbr>ngSizeBrush()<br>
+      : KisBrush()<br>
+{<br>
+}<br>
<br>
-class KisExperimentPaintOpSettingsWi<wbr>dget : public KisPaintOpSettingsWidget<br>
+KisScalingSizeBrush::KisScali<wbr>ngSizeBrush(const QString &amp;filename)<br>
+      : KisBrush(filename)<br>
  {<br>
-      Q_OBJECT<br>
-public:<br>
-      KisExperimentPaintOpSettingsWi<wbr>dget(QWidget* parent = 0);<br>
-      virtual ~KisExperimentPaintOpSettingsW<wbr>idget();<br>
-      virtual void changePaintOpSize(qreal x, qreal y);<br>
+}<br>
<br>
-      KisPropertiesConfiguration* configuration() const;<br>
-};<br>
+qreal KisScalingSizeBrush::userEffec<wbr>tiveSize() const<br>
+{<br>
+      return this-&gt;width() * this-&gt;scale();<br>
+}<br>
<br>
-#endif<br>
+void KisScalingSizeBrush::setUserEf<wbr>fectiveSize(qreal value)<br>
+{<br>
+      this-&gt;setScale(value / this-&gt;width());<br>
+}<br>
diff --git a/plugins/paintops/experiment/<wbr>kis_experiment_paintop_setting<wbr>s_widget.h \
b/libs/brush/kis_scaling_size_<wbr>brush.h<br> similarity index 59%<br>
copy from plugins/paintops/experiment/ki<wbr>s_experiment_paintop_settings_<wbr>widget.h<br>
 copy to libs/brush/kis_scaling_size_br<wbr>ush.h<br>
index ec136cc..e5718a4 100644<br>
--- a/plugins/paintops/experiment/<wbr>kis_experiment_paintop_setting<wbr>s_widget.h<br>
                
+++ b/libs/brush/kis_scaling_size_<wbr>brush.h<br>
@@ -1,5 +1,5 @@<br>
  /*<br>
- *   Copyright (c) 2009,2010 Lukáš Tvrdý &lt;<a \
href="mailto:lukast.dev@gmail.com" target="_blank">lukast.dev@gmail.com</a>&gt;<br> + \
*   Copyright (c) 2016 Dmitry Kazakov &lt;<a href="mailto:dimula73@gmail.com" \
                target="_blank">dimula73@gmail.com</a>&gt;<br>
   *<br>
   *   This program is free software; you can redistribute it and/or modify<br>
   *   it under the terms of the GNU General Public License as published by<br>
@@ -16,21 +16,22 @@<br>
   *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA <a \
                href="tel:02110-1301" value="+4921101301" \
                target="_blank">02110-1301</a>, USA.<br>
   */<br>
<br>
-#ifndef KIS_EXPERIMENTPAINTOP_SETTINGS<wbr>_WIDGET_H_<br>
-#define KIS_EXPERIMENTPAINTOP_SETTINGS<wbr>_WIDGET_H_<br>
+#ifndef KISSCALINGSIZEBRUSH_H<br>
+#define KISSCALINGSIZEBRUSH_H<br>
<br>
-#include &lt;kis_paintop_settings_widget.h<wbr>&gt;<br>
+#include &quot;kritabrush_export.h&quot;<br>
+#include &quot;kis_brush.h&quot;<br>
<br>
<br>
-class KisExperimentPaintOpSettingsWi<wbr>dget : public KisPaintOpSettingsWidget<br>
+class BRUSH_EXPORT KisScalingSizeBrush : public KisBrush<br>
  {<br>
-      Q_OBJECT<br>
  public:<br>
-      KisExperimentPaintOpSettingsWi<wbr>dget(QWidget* parent = 0);<br>
-      virtual ~KisExperimentPaintOpSettingsW<wbr>idget();<br>
-      virtual void changePaintOpSize(qreal x, qreal y);<br>
<br>
-      KisPropertiesConfiguration* configuration() const;<br>
+      KisScalingSizeBrush();<br>
+      KisScalingSizeBrush(const QString&amp; filename);<br>
+<br>
+      qreal userEffectiveSize() const;<br>
+      void setUserEffectiveSize(qreal value);<br>
  };<br>
<br>
-#endif<br>
+#endif // KISSCALINGSIZEBRUSH_H<br>
diff --git a/libs/brush/kis_svg_brush.cpp b/libs/brush/kis_svg_brush.cpp<br>
index efc5893..1d3175a 100644<br>
--- a/libs/brush/kis_svg_brush.cpp<br>
+++ b/libs/brush/kis_svg_brush.cpp<br>
@@ -25,7 +25,7 @@<br>
  #include &lt;QSvgRenderer&gt;<br>
<br>
  KisSvgBrush::KisSvgBrush(<wbr>const QString&amp; filename)<br>
-      : KisBrush(filename)<br>
+      : KisScalingSizeBrush(filename)<br>
  {<br>
        setBrushType(INVALID);<br>
        setSpacing(0.25);<br>
@@ -34,7 +34,7 @@ KisSvgBrush::KisSvgBrush(const QString&amp; filename)<br>
  }<br>
<br>
  KisSvgBrush::KisSvgBrush(<wbr>const KisSvgBrush&amp; rhs)<br>
-      : KisBrush(rhs),<br>
+      : KisScalingSizeBrush(rhs),<br>
           m_svg(rhs.m_svg)<br>
  {<br>
  }<br>
diff --git a/libs/brush/kis_svg_brush.h b/libs/brush/kis_svg_brush.h<br>
index 3e6b038..4374e31 100644<br>
--- a/libs/brush/kis_svg_brush.h<br>
+++ b/libs/brush/kis_svg_brush.h<br>
@@ -19,9 +19,9 @@<br>
  #ifndef KIS_SVG_BRUSH_<br>
  #define KIS_SVG_BRUSH_<br>
<br>
-#include &quot;kis_brush.h&quot;<br>
+#include &quot;kis_scaling_size_brush.h&quot;<br>
<br>
-class BRUSH_EXPORT KisSvgBrush : public KisBrush<br>
+class BRUSH_EXPORT KisSvgBrush : public KisScalingSizeBrush<br>
  {<br>
  public:<br>
        /// Construct brush to load filename later as brush<br>
diff --git a/libs/brush/kis_text_brush.cp<wbr>p \
b/libs/brush/kis_text_brush.cp<wbr>p<br> index e0630cd..d95ea9b 100644<br>
--- a/libs/brush/kis_text_brush.cp<wbr>p<br>
+++ b/libs/brush/kis_text_brush.cp<wbr>p<br>
@@ -164,7 +164,7 @@ KisTextBrush::KisTextBrush()<br>
  }<br>
<br>
  KisTextBrush::KisTextBrush(co<wbr>nst KisTextBrush &amp;rhs)<br>
-      : KisBrush(rhs),<br>
+      : KisScalingSizeBrush(rhs),<br>
           m_brushesPipe(new KisTextBrushesPipe(*rhs.m_brus<wbr>hesPipe))<br>
  {<br>
  }<br>
diff --git a/libs/brush/kis_text_brush.h b/libs/brush/kis_text_brush.h<br>
index d91f0d1..69617da 100644<br>
--- a/libs/brush/kis_text_brush.h<br>
+++ b/libs/brush/kis_text_brush.h<br>
@@ -22,13 +22,13 @@<br>
<br>
  #include &lt;QFont&gt;<br>
<br>
-#include &quot;kis_brush.h&quot;<br>
+#include &quot;kis_scaling_size_brush.h&quot;<br>
  #include &quot;kritabrush_export.h&quot;<br>
<br>
  class KisTextBrushesPipe;<br>
<br>
<br>
-class BRUSH_EXPORT KisTextBrush : public KisBrush<br>
+class BRUSH_EXPORT KisTextBrush : public KisScalingSizeBrush<br>
  {<br>
<br>
  public:<br>
diff --git a/libs/image/CMakeLists.txt b/libs/image/CMakeLists.txt<br>
index d4cd630..c07ae71 100644<br>
--- a/libs/image/CMakeLists.txt<br>
+++ b/libs/image/CMakeLists.txt<br>
@@ -66,6 +66,7 @@ set(kritaimage_LIB_SRCS<br>
      brushengine/kis_paintop_regist<wbr>ry.cc<br>
      brushengine/kis_paintop_settin<wbr>gs.cpp<br>
      brushengine/kis_paintop_settin<wbr>gs_update_proxy.cpp<br>
+     brushengine/kis_no_size_paint<wbr>op_settings.cpp<br>
      brushengine/kis_locked_propert<wbr>ies.cc<br>
      brushengine/kis_locked_propert<wbr>ies_proxy.cpp<br>
      brushengine/kis_locked_propert<wbr>ies_server.cpp<br>
diff --git a/plugins/paintops/experiment/<wbr>kis_experiment_paintop_setting<wbr>s_widget.h \
b/libs/image/brushengine/kis_n<wbr>o_size_paintop_settings.cpp<br> similarity index \
58%<br> copy from plugins/paintops/experiment/ki<wbr>s_experiment_paintop_settings_<wbr>widget.h<br>
 copy to libs/image/brushengine/kis_no_<wbr>size_paintop_settings.cpp<br>
index ec136cc..1efdf16 100644<br>
--- a/plugins/paintops/experiment/<wbr>kis_experiment_paintop_setting<wbr>s_widget.h<br>
                
+++ b/libs/image/brushengine/kis_n<wbr>o_size_paintop_settings.cpp<br>
@@ -1,5 +1,5 @@<br>
  /*<br>
- *   Copyright (c) 2009,2010 Lukáš Tvrdý &lt;<a \
href="mailto:lukast.dev@gmail.com" target="_blank">lukast.dev@gmail.com</a>&gt;<br> + \
*   Copyright (c) 2016 Dmitry Kazakov &lt;<a href="mailto:dimula73@gmail.com" \
                target="_blank">dimula73@gmail.com</a>&gt;<br>
   *<br>
   *   This program is free software; you can redistribute it and/or modify<br>
   *   it under the terms of the GNU General Public License as published by<br>
@@ -16,21 +16,19 @@<br>
   *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA <a \
                href="tel:02110-1301" value="+4921101301" \
                target="_blank">02110-1301</a>, USA.<br>
   */<br>
<br>
-#ifndef KIS_EXPERIMENTPAINTOP_SETTINGS<wbr>_WIDGET_H_<br>
-#define KIS_EXPERIMENTPAINTOP_SETTINGS<wbr>_WIDGET_H_<br>
-<br>
-#include &lt;kis_paintop_settings_widget.h<wbr>&gt;<br>
+#include &quot;kis_no_size_paintop_settings.<wbr>h&quot;<br>
<br>
+KisNoSizePaintOpSettings::Kis<wbr>NoSizePaintOpSettings()<br>
+{<br>
+}<br>
<br>
-class KisExperimentPaintOpSettingsWi<wbr>dget : public KisPaintOpSettingsWidget<br>
+void KisNoSizePaintOpSettings::setP<wbr>aintOpSize(qreal value)<br>
  {<br>
-      Q_OBJECT<br>
-public:<br>
-      KisExperimentPaintOpSettingsWi<wbr>dget(QWidget* parent = 0);<br>
-      virtual ~KisExperimentPaintOpSettingsW<wbr>idget();<br>
-      virtual void changePaintOpSize(qreal x, qreal y);<br>
+      Q_UNUSED(value);<br>
+}<br>
<br>
-      KisPropertiesConfiguration* configuration() const;<br>
-};<br>
+qreal KisNoSizePaintOpSettings::pain<wbr>tOpSize() const<br>
+{<br>
+      return 1.0;<br>
+}<br>
<br>
-#endif<br>
diff --git a/plugins/paintops/experiment/<wbr>kis_experiment_paintop_setting<wbr>s_widget.h \
b/libs/image/brushengine/kis_n<wbr>o_size_paintop_settings.h<br> similarity index \
59%<br> copy from plugins/paintops/experiment/ki<wbr>s_experiment_paintop_settings_<wbr>widget.h<br>
 copy to libs/image/brushengine/kis_no_<wbr>size_paintop_settings.h<br>
index ec136cc..accd1f2 100644<br>
--- a/plugins/paintops/experiment/<wbr>kis_experiment_paintop_setting<wbr>s_widget.h<br>
                
+++ b/libs/image/brushengine/kis_n<wbr>o_size_paintop_settings.h<br>
@@ -1,5 +1,5 @@<br>
  /*<br>
- *   Copyright (c) 2009,2010 Lukáš Tvrdý &lt;<a \
href="mailto:lukast.dev@gmail.com" target="_blank">lukast.dev@gmail.com</a>&gt;<br> + \
*   Copyright (c) 2016 Dmitry Kazakov &lt;<a href="mailto:dimula73@gmail.com" \
                target="_blank">dimula73@gmail.com</a>&gt;<br>
   *<br>
   *   This program is free software; you can redistribute it and/or modify<br>
   *   it under the terms of the GNU General Public License as published by<br>
@@ -16,21 +16,20 @@<br>
   *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA <a \
                href="tel:02110-1301" value="+4921101301" \
                target="_blank">02110-1301</a>, USA.<br>
   */<br>
<br>
-#ifndef KIS_EXPERIMENTPAINTOP_SETTINGS<wbr>_WIDGET_H_<br>
-#define KIS_EXPERIMENTPAINTOP_SETTINGS<wbr>_WIDGET_H_<br>
+#ifndef KISNOSIZEPAINTOPSETTINGS_H<br>
+#define KISNOSIZEPAINTOPSETTINGS_H<br>
<br>
-#include &lt;kis_paintop_settings_widget.h<wbr>&gt;<br>
+#include &quot;kis_paintop_settings.h&quot;<br>
+#include &quot;kritaimage_export.h&quot;<br>
<br>
<br>
-class KisExperimentPaintOpSettingsWi<wbr>dget : public KisPaintOpSettingsWidget<br>
+class KRITAIMAGE_EXPORT KisNoSizePaintOpSettings : public KisPaintOpSettings<br>
  {<br>
-      Q_OBJECT<br>
  public:<br>
-      KisExperimentPaintOpSettingsWi<wbr>dget(QWidget* parent = 0);<br>
-      virtual ~KisExperimentPaintOpSettingsW<wbr>idget();<br>
-      virtual void changePaintOpSize(qreal x, qreal y);<br>
+      KisNoSizePaintOpSettings();<br>
<br>
-      KisPropertiesConfiguration* configuration() const;<br>
+      void setPaintOpSize(qreal value) Q_DECL_OVERRIDE;<br>
+      qreal paintOpSize() const Q_DECL_OVERRIDE;<br>
  };<br>
<br>
-#endif<br>
+#endif // KISNOSIZEPAINTOPSETTINGS_H<br>
diff --git a/libs/image/brushengine/kis_p<wbr>aintop_config_widget.cpp \
b/libs/image/brushengine/kis_p<wbr>aintop_config_widget.cpp<br> index \
                2fbc631..66e8a78 100644<br>
--- a/libs/image/brushengine/kis_p<wbr>aintop_config_widget.cpp<br>
+++ b/libs/image/brushengine/kis_p<wbr>aintop_config_widget.cpp<br>
@@ -66,15 +66,6 @@ void KisPaintOpConfigWidget::setNod<wbr>e(KisNodeWSP node) {<br>
        m_node = node;<br>
  }<br>
<br>
-void KisPaintOpConfigWidget::change<wbr>PaintOpSize(qreal x, qreal y) {<br>
-      Q_UNUSED(x);<br>
-      Q_UNUSED(y);<br>
-}<br>
-<br>
-QSizeF KisPaintOpConfigWidget::paintO<wbr>pSize() const {<br>
-      return QSizeF(1.0, 1.0);<br>
-}<br>
-<br>
  bool KisPaintOpConfigWidget::preset<wbr>IsValid() {<br>
        return true;<br>
  }<br>
diff --git a/libs/image/brushengine/kis_p<wbr>aintop_config_widget.h \
b/libs/image/brushengine/kis_p<wbr>aintop_config_widget.h<br> index f1d3a3f..5933b26 \
                100644<br>
--- a/libs/image/brushengine/kis_p<wbr>aintop_config_widget.h<br>
+++ b/libs/image/brushengine/kis_p<wbr>aintop_config_widget.h<br>
@@ -56,16 +56,6 @@ public:<br>
        virtual void setNode(KisNodeWSP node);<br>
<br>
        /**<br>
-        * @see KisPaintOpSettings::changePain<wbr>tOpSize(qreal x, qreal y)<br>
-        */<br>
-      virtual void changePaintOpSize(qreal x, qreal y);<br>
-<br>
-      /**<br>
-        * @see KisPaintOpSettings::paintOpSiz<wbr>e()<br>
-        */<br>
-      virtual QSizeF paintOpSize() const;<br>
-<br>
-      /**<br>
         * This is true for all of the paintop widget except for the Custom brush tab \
                in the Brush tip dialog<br>
         */<br>
        virtual bool presetIsValid();<br>
diff --git a/libs/image/brushengine/kis_p<wbr>aintop_settings.cpp \
b/libs/image/brushengine/kis_p<wbr>aintop_settings.cpp<br> index 993c762..29cd8df \
                100644<br>
--- a/libs/image/brushengine/kis_p<wbr>aintop_settings.cpp<br>
+++ b/libs/image/brushengine/kis_p<wbr>aintop_settings.cpp<br>
@@ -201,38 +201,6 @@ qreal KisPaintOpSettings::paintOpFlo<wbr>w() const<br>
        return proxy-&gt;getDouble(&quot;FlowValue&quot;, 1.0);<br>
  }<br>
<br>
-void KisPaintOpSettings::setPaintOp<wbr>Size(qreal value)<br>
-{<br>
-      /**<br>
-        * The widget already has the wrapping for the locked setings<br>
-        * functionality, so just request it.<br>
-        */<br>
-<br>
-      if (d-&gt;settingsWidget) {<br>
-            const qreal sizeDiff = value - paintOpSize();<br>
-<br>
-            {<br>
-                  KisSignalsBlocker b(d-&gt;settingsWidget);<br>
-                  d-&gt;settingsWidget.data()-&gt;setC<wbr>onfigurationSafe(this);<br>
                
-                  d-&gt;settingsWidget.data()-&gt;chan<wbr>gePaintOpSize(sizeDiff, \
                0);<br>
-            }<br>
-            d-&gt;settingsWidget.data()-&gt;writ<wbr>eConfigurationSafe(this);<br>
-      }<br>
-}<br>
-<br>
-qreal KisPaintOpSettings::paintOpSiz<wbr>e() const<br>
-{<br>
-      // see a comment about locked settings in setPaintOpSize()<br>
-<br>
-      qreal size = 1.0;<br>
-<br>
-      if (d-&gt;settingsWidget) {<br>
-            size = d-&gt;settingsWidget.data()-&gt;pain<wbr>tOpSize().width();<br>
-      }<br>
-<br>
-      return size;<br>
-}<br>
-<br>
  QString KisPaintOpSettings::paintOpCom<wbr>positeOp() const<br>
  {<br>
        KisLockedPropertiesProxySP proxy(<br>
diff --git a/libs/image/brushengine/kis_p<wbr>aintop_settings.h \
b/libs/image/brushengine/kis_p<wbr>aintop_settings.h<br> index 1af16fc..925b588 \
                100644<br>
--- a/libs/image/brushengine/kis_p<wbr>aintop_settings.h<br>
+++ b/libs/image/brushengine/kis_p<wbr>aintop_settings.h<br>
@@ -193,12 +193,12 @@ public:<br>
        /**<br>
         * Set paintop size directly in the properties<br>
         */<br>
-      void setPaintOpSize(qreal value);<br>
+      virtual void setPaintOpSize(qreal value) = 0;<br>
<br>
        /**<br>
         * @return size saved in the properties<br>
         */<br>
-      qreal paintOpSize() const;<br>
+      virtual qreal paintOpSize() const = 0;<br>
<br>
        void setEraserMode(bool value);<br>
        bool eraserMode() const;<br>
diff --git a/libs/image/kis_base_mask_gen<wbr>erator.cpp \
b/libs/image/kis_base_mask_gen<wbr>erator.cpp<br> index 14f8adb..f6d451a 100644<br>
--- a/libs/image/kis_base_mask_gen<wbr>erator.cpp<br>
+++ b/libs/image/kis_base_mask_gen<wbr>erator.cpp<br>
@@ -249,6 +249,13 @@ qreal KisMaskGenerator::diameter() const<br>
        return d-&gt;diameter;<br>
  }<br>
<br>
+void KisMaskGenerator::setDiameter(<wbr>qreal value)<br>
+{<br>
+      d-&gt;diameter = value;<br>
+      init();<br>
+      setScale(d-&gt;scaleX, d-&gt;scaleY);<br>
+}<br>
+<br>
  qreal KisMaskGenerator::ratio() const<br>
  {<br>
        return d-&gt;ratio;<br>
diff --git a/libs/image/kis_base_mask_gen<wbr>erator.h \
b/libs/image/kis_base_mask_gen<wbr>erator.h<br> index ef7cb34..8df0dfe 100644<br>
--- a/libs/image/kis_base_mask_gen<wbr>erator.h<br>
+++ b/libs/image/kis_base_mask_gen<wbr>erator.h<br>
@@ -92,7 +92,9 @@ public:<br>
<br>
        qreal height() const;<br>
<br>
-      qreal diameter() const;<br>
+      qreal diameter() const;<br>
+      void setDiameter(qreal value);<br>
+<br>
        qreal ratio() const;<br>
        qreal horizontalFade() const;<br>
        qreal verticalFade() const;<br>
diff --git a/plugins/paintops/experiment/<wbr>kis_experiment_paintop_setting<wbr>s_widget.h \
b/libs/image/kisproofingconfig<wbr>uration.cpp<br> similarity index 57%<br>
copy from plugins/paintops/experiment/ki<wbr>s_experiment_paintop_settings_<wbr>widget.h<br>
 copy to libs/image/kisproofingconfigur<wbr>ation.cpp<br>
index ec136cc..ccbecdf 100644<br>
--- a/plugins/paintops/experiment/<wbr>kis_experiment_paintop_setting<wbr>s_widget.h<br>
                
+++ b/libs/image/kisproofingconfig<wbr>uration.cpp<br>
@@ -1,5 +1,5 @@<br>
  /*<br>
- *   Copyright (c) 2009,2010 Lukáš Tvrdý &lt;<a \
href="mailto:lukast.dev@gmail.com" target="_blank">lukast.dev@gmail.com</a>&gt;<br> + \
*   Copyright (c) 2016 Dmitry Kazakov &lt;<a href="mailto:dimula73@gmail.com" \
                target="_blank">dimula73@gmail.com</a>&gt;<br>
   *<br>
   *   This program is free software; you can redistribute it and/or modify<br>
   *   it under the terms of the GNU General Public License as published by<br>
@@ -16,21 +16,4 @@<br>
   *   Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA <a \
                href="tel:02110-1301" value="+4921101301" \
                target="_blank">02110-1301</a>, USA.<br>
   */<br>
<br>
-#ifndef KIS_EXPERIMENTPAINTOP_SETTINGS<wbr>_WIDGET_H_<br>
-#define KIS_EXPERIMENTPAINTOP_SETTINGS<wbr>_WIDGET_H_<br>
<br>
-#include &lt;kis_paintop_settings_widget.h<wbr>&gt;<br>
-<br>
-<br>
-class KisExperimentPaintOpSettingsWi<wbr>dget : public KisPaintOpSettingsWidget<br>
-{<br>
-      Q_OBJECT<br>
-public:<br>
-      KisExperimentPaintOpSettingsWi<wbr>dget(QWidget* parent = 0);<br>
-      virtual ~KisExperimentPaintOpSettingsW<wbr>idget();<br>
-      virtual void changePaintOpSize(qreal x, qreal y);<br>
-<br>
-      KisPropertiesConfiguration* configuration() const;<br>
-};<br>
-<br>
-#endif<br>
diff --git a/libs/ui/kis_paintop_box.cc b/libs/ui/kis_paintop_box.cc<br>
index 7ac139a..ca1a2b9 100644<br>
--- a/libs/ui/kis_paintop_box.cc<br>
+++ b/libs/ui/kis_paintop_box.cc<br>
@@ -431,6 +431,7 @@ KisPaintopBox::KisPaintopBox(K<wbr>isViewManager *view, QWidget \
                *parent, const char *<br>
        m_presetsPopup = new KisPaintOpPresetsPopup(m_resou<wbr>rceProvider);<br>
        m_brushEditorPopupButton-&gt;set<wbr>PopupWidget(m_presetsPopup);<br>
        m_presetsPopup-&gt;switchDetache<wbr>d(false);<br>
+      connect(m_presetsPopup, SIGNAL(brushEditorShown()), \
                SLOT(slotUpdateOptionsWidget()<wbr>));<br>
        connect(m_viewManager-&gt;mainWi<wbr>ndow(), SIGNAL(themeChanged()), \
m_presetsPopup, SLOT(updateThemedIcons()));<br> <br>
        m_presetsChooserPopup = new KisPaintOpPresetsChooserPopup(<wbr>);<br>
@@ -641,8 +642,9 @@ void KisPaintopBox::slotUpdateOptio<wbr>nsWidget()<br>
        KIS_SAFE_ASSERT_RECOVER_RETUR<wbr>N(preset);<br>
        KIS_SAFE_ASSERT_RECOVER_RETUR<wbr>N(m_optionWidget);<br>
<br>
-      KisSignalsBlocker b(m_optionWidget);<br>
-      m_optionWidget-&gt;setConfigurati<wbr>onSafe(preset-&gt;settings().<wbr>data());<br>
 +      if (m_optionWidget-&gt;isVisible()) {<br>
+            m_optionWidget-&gt;setConfigurati<wbr>onSafe(preset-&gt;settings().<wbr>data());<br>
 +      }<br>
<br>
        m_presetsPopup-&gt;resourceSelec<wbr>ted(preset.data());<br>
        m_presetsPopup-&gt;updateViewSet<wbr>tings();<br>
diff --git a/libs/ui/tool/kis_tool_freeha<wbr>nd.cc \
b/libs/ui/tool/kis_tool_freeha<wbr>nd.cc<br> index 44ae2a2..c1968c9 100644<br>
--- a/libs/ui/tool/kis_tool_freeha<wbr>nd.cc<br>
+++ b/libs/ui/tool/kis_tool_freeha<wbr>nd.cc<br>
@@ -361,12 +361,12 @@ void \
KisToolFreehand::continueAlter<wbr>nateAction(KoPointerEvent *event, AlternateAc<br>  \
const qreal sizeDiff = scaleCoeff * offset.x() ;<br> <br>
        if (qAbs(sizeDiff) &gt; 0.01) {<br>
-            //KisPaintOpSettingsSP settings = \
currentPaintOpPreset()-&gt;settin<wbr>gs();<br> +            KisPaintOpSettingsSP \
                settings = currentPaintOpPreset()-&gt;settin<wbr>gs();<br>
              const qreal newSize = qBound(0.01, m_lastPaintOpSize + sizeDiff, \
maxBrushSize);<br> <br>
-            //settings-&gt;setPaintOpSize(new<wbr>Size);<br>
-            //requestUpdateOutline(m_initi<wbr>alGestureDocPoint, 0);<br>
-            m_brushResizeCompressor.start(<wbr>newSize);<br>
+            settings-&gt;setPaintOpSize(newSi<wbr>ze);<br>
+            requestUpdateOutline(m_initial<wbr>GestureDocPoint, 0);<br>
+            //m_brushResizeCompressor.star<wbr>t(newSize);<br>
<br>
              m_lastDocumentPoint = event-&gt;point;<br>
              m_lastPaintOpSize = newSize;<br>
diff --git a/libs/ui/widgets/kis_paintop_<wbr>presets_popup.cpp \
b/libs/ui/widgets/kis_paintop_<wbr>presets_popup.cpp<br> index d19ceca..9b829f5 \
                100644<br>
--- a/libs/ui/widgets/kis_paintop_<wbr>presets_popup.cpp<br>
+++ b/libs/ui/widgets/kis_paintop_<wbr>presets_popup.cpp<br>
@@ -368,6 +368,7 @@ void KisPaintOpPresetsPopup::showEv<wbr>ent(QShowEvent *)<br>
        if (m_d-&gt;detached) {<br>
              window()-&gt;setGeometry(m_d-&gt;de<wbr>tachedGeometry);<br>
        }<br>
+      emit brushEditorShown();<br>
  }<br>
<br>
  void KisPaintOpPresetsPopup::resize<wbr>Event(QResizeEvent* event)<br>
diff --git a/libs/ui/widgets/kis_paintop_<wbr>presets_popup.h \
b/libs/ui/widgets/kis_paintop_<wbr>presets_popup.h<br> index d4b9ee3..bf291bc \
                100644<br>
--- a/libs/ui/widgets/kis_paintop_<wbr>presets_popup.h<br>
+++ b/libs/ui/widgets/kis_paintop_<wbr>presets_popup.h<br>
@@ -96,6 +96,7 @@ Q_SIGNALS:<br>
        void eraserBrushSizeToggled(bool value);<br>
<br>
        void sizeChanged();<br>
+      void brushEditorShown();<br>
<br>
  private Q_SLOTS:<br>
        void slotSwitchPresetStrip(bool visible);<br>
diff --git a/plugins/paintops/chalk/kis_c<wbr>halk_paintop_settings.cpp \
b/plugins/paintops/chalk/kis_c<wbr>halk_paintop_settings.cpp<br> index \
                8f2f60d..e0f5616 100644<br>
--- a/plugins/paintops/chalk/kis_c<wbr>halk_paintop_settings.cpp<br>
+++ b/plugins/paintops/chalk/kis_c<wbr>halk_paintop_settings.cpp<br>
@@ -57,3 +57,18 @@ QPainterPath KisChalkPaintOpSettings::brush<wbr>Outline(const \
KisPaintInformation &amp;in<br>  }<br>
        return path;<br>
  }<br>
+<br>
+void KisChalkPaintOpSettings::setPa<wbr>intOpSize(qreal value)<br>
+{<br>
+      ChalkProperties properties;<br>
+      properties.readOptionSetting(t<wbr>his);<br>
+      properties.radius = qRound(0.5 * value);<br>
+      properties.writeOptionSetting(<wbr>this);<br>
+}<br>
+<br>
+qreal KisChalkPaintOpSettings::paint<wbr>OpSize() const<br>
+{<br>
+      ChalkProperties properties;<br>
+      properties.readOptionSetting(t<wbr>his);<br>
+      return properties.radius * 2;<br>
+}<br>
diff --git a/plugins/paintops/chalk/kis_c<wbr>halk_paintop_settings.h \
b/plugins/paintops/chalk/kis_c<wbr>halk_paintop_settings.h<br> index 6826057..9cbf4aa \
                100644<br>
--- a/plugins/paintops/chalk/kis_c<wbr>halk_paintop_settings.h<br>
+++ b/plugins/paintops/chalk/kis_c<wbr>halk_paintop_settings.h<br>
@@ -36,6 +36,9 @@ public:<br>
<br>
        QPainterPath brushOutline(const KisPaintInformation &amp;info, OutlineMode \
mode) const;<br> <br>
+      void setPaintOpSize(qreal value) Q_DECL_OVERRIDE;<br>
+      qreal paintOpSize() const Q_DECL_OVERRIDE;<br>
+<br>
        bool paintIncremental();<br>
        bool isAirbrushing() const;<br>
        int rate() const;<br>
diff --git a/plugins/paintops/chalk/kis_c<wbr>halk_paintop_settings_widget.c<wbr>pp \
b/plugins/paintops/chalk/kis_c<wbr>halk_paintop_settings_widget.c<wbr>pp<br> index \
                5e6e16e..3b5eec2 100644<br>
--- a/plugins/paintops/chalk/kis_c<wbr>halk_paintop_settings_widget.c<wbr>pp<br>
+++ b/plugins/paintops/chalk/kis_c<wbr>halk_paintop_settings_widget.c<wbr>pp<br>
@@ -50,17 +50,3 @@ KisPropertiesConfiguration*   \
KisChalkPaintOpSettingsWidget:<wbr>:configuration() cons<br>  \
writeConfiguration(config);<br>  return config;<br>
  }<br>
-<br>
-void KisChalkPaintOpSettingsWidget:<wbr>:changePaintOpSize(qreal x, qreal y)<br>
-{<br>
-      // if the movement is more left&lt;-&gt;right then up&lt;-&gt;down<br>
-      if (qAbs(x) &gt; qAbs(y)) {<br>
-            m_chalkOption-&gt;setRadius(m_cha<wbr>lkOption-&gt;radius() + \
                qRound(x));<br>
-      }<br>
-}<br>
-<br>
-QSizeF KisChalkPaintOpSettingsWidget:<wbr>:paintOpSize() const<br>
-{<br>
-      qreal width = m_chalkOption-&gt;radius() * 2.0 + 1.0;<br>
-      return QSizeF(width, width);<br>
-}<br>
diff --git a/plugins/paintops/chalk/kis_c<wbr>halk_paintop_settings_widget.h \
b/plugins/paintops/chalk/kis_c<wbr>halk_paintop_settings_widget.h<br> index \
                5e7f618..0d4f9c5 100644<br>
--- a/plugins/paintops/chalk/kis_c<wbr>halk_paintop_settings_widget.h<br>
+++ b/plugins/paintops/chalk/kis_c<wbr>halk_paintop_settings_widget.h<br>
@@ -35,10 +35,6 @@ public:<br>
<br>
        KisPropertiesConfiguration* configuration() const;<br>
<br>
-      ///Reimplemented<br>
-      void changePaintOpSize(qreal x, qreal y);<br>
-      virtual QSizeF paintOpSize() const;<br>
-<br>
  public:<br>
        KisChalkOpOption* m_chalkOption;<br>
  };<br>
diff --git a/plugins/paintops/chalk/kis_c<wbr>halkop_option.h \
b/plugins/paintops/chalk/kis_c<wbr>halkop_option.h<br> index d61a4d2..7479dd5 \
                100644<br>
--- a/plugins/paintops/chalk/kis_c<wbr>halkop_option.h<br>
+++ b/plugins/paintops/chalk/kis_c<wbr>halkop_option.h<br>
@@ -64,6 +64,13 @@ public:<br>
              useOpacity = settings-&gt;getBool(CHALK_USE_OP<wbr>ACITY);<br>
              useSaturation = settings-&gt;getBool(CHALK_USE_SA<wbr>TURATION);<br>
        }<br>
+<br>
+      void writeOptionSetting(KisProperti<wbr>esConfiguration* settings) {<br>
+            settings-&gt;setProperty(CHALK_RA<wbr>DIUS, radius);<br>
+            settings-&gt;setProperty(CHALK_IN<wbr>K_DEPLETION, inkDepletion);<br>
+            settings-&gt;setProperty(CHALK_US<wbr>E_OPACITY, useOpacity);<br>
+            settings-&gt;setProperty(CHALK_US<wbr>E_SATURATION, useSaturation);<br>
+      }<br>
  };<br>
<br>
  #endif<br>
diff --git a/plugins/paintops/curvebrush/<wbr>kis_curve_paintop_settings.cpp \
b/plugins/paintops/curvebrush/<wbr>kis_curve_paintop_settings.cpp<br> index \
                ed5368e..dd9401f 100644<br>
--- a/plugins/paintops/curvebrush/<wbr>kis_curve_paintop_settings.cpp<br>
+++ b/plugins/paintops/curvebrush/<wbr>kis_curve_paintop_settings.cpp<br>
@@ -17,6 +17,7 @@<br>
   */<br>
  #include &lt;kis_curve_paintop_settings.h&gt;<br>
  #include &lt;kis_paint_action_type_option.<wbr>h&gt;<br>
+#include &quot;kis_curve_line_option.h&quot;<br>
<br>
  struct KisCurvePaintOpSettings::Priva<wbr>te<br>
  {<br>
@@ -32,6 +33,21 @@ KisCurvePaintOpSettings::~KisC<wbr>urvePaintOpSettings()<br>
  {<br>
  }<br>
<br>
+void KisCurvePaintOpSettings::setPa<wbr>intOpSize(qreal value)<br>
+{<br>
+      CurveOption option;<br>
+      option.readOptionSetting(this)<wbr>;<br>
+      option.curve_line_width = value;<br>
+      option.writeOptionSetting(this<wbr>);<br>
+}<br>
+<br>
+qreal KisCurvePaintOpSettings::paint<wbr>OpSize() const<br>
+{<br>
+      CurveOption option;<br>
+      option.readOptionSetting(this)<wbr>;<br>
+      return option.curve_line_width;<br>
+}<br>
+<br>
  bool KisCurvePaintOpSettings::paint<wbr>Incremental()<br>
  {<br>
        return (enumPaintActionType)getInt(&quot;P<wbr>aintOpAction&quot;, WASH) == \
BUILDUP;<br> @@ -41,7 +57,6 @@ bool \
KisCurvePaintOpSettings::paint<wbr>Incremental()<br>  #include \
&lt;brushengine/kis_slider_based_<wbr>paintop_property.h&gt;<br>  #include \
&quot;kis_paintop_preset.h&quot;<br>  #include \
                &quot;kis_paintop_settings_update_p<wbr>roxy.h&quot;<br>
-#include &quot;kis_curve_line_option.h&quot;<br>
  #include &quot;kis_standard_uniform_properti<wbr>es_factory.h&quot;<br>
  typedef KisCallbackBasedPaintopPropert<wbr>y&lt;KisUniformPaintOpProperty&gt; \
KisUniformPaintOpPropertyCallb<wbr>ack;<br> <br>
diff --git a/plugins/paintops/curvebrush/<wbr>kis_curve_paintop_settings.h \
b/plugins/paintops/curvebrush/<wbr>kis_curve_paintop_settings.h<br> index \
                485c9fe..49072e1 100644<br>
--- a/plugins/paintops/curvebrush/<wbr>kis_curve_paintop_settings.h<br>
+++ b/plugins/paintops/curvebrush/<wbr>kis_curve_paintop_settings.h<br>
@@ -29,6 +29,9 @@ public:<br>
        KisCurvePaintOpSettings();<br>
        virtual ~KisCurvePaintOpSettings();<br>
<br>
+      void setPaintOpSize(qreal value) Q_DECL_OVERRIDE;<br>
+      qreal paintOpSize() const Q_DECL_OVERRIDE;<br>
+<br>
        virtual bool paintIncremental();<br>
<br>
        QList&lt;KisUniformPaintOpProper<wbr>tySP&gt; uniformProperties();<br>
diff --git a/plugins/paintops/deform/kis_<wbr>deform_paintop_settings.cpp \
b/plugins/paintops/deform/kis_<wbr>deform_paintop_settings.cpp<br> index \
                508081a..43a68a1 100644<br>
--- a/plugins/paintops/deform/kis_<wbr>deform_paintop_settings.cpp<br>
+++ b/plugins/paintops/deform/kis_<wbr>deform_paintop_settings.cpp<br>
@@ -40,6 +40,21 @@ KisDeformPaintOpSettings::~Kis<wbr>DeformPaintOpSettings()<br>
  {<br>
  }<br>
<br>
+void KisDeformPaintOpSettings::setP<wbr>aintOpSize(qreal value)<br>
+{<br>
+      BrushSizeOption option;<br>
+      option.readOptionSetting(this)<wbr>;<br>
+      option.brush_diameter = value;<br>
+      option.writeOptionSetting(this<wbr>);<br>
+}<br>
+<br>
+qreal KisDeformPaintOpSettings::pain<wbr>tOpSize() const<br>
+{<br>
+      BrushSizeOption option;<br>
+      option.readOptionSetting(this)<wbr>;<br>
+      return option.brush_diameter;<br>
+}<br>
+<br>
  bool KisDeformPaintOpSettings::pain<wbr>tIncremental()<br>
  {<br>
        return true;<br>
diff --git a/plugins/paintops/deform/kis_<wbr>deform_paintop_settings.h \
b/plugins/paintops/deform/kis_<wbr>deform_paintop_settings.h<br> index \
                c4d8855..0ab27ce 100644<br>
--- a/plugins/paintops/deform/kis_<wbr>deform_paintop_settings.h<br>
+++ b/plugins/paintops/deform/kis_<wbr>deform_paintop_settings.h<br>
@@ -31,6 +31,9 @@ public:<br>
        KisDeformPaintOpSettings();<br>
        ~KisDeformPaintOpSettings();<br>
<br>
+      void setPaintOpSize(qreal value) Q_DECL_OVERRIDE;<br>
+      qreal paintOpSize() const Q_DECL_OVERRIDE;<br>
+<br>
        QPainterPath brushOutline(const KisPaintInformation &amp;info, OutlineMode \
mode) const;<br> <br>
        bool paintIncremental();<br>
diff --git a/plugins/paintops/deform/kis_<wbr>deform_paintop_settings_widget<wbr>.cpp \
b/plugins/paintops/deform/kis_<wbr>deform_paintop_settings_widget<wbr>.cpp<br> index \
                bb2f519..cd5fd82 100644<br>
--- a/plugins/paintops/deform/kis_<wbr>deform_paintop_settings_widget<wbr>.cpp<br>
+++ b/plugins/paintops/deform/kis_<wbr>deform_paintop_settings_widget<wbr>.cpp<br>
@@ -50,25 +50,6 @@ KisDeformPaintOpSettingsWidget<wbr>::~ \
KisDeformPaintOpSettingsWidget<wbr>()<br>  }<br>
<br>
<br>
-void KisDeformPaintOpSettingsWidget<wbr>::changePaintOpSize(qreal x, qreal y)<br>
-{<br>
-      // if the movement is more left&lt;-&gt;right then up&lt;-&gt;down<br>
-      if (qAbs(x) &gt; qAbs(y)) {<br>
-            m_brushSizeOption-&gt;setDiameter<wbr>(m_brushSizeOption-&gt;diameter() \
                + qRound(x));<br>
-      }<br>
-      else { // vice-versa<br>
-            // we can do something different, e.g. change deform mode or ...<br>
-      }<br>
-}<br>
-<br>
-<br>
-QSizeF KisDeformPaintOpSettingsWidget<wbr>::paintOpSize() const<br>
-{<br>
-      qreal height = m_brushSizeOption-&gt;diameter() * \
                m_brushSizeOption-&gt;brushAspect<wbr>();<br>
-      return QSizeF(m_brushSizeOption-&gt;diam<wbr>eter(), height);<br>
-}<br>
-<br>
-<br>
  KisPropertiesConfiguration* KisDeformPaintOpSettingsWidget<wbr>::configuration() \
const<br>  {<br>
        KisDeformPaintOpSettings* config = new KisDeformPaintOpSettings();<br>
diff --git a/plugins/paintops/deform/kis_<wbr>deform_paintop_settings_widget<wbr>.h \
b/plugins/paintops/deform/kis_<wbr>deform_paintop_settings_widget<wbr>.h<br> index \
                1811409..a87fb29 100644<br>
--- a/plugins/paintops/deform/kis_<wbr>deform_paintop_settings_widget<wbr>.h<br>
+++ b/plugins/paintops/deform/kis_<wbr>deform_paintop_settings_widget<wbr>.h<br>
@@ -32,8 +32,6 @@ public:<br>
        virtual ~KisDeformPaintOpSettingsWidge<wbr>t();<br>
<br>
        virtual KisPropertiesConfiguration* configuration() const;<br>
-      virtual void changePaintOpSize(qreal x, qreal y);<br>
-      virtual QSizeF paintOpSize() const;<br>
<br>
  private:<br>
        KisDeformOption * m_deformOption;<br>
diff --git a/plugins/paintops/dynadraw/ki<wbr>s_dyna_paintop_settings.cpp \
b/plugins/paintops/dynadraw/ki<wbr>s_dyna_paintop_settings.cpp<br> index \
                8915c1e..cfe817b 100644<br>
--- a/plugins/paintops/dynadraw/ki<wbr>s_dyna_paintop_settings.cpp<br>
+++ b/plugins/paintops/dynadraw/ki<wbr>s_dyna_paintop_settings.cpp<br>
@@ -19,6 +19,7 @@<br>
  #include &quot;kis_dyna_paintop_settings.h&quot;<br>
  #include &lt;kis_paint_action_type_option.<wbr>h&gt;<br>
  #include &lt;kis_airbrush_option.h&gt;<br>
+#include &quot;kis_dynaop_option.h&quot;<br>
<br>
  struct KisDynaPaintOpSettings::Privat<wbr>e<br>
  {<br>
@@ -34,6 +35,22 @@ KisDynaPaintOpSettings::~KisDy<wbr>naPaintOpSettings()<br>
  {<br>
  }<br>
<br>
+void KisDynaPaintOpSettings::setPai<wbr>ntOpSize(qreal value)<br>
+{<br>
+      DynaOption option;<br>
+      option.readOptionSetting(this)<wbr>;<br>
+      option.dyna_diameter = value;<br>
+      option.writeOptionSetting(this<wbr>);<br>
+}<br>
+<br>
+qreal KisDynaPaintOpSettings::paintO<wbr>pSize() const<br>
+{<br>
+      DynaOption option;<br>
+      option.readOptionSetting(this)<wbr>;<br>
+<br>
+      return option.dyna_diameter;<br>
+}<br>
+<br>
  bool KisDynaPaintOpSettings::paintI<wbr>ncremental()<br>
  {<br>
        return (enumPaintActionType)getInt(&quot;P<wbr>aintOpAction&quot;, WASH) == \
BUILDUP;<br> @@ -54,7 +71,6 @@ int KisDynaPaintOpSettings::rate() const<br>
  #include &lt;brushengine/kis_combo_based_p<wbr>aintop_property.h&gt;<br>
  #include &quot;kis_paintop_preset.h&quot;<br>
  #include &quot;kis_paintop_settings_update_p<wbr>roxy.h&quot;<br>
-#include &quot;kis_dynaop_option.h&quot;<br>
  #include &quot;kis_standard_uniform_properti<wbr>es_factory.h&quot;<br>
<br>
<br>
diff --git a/plugins/paintops/dynadraw/ki<wbr>s_dyna_paintop_settings.h \
b/plugins/paintops/dynadraw/ki<wbr>s_dyna_paintop_settings.h<br> index \
                96f0ce0..e203a7c 100644<br>
--- a/plugins/paintops/dynadraw/ki<wbr>s_dyna_paintop_settings.h<br>
+++ b/plugins/paintops/dynadraw/ki<wbr>s_dyna_paintop_settings.h<br>
@@ -29,6 +29,9 @@ public:<br>
        KisDynaPaintOpSettings();<br>
        ~KisDynaPaintOpSettings();<br>
<br>
+      void setPaintOpSize(qreal value) Q_DECL_OVERRIDE;<br>
+      qreal paintOpSize() const Q_DECL_OVERRIDE;<br>
+<br>
        bool paintIncremental();<br>
        virtual bool isAirbrushing() const;<br>
        virtual int rate() const;<br>
diff --git a/plugins/paintops/experiment/<wbr>kis_experiment_paintop_setting<wbr>s.h \
b/plugins/paintops/experiment/<wbr>kis_experiment_paintop_setting<wbr>s.h<br> index \
                9701ec4..5a088a3 100644<br>
--- a/plugins/paintops/experiment/<wbr>kis_experiment_paintop_setting<wbr>s.h<br>
+++ b/plugins/paintops/experiment/<wbr>kis_experiment_paintop_setting<wbr>s.h<br>
@@ -19,10 +19,10 @@<br>
  #ifndef KIS_EXPERIMENT_PAINTOP_SETTING<wbr>S_H_<br>
  #define KIS_EXPERIMENT_PAINTOP_SETTING<wbr>S_H_<br>
<br>
-#include &lt;brushengine/kis_paintop_setti<wbr>ngs.h&gt;<br>
+#include &lt;brushengine/kis_no_size_paint<wbr>op_settings.h&gt;<br>
  #include &lt;QScopedPointer&gt;<br>
<br>
-class KisExperimentPaintOpSettings : public KisPaintOpSettings<br>
+class KisExperimentPaintOpSettings : public KisNoSizePaintOpSettings<br>
  {<br>
  public:<br>
        KisExperimentPaintOpSettings(<wbr>);<br>
diff --git a/plugins/paintops/experiment/<wbr>kis_experiment_paintop_setting<wbr>s_widget.cpp \
b/plugins/paintops/experiment/<wbr>kis_experiment_paintop_setting<wbr>s_widget.cpp<br>
 index 225d4f5..8bd7b11 100644<br>
--- a/plugins/paintops/experiment/<wbr>kis_experiment_paintop_setting<wbr>s_widget.cpp<br>
                
+++ b/plugins/paintops/experiment/<wbr>kis_experiment_paintop_setting<wbr>s_widget.cpp<br>
 @@ -49,8 +49,4 @@ KisPropertiesConfiguration*   \
KisExperimentPaintOpSettingsWi<wbr>dget::configuration()<br>  \
writeConfiguration(config);<br>  return config;<br>
  }<br>
-void KisExperimentPaintOpSettingsWi<wbr>dget::changePaintOpSize(qreal /*x*/, qreal \
                /*y*/)<br>
-{<br>
-      //m_experimentOption-&gt;setDiame<wbr>ter( \
                m_experimentOption-&gt;startSize(<wbr>) + qRound(x) );<br>
-}<br>
<br>
diff --git a/plugins/paintops/experiment/<wbr>kis_experiment_paintop_setting<wbr>s_widget.h \
b/plugins/paintops/experiment/<wbr>kis_experiment_paintop_setting<wbr>s_widget.h<br> \
                index ec136cc..65422e7 100644<br>
--- a/plugins/paintops/experiment/<wbr>kis_experiment_paintop_setting<wbr>s_widget.h<br>
                
+++ b/plugins/paintops/experiment/<wbr>kis_experiment_paintop_setting<wbr>s_widget.h<br>
 @@ -28,7 +28,6 @@ class KisExperimentPaintOpSettingsWi<wbr>dget : public \
KisPaintOpSettingsWidget<br>  public:<br>
        <wbr>KisExperimentPaintOpSettingsWi<wbr>dget(QWidget* parent = 0);<br>
        virtual ~KisExperimentPaintOpSettingsW<wbr>idget();<br>
-      virtual void changePaintOpSize(qreal x, qreal y);<br>
<br>
        KisPropertiesConfiguration* configuration() const;<br>
  };<br>
diff --git a/plugins/paintops/gridbrush/k<wbr>is_grid_paintop.cpp \
b/plugins/paintops/gridbrush/k<wbr>is_grid_paintop.cpp<br> index b2e09a8..ad8db9e \
                100644<br>
--- a/plugins/paintops/gridbrush/k<wbr>is_grid_paintop.cpp<br>
+++ b/plugins/paintops/gridbrush/k<wbr>is_grid_paintop.cpp<br>
@@ -53,7 +53,7 @@ KisGridPaintOp::KisGridPaintOp<wbr>(const KisGridPaintOpSettings \
*settings, KisPainte<br>  , m_image(image)<br>
        , m_node(node)<br>
  {<br>
-      m_properties.fillProperties(se<wbr>ttings);<br>
+      m_properties.readOptionSetting<wbr>(settings);<br>
        m_colorProperties.fillPropert<wbr>ies(settings);<br>
<br>
        m_xSpacing = m_properties.gridWidth * m_properties.scale;<br>
@@ -240,7 +240,7 @@ KisSpacingInformation KisGridPaintOp::paintAt(const \
                KisPaintInformation&amp; info)<br>
        return KisSpacingInformation(m_spacin<wbr>g * additionalScale);<br>
  }<br>
<br>
-void KisGridProperties::fillPropert<wbr>ies(const KisPropertiesConfiguration* \
setting)<br> +void KisGridProperties::readOptionS<wbr>etting(const \
KisPropertiesConfiguration* setting)<br>  {<br>
        gridWidth = qMax(1, setting-&gt;getInt(GRID_WIDTH));<br>
        gridHeight = qMax(1, setting-&gt;getInt(GRID_HEIGHT));<br>
diff --git a/plugins/paintops/gridbrush/k<wbr>is_grid_paintop.h \
b/plugins/paintops/gridbrush/k<wbr>is_grid_paintop.h<br> index 54794de..0e333c9 \
                100644<br>
--- a/plugins/paintops/gridbrush/k<wbr>is_grid_paintop.h<br>
+++ b/plugins/paintops/gridbrush/k<wbr>is_grid_paintop.h<br>
@@ -45,7 +45,8 @@ public:<br>
<br>
        quint8 shape;<br>
  public:<br>
-      void fillProperties(const KisPropertiesConfiguration* setting);<br>
+      void readOptionSetting(const KisPropertiesConfiguration* setting);<br>
+      void writeOptionSetting(KisProperti<wbr>esConfiguration* setting);<br>
  };<br>
<br>
  class KisGridPaintOp : public KisPaintOp<br>
diff --git a/plugins/paintops/gridbrush/k<wbr>is_grid_paintop_settings.cpp \
b/plugins/paintops/gridbrush/k<wbr>is_grid_paintop_settings.cpp<br> index \
                1cc71f0..a346d9c 100644<br>
--- a/plugins/paintops/gridbrush/k<wbr>is_grid_paintop_settings.cpp<br>
+++ b/plugins/paintops/gridbrush/k<wbr>is_grid_paintop_settings.cpp<br>
@@ -36,6 +36,23 @@ KisGridPaintOpSettings::KisGri<wbr>dPaintOpSettings()<br>
  {<br>
  }<br>
<br>
+void KisGridPaintOpSettings::setPai<wbr>ntOpSize(qreal value)<br>
+{<br>
+      GridOption option;<br>
+      option.readOptionSetting(this)<wbr>;<br>
+      option.grid_width = value;<br>
+      option.grid_height = value;<br>
+      option.writeOptionSetting(this<wbr>);<br>
+}<br>
+<br>
+qreal KisGridPaintOpSettings::paintO<wbr>pSize() const<br>
+{<br>
+      GridOption option;<br>
+      option.readOptionSetting(this)<wbr>;<br>
+<br>
+      return option.grid_width;<br>
+}<br>
+<br>
  bool KisGridPaintOpSettings::paintI<wbr>ncremental()<br>
  {<br>
        return (enumPaintActionType)getInt(&quot;P<wbr>aintOpAction&quot;, WASH) == \
BUILDUP;<br> @@ -64,7 +81,6 @@ QPainterPath \
KisGridPaintOpSettings::brushO<wbr>utline(const KisPaintInformation &amp;inf<br>  \
#include &lt;brushengine/kis_slider_based_<wbr>paintop_property.h&gt;<br>  #include \
&quot;kis_paintop_preset.h&quot;<br>  #include \
                &quot;kis_paintop_settings_update_p<wbr>roxy.h&quot;<br>
-#include &quot;kis_gridop_option.h&quot;<br>
  typedef KisCallbackBasedPaintopPropert<wbr>y&lt;KisUniformPaintOpProperty&gt; \
KisUniformPaintOpPropertyCallb<wbr>ack;<br> <br>
<br>
diff --git a/plugins/paintops/gridbrush/k<wbr>is_grid_paintop_settings.h \
b/plugins/paintops/gridbrush/k<wbr>is_grid_paintop_settings.h<br> index \
                c7827c0..6b24765 100644<br>
--- a/plugins/paintops/gridbrush/k<wbr>is_grid_paintop_settings.h<br>
+++ b/plugins/paintops/gridbrush/k<wbr>is_grid_paintop_settings.h<br>
@@ -34,6 +34,9 @@ class KisGridPaintOpSettings : public \
KisOutlineGenerationPolicy&lt;Kis<wbr>PaintOpSetti<br>  public:<br>
        KisGridPaintOpSettings();<br>
<br>
+      void setPaintOpSize(qreal value) Q_DECL_OVERRIDE;<br>
+      qreal paintOpSize() const Q_DECL_OVERRIDE;<br>
+<br>
        QPainterPath brushOutline(const KisPaintInformation &amp;info, OutlineMode \
mode) const;<br>  bool paintIncremental();<br>
<br>
diff --git a/plugins/paintops/gridbrush/k<wbr>is_grid_paintop_settings_widge<wbr>t.cpp \
b/plugins/paintops/gridbrush/k<wbr>is_grid_paintop_settings_widge<wbr>t.cpp<br> index \
                bdac8f4..37aadfb 100644<br>
--- a/plugins/paintops/gridbrush/k<wbr>is_grid_paintop_settings_widge<wbr>t.cpp<br>
+++ b/plugins/paintops/gridbrush/k<wbr>is_grid_paintop_settings_widge<wbr>t.cpp<br>
@@ -54,18 +54,3 @@ KisPropertiesConfiguration*   \
KisGridPaintOpSettingsWidget::<wbr>configuration() const<br>  \
writeConfiguration(config);<br>  return config;<br>
  }<br>
-void KisGridPaintOpSettingsWidget::<wbr>changePaintOpSize(qreal x, qreal y)<br>
-{<br>
-      if (qAbs(x) &gt; qAbs(y)) {<br>
-            m_gridOption-&gt;setWidth(m_gridO<wbr>ption-&gt;gridWidth() + \
                qRound(x));<br>
-            m_gridOption-&gt;setHeight(m_grid<wbr>Option-&gt;gridHeight() + \
                qRound(x));<br>
-      }<br>
-      else {<br>
-            //m_options-&gt;m_gridOption-&gt;set<wbr>Height( gridHeight() + \
                qRound(y) );<br>
-      }<br>
-}<br>
-<br>
-QSizeF KisGridPaintOpSettingsWidget::<wbr>paintOpSize() const<br>
-{<br>
-      return QSizeF(m_gridOption-&gt;gridWidth<wbr>(), \
                m_gridOption-&gt;gridHeight());<br>
-}<br>
diff --git a/plugins/paintops/gridbrush/k<wbr>is_grid_paintop_settings_widge<wbr>t.h \
b/plugins/paintops/gridbrush/k<wbr>is_grid_paintop_settings_widge<wbr>t.h<br> index \
                51c2698..da5e272 100644<br>
--- a/plugins/paintops/gridbrush/k<wbr>is_grid_paintop_settings_widge<wbr>t.h<br>
+++ b/plugins/paintops/gridbrush/k<wbr>is_grid_paintop_settings_widge<wbr>t.h<br>
@@ -32,8 +32,6 @@ class KisGridPaintOpSettingsWidget : public \
KisPaintOpSettingsWidget<br>  public:<br>
        KisGridPaintOpSettingsWidget(<wbr>QWidget* parent = 0);<br>
        virtual ~KisGridPaintOpSettingsWidget(<wbr>);<br>
-      virtual void changePaintOpSize(qreal x, qreal y);<br>
-      virtual QSizeF paintOpSize() const;<br>
<br>
        KisPropertiesConfiguration* configuration() const;<br>
<br>
diff --git a/plugins/paintops/gridbrush/k<wbr>is_gridop_option.h \
b/plugins/paintops/gridbrush/k<wbr>is_gridop_option.h<br> index 3f67817..ddcf69b \
                100644<br>
--- a/plugins/paintops/gridbrush/k<wbr>is_gridop_option.h<br>
+++ b/plugins/paintops/gridbrush/k<wbr>is_gridop_option.h<br>
@@ -75,8 +75,8 @@ struct GridOption<br>
<br>
<br>
        void readOptionSetting(const KisPropertiesConfiguration* setting) {<br>
-            grid_width = setting-&gt;getInt(GRID_WIDTH);<br>
-            grid_height = setting-&gt;getInt(GRID_HEIGHT);<br>
+            grid_width = qMax(1, setting-&gt;getInt(GRID_WIDTH));<br>
+            grid_height = qMax(1, setting-&gt;getInt(GRID_HEIGHT));<br>
              grid_division_level = setting-&gt;getInt(GRID_DIVISION_<wbr>LEVEL);<br>
              grid_pressure_division = \
setting-&gt;getBool(GRID_PRESSURE<wbr>_DIVISION);<br>  grid_scale = \
setting-&gt;getDouble(GRID_SCALE)<wbr>;<br> @@ -86,8 +86,8 @@ struct GridOption<br>
        }<br>
<br>
        void writeOptionSetting(KisProperti<wbr>esConfiguration* setting) const {<br>
-            setting-&gt;setProperty(GRID_WIDT<wbr>H, grid_width);<br>
-            setting-&gt;setProperty(GRID_HEIG<wbr>HT, grid_height);<br>
+            setting-&gt;setProperty(GRID_WIDT<wbr>H, qMax(1, grid_width));<br>
+            setting-&gt;setProperty(GRID_HEIG<wbr>HT, qMax(1, grid_height));<br>
              setting-&gt;setProperty(GRID_DIV<wbr>ISION_LEVEL, \
                grid_division_level);<br>
              setting-&gt;setProperty(GRID_PRE<wbr>SSURE_DIVISION, \
grid_pressure_division);<br>  setting-&gt;setProperty(GRID_SCA<wbr>LE, \
                grid_scale);<br>
diff --git a/plugins/paintops/libpaintop/<wbr>kis_brush_based_paintop_option<wbr>s_widget.cpp \
b/plugins/paintops/libpaintop/<wbr>kis_brush_based_paintop_option<wbr>s_widget.cpp<br>
 index 439002e..6e098cb 100644<br>
--- a/plugins/paintops/libpaintop/<wbr>kis_brush_based_paintop_option<wbr>s_widget.cpp<br>
                
+++ b/plugins/paintops/libpaintop/<wbr>kis_brush_based_paintop_option<wbr>s_widget.cpp<br>
 @@ -42,17 +42,6 @@ KisBrushSP KisBrushBasedPaintopOptionWidg<wbr>et::brush()<br>
        return m_brushOption-&gt;brush();<br>
  }<br>
<br>
-void KisBrushBasedPaintopOptionWidg<wbr>et::changePaintOpSize(qreal x, qreal y)<br>
-{<br>
-      m_brushOption-&gt;setBrushSize(x, y);<br>
-}<br>
-<br>
-QSizeF KisBrushBasedPaintopOptionWidg<wbr>et::paintOpSize() const<br>
-{<br>
-      return m_brushOption-&gt;brushSize();<br>
-}<br>
-<br>
-<br>
  bool KisBrushBasedPaintopOptionWidg<wbr>et::presetIsValid()<br>
  {<br>
        return m_brushOption-&gt;presetIsValid()<wbr>;<br>
diff --git a/plugins/paintops/libpaintop/<wbr>kis_brush_based_paintop_option<wbr>s_widget.h \
b/plugins/paintops/libpaintop/<wbr>kis_brush_based_paintop_option<wbr>s_widget.h<br> \
                index 05843a4..b1aa32d 100644<br>
--- a/plugins/paintops/libpaintop/<wbr>kis_brush_based_paintop_option<wbr>s_widget.h<br>
                
+++ b/plugins/paintops/libpaintop/<wbr>kis_brush_based_paintop_option<wbr>s_widget.h<br>
 @@ -36,8 +36,6 @@ public:<br>
<br>
        KisBrushSP brush();<br>
<br>
-      void changePaintOpSize(qreal x, qreal y);<br>
-      virtual QSizeF paintOpSize() const;<br>
        virtual bool presetIsValid();<br>
<br>
<br>
diff --git a/plugins/paintops/libpaintop/<wbr>kis_brush_based_paintop_settin<wbr>gs.cpp \
b/plugins/paintops/libpaintop/<wbr>kis_brush_based_paintop_settin<wbr>gs.cpp<br> \
                index 021345d..4dfcfd4 100644<br>
--- a/plugins/paintops/libpaintop/<wbr>kis_brush_based_paintop_settin<wbr>gs.cpp<br>
+++ b/plugins/paintops/libpaintop/<wbr>kis_brush_based_paintop_settin<wbr>gs.cpp<br>
@@ -25,6 +25,41 @@<br>
  #include &quot;kis_brush_server.h&quot;<br>
  #include &lt;QLineF&gt;<br>
  #include &quot;kis_signals_blocker.h&quot;<br>
+#include &quot;kis_brush_option.h&quot;<br>
+<br>
+struct BrushReader {<br>
+      BrushReader(const KisBrushBasedPaintOpSettings *parent)<br>
+            : m_parent(parent)<br>
+      {<br>
+            m_option.readOptionSetting(m_p<wbr>arent, false);<br>
+      }<br>
+<br>
+      KisBrushSP brush() {<br>
+            return m_option.brush();<br>
+      }<br>
+<br>
+      const KisBrushBasedPaintOpSettings *m_parent;<br>
+      KisBrushOption m_option;<br>
+};<br>
+<br>
+struct BrushWriter {<br>
+      BrushWriter(KisBrushBasedPaint<wbr>OpSettings *parent)<br>
+            : m_parent(parent)<br>
+      {<br>
+            m_option.readOptionSetting(m_p<wbr>arent, false);<br>
+      }<br>
+<br>
+      ~BrushWriter() {<br>
+            m_option.writeOptionSetting(m_<wbr>parent);<br>
+      }<br>
+<br>
+      KisBrushSP brush() {<br>
+            return m_option.brush();<br>
+      }<br>
+<br>
+      KisBrushBasedPaintOpSettings *m_parent;<br>
+      KisBrushOption m_option;<br>
+};<br>
<br>
<br>
  KisBrushBasedPaintOpSettings:<wbr>:KisBrushBasedPaintOpSettings(<wbr>)<br>
@@ -64,8 +99,10 @@ KisPaintOpSettingsSP KisBrushBasedPaintOpSettings::<wbr>clone() \
const<br> <br>
  KisBrushSP KisBrushBasedPaintOpSettings::<wbr>brush() const<br>
  {<br>
-      KisBrushBasedPaintopOptionWidg<wbr>et *widget = \
                dynamic_cast&lt;KisBrushBasedPain<wbr>topOptionWidget*&gt;(<wbr>optionsWidget());<br>
                
-      return widget ? widget-&gt;brush() : m_savedBrush;<br>
+      BrushReader w(this);<br>
+      if (!w.brush()) return 0;<br>
+<br>
+      return w.brush();<br>
  }<br>
<br>
  QPainterPath KisBrushBasedPaintOpSettings::<wbr>brushOutlineImpl(const \
KisPaintInformation &amp;info,<br> @@ -125,47 +162,6 @@ bool \
                KisBrushBasedPaintOpSettings::<wbr>isLoadable()<br>
        return (KisBrushServer::instance()-&gt;b<wbr>rushServer()-&gt;resources().coun<wbr>t() \
&gt; 0);<br>  }<br>
<br>
-struct BrushReader {<br>
-      BrushReader(const KisBrushBasedPaintOpSettings *parent)<br>
-            : m_parent(parent)<br>
-      {<br>
-            if (m_parent-&gt;optionsWidget()) {<br>
-                  KisSignalsBlocker b(m_parent-&gt;optionsWidget());<br>
-                  m_parent-&gt;optionsWidget()-&gt;set<wbr>ConfigurationSafe(m_parent);<br>
                
-            } else {<br>
-                  m_parent = 0;<br>
-            }<br>
-      }<br>
-<br>
-      KisBrushSP brush() {<br>
-            return m_parent ? m_parent-&gt;brush() : 0;<br>
-      }<br>
-<br>
-      const KisBrushBasedPaintOpSettings *m_parent;<br>
-};<br>
-<br>
-struct BrushWriter {<br>
-      BrushWriter(KisBrushBasedPaint<wbr>OpSettings *parent)<br>
-            : m_parent(parent)<br>
-      {<br>
-            if (!m_parent-&gt;optionsWidget()) {<br>
-                  m_parent = 0;<br>
-            }<br>
-      }<br>
-<br>
-      ~BrushWriter() {<br>
-            if (m_parent &amp;&amp; m_parent-&gt;optionsWidget()) {<br>
-                  m_parent-&gt;optionsWidget()-&gt;wri<wbr>teConfigurationSafe(m_parent);<br>
                
-            }<br>
-      }<br>
-<br>
-      KisBrushSP brush() {<br>
-            return m_parent ? m_parent-&gt;brush() : 0;<br>
-      }<br>
-<br>
-      KisBrushBasedPaintOpSettings *m_parent;<br>
-};<br>
-<br>
  void KisBrushBasedPaintOpSettings::<wbr>setAngle(qreal value)<br>
  {<br>
        BrushWriter w(this);<br>
@@ -216,6 +212,23 @@ qreal KisBrushBasedPaintOpSettings::<wbr>autoSpacingCoeff() \
const<br>  return w.brush()-&gt;autoSpacingCoeff();<br>
  }<br>
<br>
+void KisBrushBasedPaintOpSettings::<wbr>setPaintOpSize(qreal value)<br>
+{<br>
+      BrushWriter w(this);<br>
+      if (!w.brush()) return;<br>
+<br>
+      w.brush()-&gt;setUserEffectiveSiz<wbr>e(value);<br>
+}<br>
+<br>
+qreal KisBrushBasedPaintOpSettings::<wbr>paintOpSize() const<br>
+{<br>
+      BrushReader w(this);<br>
+      if (!w.brush()) return 0.0;<br>
+<br>
+      return w.brush()-&gt;userEffectiveSize()<wbr>;<br>
+}<br>
+<br>
+<br>
<br>
  #include &lt;brushengine/kis_slider_based_<wbr>paintop_property.h&gt;<br>
  #include &quot;kis_paintop_preset.h&quot;<br>
diff --git a/plugins/paintops/libpaintop/<wbr>kis_brush_based_paintop_settin<wbr>gs.h \
b/plugins/paintops/libpaintop/<wbr>kis_brush_based_paintop_settin<wbr>gs.h<br> index \
                5a6d1b6..d065b61 100644<br>
--- a/plugins/paintops/libpaintop/<wbr>kis_brush_based_paintop_settin<wbr>gs.h<br>
+++ b/plugins/paintops/libpaintop/<wbr>kis_brush_based_paintop_settin<wbr>gs.h<br>
@@ -63,6 +63,8 @@ public:<br>
        bool autoSpacingActive() const;<br>
        qreal autoSpacingCoeff() const;<br>
<br>
+      void setPaintOpSize(qreal value);<br>
+      qreal paintOpSize() const;<br>
<br>
        QList&lt;KisUniformPaintOpProper<wbr>tySP&gt; uniformProperties();<br>
<br>
diff --git a/plugins/paintops/libpaintop/<wbr>kis_brush_option_widget.cpp \
b/plugins/paintops/libpaintop/<wbr>kis_brush_option_widget.cpp<br> index \
                7ac9c0d..bce0a15 100644<br>
--- a/plugins/paintops/libpaintop/<wbr>kis_brush_option_widget.cpp<br>
+++ b/plugins/paintops/libpaintop/<wbr>kis_brush_option_widget.cpp<br>
@@ -93,17 +93,6 @@ void \
KisBrushOptionWidget::lodLimit<wbr>ations(KisPaintopLodLimitation<wbr>s *l) const<br> \
brush-&gt;lodLimitations(l);<br>  }<br>
<br>
-void KisBrushOptionWidget::setBrush<wbr>Size(qreal dxPixels, qreal dyPixels)<br>
-{<br>
-      m_brushSelectionWidget-&gt;setBru<wbr>shSize(dxPixels, dyPixels);<br>
-}<br>
-<br>
-<br>
-QSizeF KisBrushOptionWidget::brushSiz<wbr>e() const<br>
-{<br>
-      return m_brushSelectionWidget-&gt;brushS<wbr>ize();<br>
-}<br>
-<br>
  void KisBrushOptionWidget::brushCha<wbr>nged()<br>
  {<br>
        m_brushOption.setBrush(brush(<wbr>));<br>
diff --git a/plugins/paintops/libpaintop/<wbr>kis_brush_option_widget.h \
b/plugins/paintops/libpaintop/<wbr>kis_brush_option_widget.h<br> index \
                0c230fc..041b5b6 100644<br>
--- a/plugins/paintops/libpaintop/<wbr>kis_brush_option_widget.h<br>
+++ b/plugins/paintops/libpaintop/<wbr>kis_brush_option_widget.h<br>
@@ -57,9 +57,6 @@ public:<br>
<br>
        void lodLimitations(KisPaintopLodLi<wbr>mitations *l) const;<br>
<br>
-      void setBrushSize(qreal dxPixels, qreal dyPixels);<br>
-      QSizeF brushSize() const;<br>
-<br>
        bool presetIsValid();<br>
<br>
  private Q_SLOTS:<br>
diff --git a/plugins/paintops/libpaintop/<wbr>kis_brush_selection_widget.cpp \
b/plugins/paintops/libpaintop/<wbr>kis_brush_selection_widget.cpp<br> index \
                9456146..642ad7a 100644<br>
--- a/plugins/paintops/libpaintop/<wbr>kis_brush_selection_widget.cpp<br>
+++ b/plugins/paintops/libpaintop/<wbr>kis_brush_selection_widget.cpp<br>
@@ -175,51 +175,6 @@ void KisBrushSelectionWidget::setCu<wbr>rrentBrush(KisBrushSP \
brush)<br> <br>
  }<br>
<br>
-void KisBrushSelectionWidget::setBr<wbr>ushSize(qreal dxPixels, qreal dyPixels)<br>
-{<br>
-      if (m_buttonGroup-&gt;checkedId() == AUTOBRUSH) {<br>
-            m_autoBrushWidget-&gt;setBrushSiz<wbr>e(dxPixels, dyPixels);<br>
-      }<br>
-      else if (m_buttonGroup-&gt;checkedId() == PREDEFINEDBRUSH) {<br>
-            m_brushChooser-&gt;setBrushSize(d<wbr>xPixels, dyPixels);<br>
-      }<br>
-      else if (m_buttonGroup-&gt;checkedId() == CUSTOMBRUSH ||<br>
-                       m_buttonGroup-&gt;checkedId() == CLIPBOARDBRUSH) {<br>
-<br>
-            // switch to the predefined brush and resize it<br>
-            KisBrushSP brush = this-&gt;brush();<br>
-            if (brush) {<br>
-                  setCurrentWidget(m_brushChoose<wbr>r);<br>
-                  m_brushChooser-&gt;setBrush(brush<wbr>);<br>
-                  m_brushChooser-&gt;setBrushSize(d<wbr>xPixels, dyPixels);<br>
-            }<br>
-      }<br>
-      if(m_precisionOption.autoPreci<wbr>sionEnabled())<br>
-      {<br>
-            m_precisionOption.setAutoPreci<wbr>sion(this-&gt;brushSize().width()<wbr>);<br>
                
-            uiWdgBrushChooser.lblPrecision<wbr>Value-&gt;setText(&quot;Precision:&quot;+<wbr>QString::number(m_precisionOpt<wbr>ion.precisionLevel()));<br>
                
-            emit sigPrecisionChanged();<br>
-      }<br>
-}<br>
-<br>
-<br>
-QSizeF KisBrushSelectionWidget::brush<wbr>Size() const<br>
-{<br>
-      if (m_buttonGroup-&gt;checkedId() == AUTOBRUSH) {<br>
-            return m_autoBrushWidget-&gt;brushSize()<wbr>;<br>
-      }<br>
-      else if (KisBrushSP brush = this-&gt;brush()) {<br>
-            qreal width = brush-&gt;width() * brush-&gt;scale();<br>
-            qreal height = brush-&gt;height() * brush-&gt;scale();<br>
-            return QSizeF(width, height);<br>
-      }<br>
-<br>
-      // return neutral value<br>
-      return QSizeF(1.0, 1.0);<br>
-}<br>
-<br>
-<br>
-<br>
  void KisBrushSelectionWidget::butto<wbr>nClicked(int id)<br>
  {<br>
        setCurrentWidget(m_<wbr>chooserMap[id]);<br>
@@ -336,7 +291,7 @@ void KisBrushSelectionWidget::setAu<wbr>toPrecisionEnabled(int \
value)<br>  m_precisionOption.setAutoPrec<wbr>isionEnabled(value);<br>
        if(m_precisionOption.autoPrec<wbr>isionEnabled())<br>
        {<br>
-            m_precisionOption.setAutoPreci<wbr>sion(this-&gt;brushSize().height(<wbr>));<br>
 +            m_precisionOption.setAutoPreci<wbr>sion(brush()-&gt;width());<br>
              setPrecisionEnabled(false);<br>
              precisionChanged(m_precisionO<wbr>ption.precisionLevel());<br>
              uiWdgBrushChooser.label-&gt;setV<wbr>isible(true);<br>
diff --git a/plugins/paintops/libpaintop/<wbr>kis_brush_selection_widget.h \
b/plugins/paintops/libpaintop/<wbr>kis_brush_selection_widget.h<br> index \
                8f187bd..38bb26d 100644<br>
--- a/plugins/paintops/libpaintop/<wbr>kis_brush_selection_widget.h<br>
+++ b/plugins/paintops/libpaintop/<wbr>kis_brush_selection_widget.h<br>
@@ -57,8 +57,6 @@ public:<br>
<br>
        void setCurrentBrush(KisBrushSP brush);<br>
<br>
-      void setBrushSize(qreal dxPixels, qreal dyPixels);<br>
-      QSizeF brushSize() const;<br>
        bool presetIsValid() {<br>
              return m_presetIsValid;<br>
        }<br>
diff --git a/plugins/paintops/particle/ki<wbr>s_particle_paintop_settings.h \
b/plugins/paintops/particle/ki<wbr>s_particle_paintop_settings.h<br> index \
                7062770..0f01a6e 100644<br>
--- a/plugins/paintops/particle/ki<wbr>s_particle_paintop_settings.h<br>
+++ b/plugins/paintops/particle/ki<wbr>s_particle_paintop_settings.h<br>
@@ -20,10 +20,10 @@<br>
  #define KIS_PARTICLE_PAINTOP_SETTINGS_<wbr>H_<br>
<br>
  #include &lt;QScopedPointer&gt;<br>
-#include &lt;brushengine/kis_paintop_setti<wbr>ngs.h&gt;<br>
+#include &lt;brushengine/kis_no_size_paint<wbr>op_settings.h&gt;<br>
  #include &lt;kis_types.h&gt;<br>
<br>
-class KisParticlePaintOpSettings : public KisPaintOpSettings<br>
+class KisParticlePaintOpSettings : public KisNoSizePaintOpSettings<br>
  {<br>
<br>
  public:<br>
diff --git a/plugins/paintops/spray/kis_s<wbr>pray_paintop_settings.cpp \
b/plugins/paintops/spray/kis_s<wbr>pray_paintop_settings.cpp<br> index \
                4706ba8..3b3f393 100644<br>
--- a/plugins/paintops/spray/kis_s<wbr>pray_paintop_settings.cpp<br>
+++ b/plugins/paintops/spray/kis_s<wbr>pray_paintop_settings.cpp<br>
@@ -43,6 +43,23 @@ KisSprayPaintOpSettings::~KisS<wbr>prayPaintOpSettings()<br>
  {<br>
  }<br>
<br>
+void KisSprayPaintOpSettings::setPa<wbr>intOpSize(qreal value)<br>
+{<br>
+      KisSprayProperties option;<br>
+      option.readOptionSetting(this)<wbr>;<br>
+      option.diameter = value;<br>
+      option.writeOptionSetting(this<wbr>);<br>
+}<br>
+<br>
+qreal KisSprayPaintOpSettings::paint<wbr>OpSize() const<br>
+{<br>
+<br>
+      KisSprayProperties option;<br>
+      option.readOptionSetting(this)<wbr>;<br>
+<br>
+      return option.diameter;<br>
+}<br>
+<br>
  bool KisSprayPaintOpSettings::paint<wbr>Incremental()<br>
  {<br>
        return (enumPaintActionType)getInt(&quot;P<wbr>aintOpAction&quot;, WASH) == \
BUILDUP;<br> @@ -80,7 +97,6 @@ QPainterPath \
KisSprayPaintOpSettings::brush<wbr>Outline(const KisPaintInformation &amp;in<br>  \
#include &lt;brushengine/kis_slider_based_<wbr>paintop_property.h&gt;<br>  #include \
&quot;kis_paintop_preset.h&quot;<br>  #include \
                &quot;kis_paintop_settings_update_p<wbr>roxy.h&quot;<br>
-#include &quot;kis_sprayop_option.h&quot;<br>
  #include &quot;kis_standard_uniform_properti<wbr>es_factory.h&quot;<br>
  typedef KisCallbackBasedPaintopPropert<wbr>y&lt;KisUniformPaintOpProperty&gt; \
KisUniformPaintOpPropertyCallb<wbr>ack;<br> <br>
diff --git a/plugins/paintops/spray/kis_s<wbr>pray_paintop_settings.h \
b/plugins/paintops/spray/kis_s<wbr>pray_paintop_settings.h<br> index 9da8eca..da75cd9 \
                100644<br>
--- a/plugins/paintops/spray/kis_s<wbr>pray_paintop_settings.h<br>
+++ b/plugins/paintops/spray/kis_s<wbr>pray_paintop_settings.h<br>
@@ -21,7 +21,7 @@<br>
<br>
  #include &lt;QScopedPointer&gt;<br>
<br>
-#include &lt;brushengine/kis_paintop_setti<wbr>ngs.h&gt;<br>
+#include &lt;brushengine/kis_no_size_paint<wbr>op_settings.h&gt;<br>
  #include &lt;kis_types.h&gt;<br>
<br>
  #include &lt;kis_outline_generation_policy<wbr>.h&gt;<br>
@@ -34,6 +34,9 @@ public:<br>
        KisSprayPaintOpSettings();<br>
        ~KisSprayPaintOpSettings();<br>
<br>
+      void setPaintOpSize(qreal value) Q_DECL_OVERRIDE;<br>
+      qreal paintOpSize() const Q_DECL_OVERRIDE;<br>
+<br>
<br>
        QPainterPath brushOutline(const KisPaintInformation &amp;info, OutlineMode \
mode) const;<br> <br>
diff --git a/plugins/paintops/spray/kis_s<wbr>pray_paintop_settings_widget.c<wbr>pp \
b/plugins/paintops/spray/kis_s<wbr>pray_paintop_settings_widget.c<wbr>pp<br> index \
                d12db67..e0acfce 100644<br>
--- a/plugins/paintops/spray/kis_s<wbr>pray_paintop_settings_widget.c<wbr>pp<br>
+++ b/plugins/paintops/spray/kis_s<wbr>pray_paintop_settings_widget.c<wbr>pp<br>
@@ -65,16 +65,3 @@ KisPropertiesConfiguration*   \
KisSprayPaintOpSettingsWidget:<wbr>:configuration() cons<br>  \
writeConfiguration(config);<br>  return config;<br>
  }<br>
-<br>
-void KisSprayPaintOpSettingsWidget:<wbr>:changePaintOpSize(qreal x, qreal y)<br>
-{<br>
-      Q_UNUSED(y);<br>
-      m_sprayArea-&gt;setDiameter(m_spr<wbr>ayArea-&gt;diameter() + qRound(x));<br>
-}<br>
-<br>
-QSizeF KisSprayPaintOpSettingsWidget:<wbr>:paintOpSize() const<br>
-{<br>
-      qreal width = m_sprayArea-&gt;diameter();<br>
-      qreal height = width * m_sprayArea-&gt;brushAspect();<br>
-      return QSizeF(width, height);<br>
-}<br>
diff --git a/plugins/paintops/spray/kis_s<wbr>pray_paintop_settings_widget.h \
b/plugins/paintops/spray/kis_s<wbr>pray_paintop_settings_widget.h<br> index \
                9f3fef7..601c7a1 100644<br>
--- a/plugins/paintops/spray/kis_s<wbr>pray_paintop_settings_widget.h<br>
+++ b/plugins/paintops/spray/kis_s<wbr>pray_paintop_settings_widget.h<br>
@@ -31,9 +31,6 @@ public:<br>
        <wbr>KisSprayPaintOpSettingsWidget(<wbr>QWidget* parent = 0);<br>
        virtual ~KisSprayPaintOpSettingsWidget<wbr>();<br>
<br>
-<br>
-      virtual void changePaintOpSize(qreal x, qreal y);<br>
-      virtual QSizeF paintOpSize() const;<br>
        KisPropertiesConfiguration* configuration() const;<br>
<br>
  public:<br>
<br>
</blockquote></div><br></div>
</div></div></blockquote></div><br><br clear="all"><br>-- <br><div \
class="gmail_signature" data-smartmail="gmail_signature">Dmitry Kazakov</div> </div>



[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic