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);
setWindowFlags(windowFlags() & (~Qt::WindowContextHelpButtonHint));
setAcceptDrops(true);
ui->recentsListWidget->addAction(ui->actionRemove_item);
ui->recentsListWidget->addAction(ui->actionClear_all);
@ -218,6 +219,27 @@ void NewFileDialog::on_actionClear_all_triggered()
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()
{
// Fill list with recent opened files

View File

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