Allow file selection by drag & drop (#173)

This commit is contained in:
Thomas Roth 2017-12-06 17:25:07 +01:00 committed by Florian Märkl
parent 496cbcfd4d
commit a729568a51
2 changed files with 26 additions and 0 deletions

View File

@ -65,6 +65,7 @@ NewFileDialog::NewFileDialog(QWidget *parent) :
{ {
ui->setupUi(this); ui->setupUi(this);
setWindowFlags(windowFlags() & (~Qt::WindowContextHelpButtonHint)); setWindowFlags(windowFlags() & (~Qt::WindowContextHelpButtonHint));
setAcceptDrops(true);
ui->recentsListWidget->addAction(ui->actionRemove_item); ui->recentsListWidget->addAction(ui->actionRemove_item);
ui->recentsListWidget->addAction(ui->actionClear_all); ui->recentsListWidget->addAction(ui->actionClear_all);
@ -218,6 +219,27 @@ void NewFileDialog::on_actionClear_all_triggered()
ui->newFileEdit->clear(); ui->newFileEdit->clear();
} }
void NewFileDialog::dragEnterEvent(QDragEnterEvent *event)
{
// Accept drag & drop events only if they provide a URL
if(event->mimeData()->hasUrls())
{
event->acceptProposedAction();
}
}
void NewFileDialog::dropEvent(QDropEvent *event)
{
// Accept drag & drop events only if they provide a URL
if(event->mimeData()->urls().count() == 0) {
qWarning() << "No URL in drop event, ignoring it.";
return;
}
event->acceptProposedAction();
loadFile(event->mimeData()->urls().first().path());
}
bool NewFileDialog::fillRecentFilesList() bool NewFileDialog::fillRecentFilesList()
{ {
// Fill list with recent opened files // Fill list with recent opened files

View File

@ -38,6 +38,10 @@ private slots:
void on_actionRemove_item_triggered(); void on_actionRemove_item_triggered();
void on_actionClear_all_triggered(); void on_actionClear_all_triggered();
protected:
void dragEnterEvent(QDragEnterEvent *event);
void dropEvent(QDropEvent *event);
private: private:
std::unique_ptr<Ui::NewFileDialog> ui; std::unique_ptr<Ui::NewFileDialog> ui;