Skip to content

Commit ab46018

Browse files
committedNov 1, 2018
[browser] Don't try to open links within the browser properties widget
Instead open them externally. Fixes clicking on the path link within metadata tries to open layer files instead the text widget instead of showing them in the desktop file browser.
1 parent 3f72e0c commit ab46018

File tree

2 files changed

+20
-0
lines changed

2 files changed

+20
-0
lines changed
 

‎src/gui/qgsbrowserdockwidget_p.cpp

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,9 @@
3838
#include "qgsproject.h"
3939
#include "qgssettings.h"
4040
#include "qgsmeshlayer.h"
41+
#include "qgsgui.h"
42+
#include "qgsnative.h"
43+
#include <QDesktopServices>
4144

4245
#include <QDragEnterEvent>
4346

@@ -115,6 +118,10 @@ QgsBrowserLayerProperties::QgsBrowserLayerProperties( QWidget *parent )
115118

116119
mUriLabel = new QgsBrowserPropertiesWrapLabel( QString(), this );
117120
mHeaderGridLayout->addItem( new QWidgetItem( mUriLabel ), 1, 1 );
121+
122+
// we don't want links to open in the little widget, open them externally instead
123+
mMetadataTextBrowser->setOpenLinks( false );
124+
connect( mMetadataTextBrowser, &QTextBrowser::anchorClicked, this, &QgsBrowserLayerProperties::urlClicked );
118125
}
119126

120127
class ProjectionSettingRestorer
@@ -249,6 +256,15 @@ void QgsBrowserLayerProperties::setCondensedMode( bool condensedMode )
249256
}
250257
}
251258

259+
void QgsBrowserLayerProperties::urlClicked( const QUrl &url )
260+
{
261+
QFileInfo file( url.toLocalFile() );
262+
if ( file.exists() && !file.isDir() )
263+
QgsGui::instance()->nativePlatformInterface()->openFileExplorerAndSelectFile( url.toLocalFile() );
264+
else
265+
QDesktopServices::openUrl( url );
266+
}
267+
252268
QgsBrowserDirectoryProperties::QgsBrowserDirectoryProperties( QWidget *parent )
253269
: QgsBrowserPropertiesWidget( parent )
254270

‎src/gui/qgsbrowserdockwidget_p.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -123,6 +123,10 @@ class QgsBrowserLayerProperties : public QgsBrowserPropertiesWidget, private Ui:
123123
*/
124124
void setCondensedMode( bool condensedMode ) override;
125125

126+
private slots:
127+
128+
void urlClicked( const QUrl &url );
129+
126130
private:
127131
QgsBrowserPropertiesWrapLabel *mUriLabel = nullptr;
128132
};

0 commit comments

Comments
 (0)
Please sign in to comment.