From cd4adc3fc445b7c8e41c4a22c62c7df2a2765c40 Mon Sep 17 00:00:00 2001 From: Kurt Hindenburg Date: Tue, 29 Jun 2010 13:50:32 +0000 Subject: [PATCH] Allow the window size and location to be saved per profile. Patch is from Gentoo. BUG: 181129 svn path=/trunk/KDE/kdebase/apps/konsole/; revision=1144208 --- src/EditProfileDialog.cpp | 7 +++++++ src/EditProfileDialog.h | 1 + src/EditProfileDialog.ui | 22 +++++++++++++++++++--- src/MainWindow.cpp | 7 +++++++ src/MainWindow.h | 2 ++ src/Profile.cpp | 2 ++ src/Profile.h | 1 + src/ViewManager.cpp | 2 ++ src/ViewManager.h | 1 + 9 files changed, 42 insertions(+), 3 deletions(-) diff --git a/src/EditProfileDialog.cpp b/src/EditProfileDialog.cpp index 5f208c864..2828cc368 100644 --- a/src/EditProfileDialog.cpp +++ b/src/EditProfileDialog.cpp @@ -253,6 +253,7 @@ void EditProfileDialog::setupGeneralPage(const Profile::Ptr info) // window options _ui->showMenuBarButton->setChecked( info->property(Profile::ShowMenuBar) ); + _ui->saveGeometryOnExitButton->setChecked( info->property(Profile::SaveGeometryOnExit) ); // signals and slots connect( _ui->dirSelectButton , SIGNAL(clicked()) , this , SLOT(selectInitialDir()) ); @@ -268,6 +269,8 @@ void EditProfileDialog::setupGeneralPage(const Profile::Ptr info) connect(_ui->showMenuBarButton , SIGNAL(toggled(bool)) , this , SLOT(showMenuBar(bool)) ); + connect(_ui->saveGeometryOnExitButton , SIGNAL(toggled(bool)) , this , + SLOT(saveGeometryOnExit(bool)) ); connect(_ui->environmentEditButton , SIGNAL(clicked()) , this , SLOT(showEnvironmentEditor()) ); @@ -369,6 +372,10 @@ void EditProfileDialog::showMenuBar(bool show) { _tempProfile->setProperty(Profile::ShowMenuBar,show); } +void EditProfileDialog::saveGeometryOnExit(bool save) +{ + _tempProfile->setProperty(Profile::SaveGeometryOnExit,save); +} void EditProfileDialog::tabTitleFormatChanged(const QString& format) { _tempProfile->setProperty(Profile::LocalTabTitleFormat,format); diff --git a/src/EditProfileDialog.h b/src/EditProfileDialog.h index d85d46823..e37c77efd 100644 --- a/src/EditProfileDialog.h +++ b/src/EditProfileDialog.h @@ -120,6 +120,7 @@ private slots: void insertRemoteTabTitleText(const QString& text); void showMenuBar(bool); + void saveGeometryOnExit(bool); void showEnvironmentEditor(); void tabBarVisibilityChanged(int); void tabBarPositionChanged(int); diff --git a/src/EditProfileDialog.ui b/src/EditProfileDialog.ui index 92c7615c0..85900fdef 100644 --- a/src/EditProfileDialog.ui +++ b/src/EditProfileDialog.ui @@ -228,9 +228,25 @@ - - - + + + + + 0 + 0 + + + + Set the window size and position for this profile when exiting + + + Save window size and position on exit + + + + + + diff --git a/src/MainWindow.cpp b/src/MainWindow.cpp index e4240442d..d8c54dd92 100644 --- a/src/MainWindow.cpp +++ b/src/MainWindow.cpp @@ -91,6 +91,8 @@ MainWindow::MainWindow() connect( _viewManager , SIGNAL(setMenuBarVisibleRequest(bool)) , this , SLOT(setMenuBarVisibleOnce(bool)) ); + connect( _viewManager , SIGNAL(setSaveGeometryOnExitRequest(bool)) , this , + SLOT(setSaveGeometryOnExit(bool)) ); connect( _viewManager , SIGNAL(newViewRequest(Profile::Ptr)) , this , SLOT(newFromProfile(Profile::Ptr)) ); connect( _viewManager , SIGNAL(newViewRequest()) , @@ -141,6 +143,11 @@ void MainWindow::setMenuBarVisibleOnce(bool visible) _menuBarVisibilitySet = true; } +void MainWindow::setSaveGeometryOnExit(bool save) +{ + setAutoSaveSettings("MainWindow",save); +} + void MainWindow::correctShortcuts() { // replace F1 shortcut for help contents diff --git a/src/MainWindow.h b/src/MainWindow.h index 0e51e5ee9..98ca2a077 100644 --- a/src/MainWindow.h +++ b/src/MainWindow.h @@ -171,6 +171,8 @@ class MainWindow : public KXmlGuiWindow // effect if the menu bar is a MacOS-style top-level menu void setMenuBarVisibleOnce(bool visible); + void setSaveGeometryOnExit(bool visible); + void openUrls(const QList& urls); private: diff --git a/src/Profile.cpp b/src/Profile.cpp index f0d2147ba..eab73ca25 100644 --- a/src/Profile.cpp +++ b/src/Profile.cpp @@ -76,6 +76,7 @@ const Profile::PropertyInfo Profile::DefaultPropertyNames[] = , { LocalTabTitleFormat , "tabtitle" , 0 , QVariant::String } , { RemoteTabTitleFormat , "RemoteTabTitleFormat" , GENERAL_GROUP , QVariant::String } , { ShowMenuBar , "ShowMenuBar" , GENERAL_GROUP , QVariant::Bool } + , { SaveGeometryOnExit , "SaveGeometryOnExit" , GENERAL_GROUP , QVariant::Bool } , { TabBarMode , "TabBarMode" , GENERAL_GROUP , QVariant::Int } , { TabBarPosition , "TabBarPosition" , GENERAL_GROUP , QVariant::Int } , { StartInCurrentSessionDir , "StartInCurrentSessionDir" , GENERAL_GROUP , QVariant::Bool } @@ -156,6 +157,7 @@ FallbackProfile::FallbackProfile() setProperty(TabBarMode,AlwaysShowTabBar); setProperty(TabBarPosition,TabBarBottom); setProperty(ShowMenuBar,true); + setProperty(SaveGeometryOnExit,true); setProperty(StartInCurrentSessionDir,true); setProperty(ShowNewAndCloseTabButtons,false); setProperty(MenuIndex,"0"); diff --git a/src/Profile.h b/src/Profile.h index 4c3b6870b..ff58ce08e 100644 --- a/src/Profile.h +++ b/src/Profile.h @@ -115,6 +115,7 @@ public: RemoteTabTitleFormat, /** (bool) Specifies whether the menu bar should be shown in the main application window. */ ShowMenuBar, + SaveGeometryOnExit, /** (TabBarModeEnum) Specifies when the tab bar should be shown in * the main application window. */ TabBarMode, diff --git a/src/ViewManager.cpp b/src/ViewManager.cpp index 2d497eac2..afcffbd27 100644 --- a/src/ViewManager.cpp +++ b/src/ViewManager.cpp @@ -787,6 +787,8 @@ void ViewManager::applyProfile(TerminalDisplay* view , const Profile::Ptr info, // menu bar visibility emit setMenuBarVisibleRequest( info->property(Profile::ShowMenuBar) ); + emit setSaveGeometryOnExitRequest( info->property(Profile::SaveGeometryOnExit) ); + // tab bar visibility if (applyContainerSettings) { diff --git a/src/ViewManager.h b/src/ViewManager.h index 6b9575471..8ed774488 100644 --- a/src/ViewManager.h +++ b/src/ViewManager.h @@ -196,6 +196,7 @@ signals: * activated. */ void setMenuBarVisibleRequest(bool); + void setSaveGeometryOnExitRequest(bool); /** Requests creation of a new view with the default profile. */ void newViewRequest();