Skip to content

Commit 018afc7

Browse files
committedJun 2, 2017
[addlayerbutton] Larry Shaffer's fix to the raster button
Tricky solution, but temporary
1 parent 8db19b2 commit 018afc7

File tree

2 files changed

+16
-10
lines changed

2 files changed

+16
-10
lines changed
 

‎src/app/qgsdatasourcemanagerdialog.cpp

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ QgsDataSourceManagerDialog::QgsDataSourceManagerDialog( QgsMapCanvas *mapCanvas,
3131
QgsOptionsDialogBase( QStringLiteral( "Data Source Manager" ), parent, fl ),
3232
ui( new Ui::QgsDataSourceManagerDialog ),
3333
mMapCanvas( mapCanvas ),
34-
mPreviousCurrentRow( -1 )
34+
mPreviousRow( -1 )
3535
{
3636

3737
ui->setupUi( this );
@@ -57,21 +57,20 @@ QgsDataSourceManagerDialog::QgsDataSourceManagerDialog( QgsMapCanvas *mapCanvas,
5757
connect( ovl, &QgsOpenVectorLayerDialog::addVectorLayers, this, &QgsDataSourceManagerDialog::vectorLayersAdded );
5858

5959
// RASTER (forward to app)
60+
// Note: the tricky solution here will not last long: the browser button is really the
61+
// first that will disappear because its functionality can be replaced completely
62+
// right now by the browser
6063
ui->mOptionsStackedWidget->addWidget( new QWidget() );
6164
QListWidgetItem *rasterItem = new QListWidgetItem( tr( "Raster" ), ui->mOptionsListWidget );
6265
rasterItem->setIcon( QgsApplication::getThemeIcon( QStringLiteral( "/mActionAddRasterLayer.svg" ) ) );
6366
rasterItem->setToolTip( tr( "Open a GDAL Supported Raster Data Source" ) );
6467
connect( ui->mOptionsListWidget, &QListWidget::currentRowChanged, this, [ = ]( int idx )
6568
{
6669
Q_UNUSED( idx );
67-
if ( rasterItem->isSelected( ) )
70+
if ( rasterItem->isSelected() )
6871
{
6972
emit addRasterLayer();
70-
int prevPage = mPreviousCurrentRow != -1 ? mPreviousCurrentRow : 0;
71-
ui->mOptionsListWidget->setCurrentRow( prevPage );
72-
ui->mOptionsListWidget->item( prevPage )->setSelected( true );
73-
ui->mOptionsListWidget->setFocus();
74-
setCurrentPage( prevPage );
73+
QTimer::singleShot( 0, this, &QgsDataSourceManagerDialog::setPreviousPage );
7574
}
7675
} );
7776

@@ -135,7 +134,6 @@ QgsDataSourceManagerDialog::QgsDataSourceManagerDialog( QgsMapCanvas *mapCanvas,
135134
connect( dlg, SIGNAL( replaceVectorLayer( QString, QString, QString, QString ) ), this, SIGNAL( replaceSelectedVectorLayer( QString, QString, QString, QString ) ) );
136135
}
137136

138-
139137
}
140138

141139
QgsDataSourceManagerDialog::~QgsDataSourceManagerDialog()
@@ -145,11 +143,17 @@ QgsDataSourceManagerDialog::~QgsDataSourceManagerDialog()
145143

146144
void QgsDataSourceManagerDialog::setCurrentPage( int index )
147145
{
148-
mPreviousCurrentRow = ui->mOptionsStackedWidget->currentIndex( );
146+
mPreviousRow = ui->mOptionsStackedWidget->currentIndex( );
149147
ui->mOptionsStackedWidget->setCurrentIndex( index );
150148
setWindowTitle( tr( "Data Source Manager | %1" ).arg( ui->mOptionsListWidget->currentItem()->text( ) ) );
151149
}
152150

151+
void QgsDataSourceManagerDialog::setPreviousPage()
152+
{
153+
int prevPage = mPreviousRow != -1 ? mPreviousRow : 0;
154+
setCurrentPage( prevPage );
155+
}
156+
153157
void QgsDataSourceManagerDialog::rasterLayerAdded( const QString &uri, const QString &baseName, const QString &providerKey )
154158
{
155159
emit( addRasterLayer( uri, baseName, providerKey ) );

‎src/app/qgsdatasourcemanagerdialog.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,8 @@ class QgsDataSourceManagerDialog : public QgsOptionsDialogBase
5050
void vectorLayerAdded( const QString &vectorLayerPath, const QString &baseName, const QString &providerKey );
5151
void vectorLayersAdded( const QStringList &layerQStringList, const QString &enc, const QString &dataSourceType );
5252
void on_buttonBox_helpRequested() { QgsHelp::openHelp( QStringLiteral( "TODO_PLACEHOLDER.html" ) ); }
53+
//! Reset current page to previously selected page
54+
void setPreviousPage();
5355

5456
signals:
5557
//! For signal forwarding to QgisApp
@@ -74,7 +76,7 @@ class QgsDataSourceManagerDialog : public QgsOptionsDialogBase
7476
QgsBrowserDockWidget *mBrowserWidget = nullptr;
7577
//! Map canvas
7678
QgsMapCanvas *mMapCanvas = nullptr;
77-
int mPreviousCurrentRow;
79+
int mPreviousRow;
7880
};
7981

8082
#endif // QGSDATASOURCEMANAGERDIALOG_H

0 commit comments

Comments
 (0)
Please sign in to comment.