summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEike Ziller <eike.ziller@nokia.com>2011-11-24 11:38:35 +0100
committerEike Ziller <eike.ziller@nokia.com>2011-11-24 13:32:04 +0100
commitcc11186bad9229c231f2fbba176645f3a3c20327 (patch)
tree2f6e7667b6577f1b381fa1ad2e02089eda8b54c7
parent06f53a4e2551f9c261dc61178f17f0a04f39817f (diff)
downloadqt-creator-cc11186bad9229c231f2fbba176645f3a3c20327.tar.gz
Avoid setting large minimum size for output panes.
The search result pane set a minimum size for the "New Search" panel which forced this relative big minimum size on all panels and made it impossible to make the output pane area small. Now, the new search is wrapped into a scroll area, doesn't enforce a minimum size anymore, and, instead, when initiating a new search (via shortcut or menu action) resizes the pane so the panel fits nicely. Change-Id: I9afe67e66f324111a10a97f33c203846231e6a93 Reviewed-by: hjk <qthjk@ovi.com>
-rw-r--r--src/plugins/coreplugin/ioutputpane.h7
-rw-r--r--src/plugins/coreplugin/outputpane.cpp22
-rw-r--r--src/plugins/coreplugin/outputpane.h1
-rw-r--r--src/plugins/coreplugin/outputpanemanager.cpp6
-rw-r--r--src/plugins/coreplugin/outputpanemanager.h2
-rw-r--r--src/plugins/find/searchresultwindow.cpp8
6 files changed, 38 insertions, 8 deletions
diff --git a/src/plugins/coreplugin/ioutputpane.h b/src/plugins/coreplugin/ioutputpane.h
index edcdb9d218..df033e7658 100644
--- a/src/plugins/coreplugin/ioutputpane.h
+++ b/src/plugins/coreplugin/ioutputpane.h
@@ -78,15 +78,16 @@ public:
virtual void goToPrev() = 0;
public slots:
- void popup() { popup(true); }
- void popup(bool withFocus) { emit showPage(withFocus); }
+ void popup() { popup(true, false); }
+ void popup(bool withFocus) { popup(withFocus, false); }
+ void popup(bool withFocus, bool ensureSizeHint) { emit showPage(withFocus, ensureSizeHint); }
void hide() { emit hidePage(); }
void toggle() { toggle(true); }
void toggle(bool withFocusIfShown) { emit togglePage(withFocusIfShown); }
void navigateStateChanged() { emit navigateStateUpdate(); }
signals:
- void showPage(bool withFocus);
+ void showPage(bool withFocus, bool ensureSizeHint);
void hidePage();
void togglePage(bool withFocusIfShown);
void navigateStateUpdate();
diff --git a/src/plugins/coreplugin/outputpane.cpp b/src/plugins/coreplugin/outputpane.cpp
index 336e7bc656..95543b0d7f 100644
--- a/src/plugins/coreplugin/outputpane.cpp
+++ b/src/plugins/coreplugin/outputpane.cpp
@@ -143,6 +143,28 @@ bool OutputPanePlaceHolder::isMaximized() const
return Internal::OutputPaneManager::instance()->isMaximized();
}
+void OutputPanePlaceHolder::ensureSizeHintAsMinimum()
+{
+ if (!d->m_splitter)
+ return;
+ int idx = d->m_splitter->indexOf(this);
+ if (idx < 0)
+ return;
+
+ QList<int> sizes = d->m_splitter->sizes();
+ Internal::OutputPaneManager *om = Internal::OutputPaneManager::instance();
+ int minimum = (d->m_splitter->orientation() == Qt::Vertical
+ ? om->sizeHint().height() : om->sizeHint().width());
+ int difference = minimum - sizes.at(idx);
+ if (difference <= 0) // is already larger
+ return;
+ for (int i = 0; i < sizes.count(); ++i) {
+ sizes[i] += difference / (sizes.count()-1);
+ }
+ sizes[idx] = minimum;
+ d->m_splitter->setSizes(sizes);
+}
+
void OutputPanePlaceHolder::unmaximize()
{
if (Internal::OutputPaneManager::instance()->isMaximized())
diff --git a/src/plugins/coreplugin/outputpane.h b/src/plugins/coreplugin/outputpane.h
index 5c4c7dc413..b0dbf6af66 100644
--- a/src/plugins/coreplugin/outputpane.h
+++ b/src/plugins/coreplugin/outputpane.h
@@ -64,6 +64,7 @@ public:
void unmaximize();
bool isMaximized() const;
+ void ensureSizeHintAsMinimum();
private slots:
void currentModeChanged(Core::IMode *);
diff --git a/src/plugins/coreplugin/outputpanemanager.cpp b/src/plugins/coreplugin/outputpanemanager.cpp
index edd1b61b8d..0e3216f8b6 100644
--- a/src/plugins/coreplugin/outputpanemanager.cpp
+++ b/src/plugins/coreplugin/outputpanemanager.cpp
@@ -254,7 +254,7 @@ void OutputPaneManager::init()
const int idx = m_outputWidgetPane->addWidget(outPane->outputWidget(this));
m_pageMap.insert(idx, outPane);
- connect(outPane, SIGNAL(showPage(bool)), this, SLOT(showPage(bool)));
+ connect(outPane, SIGNAL(showPage(bool,bool)), this, SLOT(showPage(bool,bool)));
connect(outPane, SIGNAL(hidePage()), this, SLOT(slotHide()));
connect(outPane, SIGNAL(togglePage(bool)), this, SLOT(togglePage(bool)));
connect(outPane, SIGNAL(navigateStateUpdate()), this, SLOT(updateNavigateState()));
@@ -431,10 +431,12 @@ void OutputPaneManager::updateNavigateState()
}
// Slot connected to showPage signal of each page
-void OutputPaneManager::showPage(bool focus)
+void OutputPaneManager::showPage(bool focus, bool ensureSizeHint)
{
int idx = findIndexForPage(qobject_cast<IOutputPane*>(sender()));
showPage(idx, focus);
+ if (ensureSizeHint && OutputPanePlaceHolder::getCurrent())
+ OutputPanePlaceHolder::getCurrent()->ensureSizeHintAsMinimum();
}
void OutputPaneManager::showPage(int idx, bool focus)
diff --git a/src/plugins/coreplugin/outputpanemanager.h b/src/plugins/coreplugin/outputpanemanager.h
index 0f0423792a..280a470310 100644
--- a/src/plugins/coreplugin/outputpanemanager.h
+++ b/src/plugins/coreplugin/outputpanemanager.h
@@ -78,7 +78,7 @@ protected:
private slots:
void changePage();
- void showPage(bool focus);
+ void showPage(bool focus, bool ensureSizeHint);
void togglePage(bool focus);
void clearPage();
void buttonTriggered();
diff --git a/src/plugins/find/searchresultwindow.cpp b/src/plugins/find/searchresultwindow.cpp
index f5e04a2ece..27233ef970 100644
--- a/src/plugins/find/searchresultwindow.cpp
+++ b/src/plugins/find/searchresultwindow.cpp
@@ -48,6 +48,7 @@
#include <QtGui/QFont>
#include <QtGui/QAction>
#include <QtGui/QComboBox>
+#include <QtGui/QScrollArea>
#include <QtGui/QStackedWidget>
static const char SETTINGSKEYSECTIONNAME[] = "SearchResults";
@@ -209,7 +210,10 @@ SearchResultWindow::SearchResultWindow(QWidget *newSearchPanel)
d->m_widget = new QStackedWidget;
d->m_widget->setWindowTitle(displayName());
- d->m_widget->addWidget(newSearchPanel);
+ QScrollArea *newSearchArea = new QScrollArea(d->m_widget);
+ newSearchArea->setFrameStyle(QFrame::NoFrame);
+ newSearchArea->setWidget(newSearchPanel);
+ d->m_widget->addWidget(newSearchArea);
d->m_currentIndex = 0;
d->m_expandCollapseButton = new QToolButton(d->m_widget);
@@ -400,7 +404,7 @@ void SearchResultWindow::setTextEditorFont(const QFont &font)
void SearchResultWindow::openNewSearchPanel()
{
d->setCurrentIndex(0);
- popup();
+ popup(true/*focus*/, true/*sizeHint*/);
}
/*!