Hello,
I've recently tried to use qt creator in dual-monitor (5:4) configuration and 
found that default placement of sidebar is inconvenient since it either partly 
moves the code to another screen or just leaves too little space for the code 
on the first screen so i added an ability to show that sidebar to the right.
Also i added a configuration parameter to control sidebar placement in general 
settings (Enviromnent/General). It is set to usual placement (left) by 
default.

Patch is against today's git clone.
diff --git a/src/plugins/coreplugin/editmode.cpp b/src/plugins/coreplugin/editmode.cpp
index 071e700..a3c2149 100644
--- a/src/plugins/coreplugin/editmode.cpp
+++ b/src/plugins/coreplugin/editmode.cpp
@@ -41,6 +41,7 @@
 #include "rightpane.h"
 #include "ieditor.h"
 #include "idocument.h"
+#include "icore.h"
 
 #include <QLatin1String>
 #include <QHBoxLayout>
@@ -84,10 +85,22 @@ EditMode::EditMode() :
     splitter->setStretchFactor(0, 3);
     splitter->setStretchFactor(1, 0);
 
-    m_splitter->insertWidget(0, new NavigationWidgetPlaceHolder(this));
-    m_splitter->insertWidget(1, splitter);
-    m_splitter->setStretchFactor(0, 0);
-    m_splitter->setStretchFactor(1, 1);
+    if(Core::ICore::settings()->value(QLatin1String("General/SidebarRight")).toBool())
+    {
+       m_splitter->insertWidget(0, splitter);
+       m_splitter->insertWidget(1, new NavigationWidgetPlaceHolder(this));
+
+       m_splitter->setStretchFactor(0, 1);
+       m_splitter->setStretchFactor(1, 0);
+    }
+    else
+    {
+       m_splitter->insertWidget(0, new NavigationWidgetPlaceHolder(this));
+       m_splitter->insertWidget(1, splitter);
+
+       m_splitter->setStretchFactor(0, 0);
+       m_splitter->setStretchFactor(1, 1);
+    }
 
     connect(ModeManager::instance(), SIGNAL(currentModeChanged(Core::IMode*)),
             this, SLOT(grabEditorManager(Core::IMode*)));
diff --git a/src/plugins/coreplugin/generalsettings.cpp b/src/plugins/coreplugin/generalsettings.cpp
index 47542e0..5a50626 100644
--- a/src/plugins/coreplugin/generalsettings.cpp
+++ b/src/plugins/coreplugin/generalsettings.cpp
@@ -269,3 +269,20 @@ void GeneralSettings::setLanguage(const QString &locale)
     else
         settings->setValue(QLatin1String("General/OverrideLanguage"), locale);
 }
+
+bool GeneralSettings::sidebarRight() const
+{
+   QSettings* settings=Core::ICore::settings();
+   return settings->value(QLatin1String("General/SidebarRight")).toBool();
+}
+
+void GeneralSettings::setSidebarRight(bool right)
+{
+   QSettings* settings=Core::ICore::settings();
+   if(settings->value(QLatin1String("General/SidebarRight")).toBool()!=right)
+   {
+      QMessageBox::information(Core::ICore::mainWindow(), tr("Restart required"),
+                               tr("Sidebar position change will take effect after a restart of Qt Creator."));
+   }
+   settings->setValue(QLatin1String("General/SidebarRight"),right);
+}
diff --git a/src/plugins/coreplugin/generalsettings.h b/src/plugins/coreplugin/generalsettings.h
index 8b20889..43f0bc0 100644
--- a/src/plugins/coreplugin/generalsettings.h
+++ b/src/plugins/coreplugin/generalsettings.h
@@ -71,6 +71,8 @@ private:
     void fillLanguageBox() const;
     QString language() const;
     void setLanguage(const QString&);
+    bool sidebarRight() const;
+    void setSidebarRight(bool right);
     Ui::GeneralSettings *m_page;
     QString m_searchKeywords;
     QPointer<QMessageBox> m_dialog;
_______________________________________________
Qt-creator mailing list
[email protected]
http://lists.qt-project.org/mailman/listinfo/qt-creator

Reply via email to