freetype-commit
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[freetype2-demos] master 2342b6b 18/41: [ftinspect] Support opening file


From: Werner Lemberg
Subject: [freetype2-demos] master 2342b6b 18/41: [ftinspect] Support opening files drag-dropping.
Date: Mon, 3 Oct 2022 11:27:02 -0400 (EDT)

branch: master
commit 2342b6b74ca1c2cddccfda322a5d3923468eb9ec
Author: Charlie Jiang <w@chariri.moe>
Commit: Werner Lemberg <wl@gnu.org>

    [ftinspect] Support opening files drag-dropping.
    
    * src/ftinspect/maingui.cpp, src/ftinspect/maingui.hpp: Add related code.
---
 src/ftinspect/maingui.cpp | 42 ++++++++++++++++++++++++++++++++++++++++++
 src/ftinspect/maingui.hpp |  3 +++
 2 files changed, 45 insertions(+)

diff --git a/src/ftinspect/maingui.cpp b/src/ftinspect/maingui.cpp
index b797a00..da3bada 100644
--- a/src/ftinspect/maingui.cpp
+++ b/src/ftinspect/maingui.cpp
@@ -11,6 +11,9 @@
 #include <QSettings>
 #include <QScrollBar>
 #include <QStatusBar>
+#include <QMimeData>
+#include <QDragEnterEvent>
+#include <QDropEvent>
 
 
 MainGUI::MainGUI(Engine* engine)
@@ -20,6 +23,7 @@ MainGUI::MainGUI(Engine* engine)
   createConnections();
   createActions();
   createMenus();
+  setupDragDrop();
 
   readSettings();
   setUnifiedTitleAndToolBarOnMac(true);
@@ -46,6 +50,37 @@ MainGUI::closeEvent(QCloseEvent* event)
 }
 
 
+void
+MainGUI::dragEnterEvent(QDragEnterEvent* event)
+{
+  if (event->mimeData()->hasUrls())
+    event->acceptProposedAction();
+}
+
+
+void
+MainGUI::dropEvent(QDropEvent* event)
+{
+  auto mime = event->mimeData();
+  if (!mime->hasUrls())
+    return;
+
+  QStringList fileNames;
+  for (auto& url : mime->urls())
+  {
+    if (!url.isLocalFile())
+      continue;
+    fileNames.append(url.toLocalFile());
+  }
+
+  if (fileNames.empty())
+    return;
+
+  event->acceptProposedAction();
+  openFonts(fileNames);
+}
+
+
 void
 MainGUI::keyPressEvent(QKeyEvent* event)
 {
@@ -282,6 +317,13 @@ MainGUI::createMenus()
 }
 
 
+void
+MainGUI::setupDragDrop()
+{
+  setAcceptDrops(true);
+}
+
+
 void
 MainGUI::readSettings()
 {
diff --git a/src/ftinspect/maingui.hpp b/src/ftinspect/maingui.hpp
index cffc071..18e3c98 100644
--- a/src/ftinspect/maingui.hpp
+++ b/src/ftinspect/maingui.hpp
@@ -41,6 +41,8 @@ public:
 
 protected:
   void closeEvent(QCloseEvent*) override;
+  void dragEnterEvent(QDragEnterEvent* event) override;
+  void dropEvent(QDropEvent* event) override;
   void keyPressEvent(QKeyEvent* event) override;
 
 private slots:
@@ -96,6 +98,7 @@ private:
   void createConnections();
   void createLayout();
   void createMenus();
+  void setupDragDrop();
 
   void readSettings();
   void writeSettings();



reply via email to

[Prev in Thread] Current Thread [Next in Thread]