]> Nutra Git (v2) - gamesguru/feather.git/commitdiff
Send: allow pasting monero: uris in pay to field
authortobtoht <tob@featherwallet.org>
Fri, 5 Jan 2024 15:40:08 +0000 (16:40 +0100)
committertobtoht <tob@featherwallet.org>
Fri, 5 Jan 2024 15:40:08 +0000 (16:40 +0100)
src/widgets/PayToEdit.cpp
src/widgets/PayToEdit.h

index b6465061c503a80f73270b1a823a346d298aa7f9..e25f09211c9cf62ec3f5bf9dce716838b9841e77 100644 (file)
@@ -80,22 +80,31 @@ bool PayToEdit::isOpenAlias() {
 
 void PayToEdit::keyPressEvent(QKeyEvent *event) {
     if (event->matches(QKeySequence::Paste)) {
-        this->pasteEvent(QApplication::clipboard()->mimeData());
-        event->accept();
+        bool uri = this->pasteEvent(QApplication::clipboard()->mimeData());
+        if (uri) {
+            event->ignore();
+            return;
+        }
     }
 
     QPlainTextEdit::keyPressEvent(event);
 }
 
-void PayToEdit::pasteEvent(const QMimeData *mimeData) {
+bool PayToEdit::pasteEvent(const QMimeData *mimeData) {
+    if (mimeData->hasText() && mimeData->text().startsWith("monero:")) {
+        dataPasted(mimeData->text());
+        return true;
+    }
+
     QImage image;
     if (mimeData->hasImage()) {
         image = qvariant_cast<QImage>(mimeData->imageData());
     }
     else if (mimeData->hasUrls()) {
+        // Path to image file
         QList<QUrl> urlList = mimeData->urls();
         if (urlList.count() > 1) {
-            return;
+            return false;
         }
         QFileInfo file(urlList.at(0).toLocalFile());
         if (file.exists()) {
@@ -103,12 +112,12 @@ void PayToEdit::pasteEvent(const QMimeData *mimeData) {
         }
     }
     else {
-        return;
+        return false;
     }
 
     if (image.isNull()) {
         qDebug() << "Invalid image";
-        return;
+        return false;
     }
 
 #if defined(WITH_SCANNER)
@@ -116,7 +125,10 @@ void PayToEdit::pasteEvent(const QMimeData *mimeData) {
     QString result = QrCodeUtils::scanImage(image);
 
     dataPasted(result);
+    return true;
 #endif
+
+    return false;
 }
 
 void PayToEdit::checkText() {
index 7e3d78997d61859de54c72f1dd529dbda640f074..f37c469501118620b3b112957d703035b4803974 100644 (file)
@@ -58,7 +58,7 @@ private:
     void checkText();
     void updateSize();
 
-    void pasteEvent(const QMimeData *mimeData);
+    bool pasteEvent(const QMimeData *mimeData);
 
     PartialTxOutput parseAddressAndAmount(const QString &line);
     quint64 parseAmount(QString amount);