diff --git a/applets/colorpicker/package/contents/ui/main.qml b/applets/colorpicker/package/contents/ui/main.qml --- a/applets/colorpicker/package/contents/ui/main.qml +++ b/applets/colorpicker/package/contents/ui/main.qml @@ -166,11 +166,13 @@ height: buttonSize preventStealing: true // why the hell is hasColor not a property?! - onDragEnter: containsAcceptableDrag = event.mimeData.hasColor() + onDragEnter: containsAcceptableDrag = (event.mimeData.hasColor() || ColorPicker.Utils.isValidColor(event.mimeData.text)) onDragLeave: containsAcceptableDrag = false onDrop: { if (event.mimeData.hasColor()) { addColorToHistory(event.mimeData.color) + } else if (ColorPicker.Utils.isValidColor(event.mimeData.text)) { + addColorToHistory(event.mimeData.text) } containsAcceptableDrag = false } diff --git a/applets/colorpicker/plugin/colorpickerplugin.cpp b/applets/colorpicker/plugin/colorpickerplugin.cpp --- a/applets/colorpicker/plugin/colorpickerplugin.cpp +++ b/applets/colorpicker/plugin/colorpickerplugin.cpp @@ -22,10 +22,32 @@ #include +#include + #include "grabwidget.h" +class Utils : public QObject +{ + Q_OBJECT + +public: + Q_INVOKABLE bool isValidColor(const QString &colorString) const + { + return QColor::isValidColor(colorString); + } + +}; + +static QObject *utils_singletontype_provider(QQmlEngine *, QJSEngine *) +{ + return new Utils(); +} + void ColorPickerPlugin::registerTypes(const char* uri) { Q_ASSERT(uri == QLatin1String("org.kde.plasma.private.colorpicker")); qmlRegisterType(uri, 2, 0, "GrabWidget"); + qmlRegisterSingletonType(uri, 2, 0, "Utils", utils_singletontype_provider); } + +#include "colorpickerplugin.moc"