diff --git a/src/Editor/PropertyEdit/CPropertyDelegate.cpp b/src/Editor/PropertyEdit/CPropertyDelegate.cpp index 95af6aad..c2abb066 100644 --- a/src/Editor/PropertyEdit/CPropertyDelegate.cpp +++ b/src/Editor/PropertyEdit/CPropertyDelegate.cpp @@ -458,7 +458,7 @@ void CPropertyDelegate::setModelData(QWidget *pEditor, QAbstractItemModel* /*pMo WColorPicker* pColorPicker = static_cast(pEditor); CColorProperty* pColor = static_cast(pProp); - QColor Color = pColorPicker->Color(); + const QColor& Color = pColorPicker->Color(); pColor->ValueRef(pData) = TO_CCOLOR(Color); break; } diff --git a/src/Editor/Widgets/WColorPicker.cpp b/src/Editor/Widgets/WColorPicker.cpp index b8f0f51b..897dcd4c 100644 --- a/src/Editor/Widgets/WColorPicker.cpp +++ b/src/Editor/Widgets/WColorPicker.cpp @@ -1,8 +1,9 @@ -#include "WColorPicker.h" +#include "Editor/Widgets/WColorPicker.h" + +#include +#include #include #include -#include -#include WColorPicker::WColorPicker(QWidget *parent) : QWidget(parent) @@ -37,18 +38,18 @@ void WColorPicker::paintEvent(QPaintEvent *) void WColorPicker::keyPressEvent(QKeyEvent *pEvent) { - if (pEvent->key() == Qt::Key_Return) - { - QColorDialog ColorPick; - ColorPick.setOptions(QColorDialog::ShowAlphaChannel); - ColorPick.setCurrentColor(mColor); - int result = ColorPick.exec(); + if (pEvent->key() != Qt::Key_Return) + return; - if (result) - { - mColor = ColorPick.currentColor(); - emit ColorChanged(mColor); - } + QColorDialog ColorPick; + ColorPick.setOptions(QColorDialog::ShowAlphaChannel); + ColorPick.setCurrentColor(mColor); + const int result = ColorPick.exec(); + + if (result) + { + mColor = ColorPick.currentColor(); + emit ColorChanged(mColor); } } @@ -60,39 +61,33 @@ void WColorPicker::mousePressEvent(QMouseEvent *) void WColorPicker::mouseReleaseEvent(QMouseEvent *pEvent) { const auto pos = pEvent->position().toPoint(); + if (pos.x() >= width() || pos.y() >= height()) + return; - if (pos.x() < width() && pos.y() < height()) + mOldColor = mColor; + + QColorDialog ColorPick(this); + ColorPick.setOptions(QColorDialog::ShowAlphaChannel); + ColorPick.setCurrentColor(mColor); + connect(&ColorPick, &QColorDialog::currentColorChanged, this, &WColorPicker::DialogColorChanged); + connect(&ColorPick, &QColorDialog::rejected, this, &WColorPicker::DialogRejected); + const int Result = ColorPick.exec(); + + if (Result) { - mOldColor = mColor; - - QColorDialog ColorPick(this); - ColorPick.setOptions(QColorDialog::ShowAlphaChannel); - ColorPick.setCurrentColor(mColor); - connect(&ColorPick, &QColorDialog::currentColorChanged, this, &WColorPicker::DialogColorChanged); - connect(&ColorPick, &QColorDialog::rejected, this, &WColorPicker::DialogRejected); - int Result = ColorPick.exec(); - - if (Result) - { - mColor = ColorPick.currentColor(); - emit ColorEditComplete(mColor); - } + mColor = ColorPick.currentColor(); + emit ColorEditComplete(mColor); } } -QColor WColorPicker::Color() const -{ - return mColor; -} - void WColorPicker::SetColor(const QColor& Color) { - if (mColor != Color) - { - mColor = Color; - emit ColorEditComplete(mColor); - update(); - } + if (mColor == Color) + return; + + mColor = Color; + emit ColorEditComplete(mColor); + update(); } void WColorPicker::DialogColorChanged(const QColor& NewColor) diff --git a/src/Editor/Widgets/WColorPicker.h b/src/Editor/Widgets/WColorPicker.h index c6ebd2c1..a00e0d13 100644 --- a/src/Editor/Widgets/WColorPicker.h +++ b/src/Editor/Widgets/WColorPicker.h @@ -17,7 +17,8 @@ public: void keyPressEvent(QKeyEvent* pEvent) override; void mousePressEvent(QMouseEvent*) override; void mouseReleaseEvent(QMouseEvent* pEvent) override; - QColor Color() const; + + const QColor& Color() const { return mColor; } void SetColor(const QColor& Color); signals: