Skip to content

Commit 7a2302d

Browse files
committed
Use better approach to set dock visibility shortcuts
Instead of just showing/hiding the dock, use the toggleUserVisible method instead. This means that open docks, which are however hidden behind a different tab, aren't closed, but instead are brought forward to be user visible.
1 parent a2ef677 commit 7a2302d

File tree

1 file changed

+56
-10
lines changed

1 file changed

+56
-10
lines changed

src/app/qgisapp.cpp

Lines changed: 56 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -834,7 +834,11 @@ QgisApp::QgisApp( QSplashScreen *splash, bool restorePlugins, bool skipVersionCh
834834
// create undo widget
835835
startProfile( QStringLiteral( "Undo dock" ) );
836836
mUndoDock = new QgsDockWidget( tr( "Undo/Redo" ), this );
837-
mUndoDock->toggleViewAction()->setShortcut( tr( "Ctrl+5", "Keyboard shortcut: Show undo/redo panel." ) );
837+
QShortcut *showUndoDock = new QShortcut( QKeySequence( tr( "Ctrl+5" ) ), this );
838+
connect( showUndoDock, &QShortcut::activated, mUndoDock, &QgsDockWidget::toggleUserVisible );
839+
showUndoDock->setObjectName( QStringLiteral( "ShowUndoPanel" ) );
840+
showUndoDock->setWhatsThis( tr( "Show Undo/Redo Panel" ) );
841+
838842
mUndoWidget = new QgsUndoWidget( mUndoDock, mMapCanvas );
839843
mUndoWidget->setObjectName( QStringLiteral( "Undo" ) );
840844
mUndoDock->setWidget( mUndoWidget );
@@ -845,23 +849,38 @@ QgisApp::QgisApp( QSplashScreen *splash, bool restorePlugins, bool skipVersionCh
845849
startProfile( QStringLiteral( "Advanced digitize panel" ) );
846850
mAdvancedDigitizingDockWidget = new QgsAdvancedDigitizingDockWidget( mMapCanvas, this );
847851
mAdvancedDigitizingDockWidget->setWindowTitle( tr( "Advanced Digitizing" ) );
848-
mAdvancedDigitizingDockWidget->toggleViewAction()->setShortcut( tr( "Ctrl+4", "Keyboard shortcut: Show advanced digitizing panel." ) );
849852
mAdvancedDigitizingDockWidget->setObjectName( QStringLiteral( "AdvancedDigitizingTools" ) );
853+
854+
QShortcut *showAdvancedDigitizingDock = new QShortcut( QKeySequence( tr( "Ctrl+4" ) ), this );
855+
connect( showAdvancedDigitizingDock, &QShortcut::activated, mAdvancedDigitizingDockWidget, &QgsDockWidget::toggleUserVisible );
856+
showAdvancedDigitizingDock->setObjectName( QStringLiteral( "ShowAdvancedDigitizingPanel" ) );
857+
showAdvancedDigitizingDock->setWhatsThis( tr( "Show Advanced Digitizing Panel" ) );
858+
850859
endProfile();
851860

852861
// Statistical Summary dock
853862
startProfile( QStringLiteral( "Stats dock" ) );
854863
mStatisticalSummaryDockWidget = new QgsStatisticalSummaryDockWidget( this );
855864
mStatisticalSummaryDockWidget->setObjectName( QStringLiteral( "StatistalSummaryDockWidget" ) );
856-
mStatisticalSummaryDockWidget->toggleViewAction()->setShortcut( tr( "Ctrl+6", "Keyboard shortcut: Show statisics panel." ) );
865+
866+
QShortcut *showStatsDock = new QShortcut( QKeySequence( tr( "Ctrl+6" ) ), this );
867+
connect( showStatsDock, &QShortcut::activated, mStatisticalSummaryDockWidget, &QgsDockWidget::toggleUserVisible );
868+
showStatsDock->setObjectName( QStringLiteral( "ShowStatisticsPanel" ) );
869+
showStatsDock->setWhatsThis( tr( "Show Statistics Panel" ) );
870+
857871
connect( mStatisticalSummaryDockWidget, &QDockWidget::visibilityChanged, mActionStatisticalSummary, &QAction::setChecked );
858872
endProfile();
859873

860874
// Bookmarks dock
861875
startProfile( QStringLiteral( "Bookmarks widget" ) );
862876
mBookMarksDockWidget = new QgsBookmarks( this );
863877
mBookMarksDockWidget->setObjectName( QStringLiteral( "BookmarksDockWidget" ) );
864-
mBookMarksDockWidget->toggleViewAction()->setShortcut( tr( "Ctrl+7", "Keyboard shortcut: Show bookmarks panel." ) );
878+
879+
QShortcut *showBookmarksDock = new QShortcut( QKeySequence( tr( "Ctrl+7" ) ), this );
880+
connect( showBookmarksDock, &QShortcut::activated, mBookMarksDockWidget, &QgsDockWidget::toggleUserVisible );
881+
showBookmarksDock->setObjectName( QStringLiteral( "ShowBookmarksPanel" ) );
882+
showBookmarksDock->setWhatsThis( tr( "Show Bookmarks Panel" ) );
883+
865884
connect( mBookMarksDockWidget, &QDockWidget::visibilityChanged, mActionShowBookmarks, &QAction::setChecked );
866885
endProfile();
867886

@@ -931,9 +950,13 @@ QgisApp::QgisApp( QSplashScreen *splash, bool restorePlugins, bool skipVersionCh
931950

932951
startProfile( QStringLiteral( "Layer Style dock" ) );
933952
mMapStylingDock = new QgsDockWidget( this );
934-
mMapStylingDock->toggleViewAction()->setShortcut( tr( "Ctrl+3", "Keyboard shortcut: Show style panel." ) );
935953
mMapStylingDock->setWindowTitle( tr( "Layer Styling" ) );
936954
mMapStylingDock->setObjectName( QStringLiteral( "LayerStyling" ) );
955+
QShortcut *showStylingDock = new QShortcut( QKeySequence( tr( "Ctrl+3" ) ), this );
956+
connect( showStylingDock, &QShortcut::activated, mMapStylingDock, &QgsDockWidget::toggleUserVisible );
957+
showStylingDock->setObjectName( QStringLiteral( "ShowLayerStylingPanel" ) );
958+
showStylingDock->setWhatsThis( tr( "Show Style Panel" ) );
959+
937960
mMapStyleWidget = new QgsLayerStylingWidget( mMapCanvas, mMapLayerPanelFactories );
938961
mMapStylingDock->setWidget( mMapStyleWidget );
939962
connect( mMapStyleWidget, &QgsLayerStylingWidget::styleChanged, this, &QgisApp::updateLabelToolButtons );
@@ -971,8 +994,13 @@ QgisApp::QgisApp( QSplashScreen *splash, bool restorePlugins, bool skipVersionCh
971994

972995
mBrowserModel = new QgsBrowserModel( this );
973996
mBrowserWidget = new QgsBrowserDockWidget( tr( "Browser" ), mBrowserModel, this );
974-
mBrowserWidget->toggleViewAction()->setShortcut( tr( "Ctrl+2", "Keyboard shortcut: Show browser panel." ) );
975997
mBrowserWidget->setObjectName( QStringLiteral( "Browser" ) );
998+
999+
QShortcut *showBrowserDock = new QShortcut( QKeySequence( tr( "Ctrl+2" ) ), this );
1000+
connect( showBrowserDock, &QShortcut::activated, mBrowserWidget, &QgsDockWidget::toggleUserVisible );
1001+
showBrowserDock->setObjectName( QStringLiteral( "ShowBrowserPanel" ) );
1002+
showBrowserDock->setWhatsThis( tr( "Show Browser Panel" ) );
1003+
9761004
addDockWidget( Qt::LeftDockWidgetArea, mBrowserWidget );
9771005
mBrowserWidget->hide();
9781006
connect( this, &QgisApp::newProject, mBrowserWidget, &QgsBrowserDockWidget::updateProjectHome );
@@ -1004,7 +1032,12 @@ QgisApp::QgisApp( QSplashScreen *splash, bool restorePlugins, bool skipVersionCh
10041032
mpGpsWidget = new QgsGpsInformationWidget( mMapCanvas );
10051033
//create the dock widget
10061034
mpGpsDock = new QgsDockWidget( tr( "GPS Information" ), this );
1007-
mpGpsDock->toggleViewAction()->setShortcut( tr( "Ctrl+0", "Keyboard shortcut: Show GPS information panel." ) );
1035+
1036+
QShortcut *showGpsDock = new QShortcut( QKeySequence( tr( "Ctrl+0" ) ), this );
1037+
connect( showGpsDock, &QShortcut::activated, mpGpsDock, &QgsDockWidget::toggleUserVisible );
1038+
showGpsDock->setObjectName( QStringLiteral( "ShowGpsPanel" ) );
1039+
showGpsDock->setWhatsThis( tr( "Show GPS Information Panel" ) );
1040+
10081041
mpGpsDock->setObjectName( QStringLiteral( "GPSInformation" ) );
10091042
mpGpsDock->setAllowedAreas( Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea );
10101043
addDockWidget( Qt::LeftDockWidgetArea, mpGpsDock );
@@ -3476,7 +3509,12 @@ void QgisApp::createOverview()
34763509
// myOverviewLayout->addWidget(overviewCanvas);
34773510
// overviewFrame->setLayout(myOverviewLayout);
34783511
mOverviewDock = new QgsDockWidget( tr( "Overview" ), this );
3479-
mOverviewDock->toggleViewAction()->setShortcut( tr( "Ctrl+8", "Keyboard shortcut: Show overview panel." ) );
3512+
3513+
QShortcut *showOverviewDock = new QShortcut( QKeySequence( tr( "Ctrl+8" ) ), this );
3514+
connect( showOverviewDock, &QShortcut::activated, mOverviewDock, &QgsDockWidget::toggleUserVisible );
3515+
showOverviewDock->setObjectName( QStringLiteral( "ShowOverviewPanel" ) );
3516+
showOverviewDock->setWhatsThis( tr( "Show Overview Panel" ) );
3517+
34803518
mOverviewDock->setObjectName( QStringLiteral( "Overview" ) );
34813519
mOverviewDock->setAllowedAreas( Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea );
34823520
mOverviewDock->setWidget( mOverviewCanvas );
@@ -3709,10 +3747,14 @@ void QgisApp::initLayerTreeView()
37093747
mLayerTreeView->setWhatsThis( tr( "Map legend that displays all the layers currently on the map canvas. Click on the checkbox to turn a layer on or off. Double-click on a layer in the legend to customize its appearance and set other properties." ) );
37103748

37113749
mLayerTreeDock = new QgsDockWidget( tr( "Layers" ), this );
3712-
mLayerTreeDock->toggleViewAction()->setShortcut( tr( "Ctrl+1", "Keyboard shortcut: Show layers panel." ) );
37133750
mLayerTreeDock->setObjectName( QStringLiteral( "Layers" ) );
37143751
mLayerTreeDock->setAllowedAreas( Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea );
37153752

3753+
QShortcut *showLayersTreeDock = new QShortcut( QKeySequence( tr( "Ctrl+1" ) ), this );
3754+
connect( showLayersTreeDock, &QShortcut::activated, mLayerTreeDock, &QgsDockWidget::toggleUserVisible );
3755+
showLayersTreeDock->setObjectName( QStringLiteral( "ShowLayersPanel" ) );
3756+
showLayersTreeDock->setWhatsThis( tr( "Show Layers Panel" ) );
3757+
37163758
QgsLayerTreeModel *model = new QgsLayerTreeModel( QgsProject::instance()->layerTreeRoot(), this );
37173759
#ifdef ENABLE_MODELTEST
37183760
new ModelTest( model, this );
@@ -3809,10 +3851,14 @@ void QgisApp::initLayerTreeView()
38093851

38103852
mMapLayerOrder->setWhatsThis( tr( "Map layer list that displays all layers in drawing order." ) );
38113853
mLayerOrderDock = new QgsDockWidget( tr( "Layer Order" ), this );
3812-
mLayerOrderDock->toggleViewAction()->setShortcut( tr( "Ctrl+9", "Keyboard shortcut: Show layer order panel." ) );
38133854
mLayerOrderDock->setObjectName( QStringLiteral( "LayerOrder" ) );
38143855
mLayerOrderDock->setAllowedAreas( Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea );
38153856

3857+
QShortcut *showLayerOrderDock = new QShortcut( QKeySequence( tr( "Ctrl+9" ) ), this );
3858+
connect( showLayerOrderDock, &QShortcut::activated, mLayerOrderDock, &QgsDockWidget::toggleUserVisible );
3859+
showLayerOrderDock->setObjectName( QStringLiteral( "ShowLayerOrderPanel" ) );
3860+
showLayerOrderDock->setWhatsThis( tr( "Show Layer Order Panel" ) );
3861+
38163862
mLayerOrderDock->setWidget( mMapLayerOrder );
38173863
addDockWidget( Qt::LeftDockWidgetArea, mLayerOrderDock );
38183864
mLayerOrderDock->hide();

0 commit comments

Comments
 (0)