From 73aa15c624c1233ab6af9ca3618c95ee05b9cf04 Mon Sep 17 00:00:00 2001
From: Kevin Smith <git@kismith.co.uk>
Date: Tue, 19 Apr 2011 20:20:13 +0100
Subject: Allow smaller roster heights.

Resolves: #5222
Release-Notes: The minimum vertical roster size has been reduced.

diff --git a/Swift/QtUI/QtLoginWindow.cpp b/Swift/QtUI/QtLoginWindow.cpp
index d0ab61e..4302c10 100644
--- a/Swift/QtUI/QtLoginWindow.cpp
+++ b/Swift/QtUI/QtLoginWindow.cpp
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2010 Kevin Smith
+ * Copyright (c) 2010-2011 Kevin Smith
  * Licensed under the GNU General Public License v3.
  * See Documentation/Licenses/GPLv3.txt for more information.
  */
@@ -56,9 +56,9 @@ QtLoginWindow::QtLoginWindow(UIEventStream* uiEventStream) : QMainWindow() {
 	stack_ = new QStackedWidget(centralWidget);
 	topLayout->addWidget(stack_);
 	topLayout->setMargin(0);
-	QWidget *wrapperWidget = new QWidget(this);
-	wrapperWidget->setSizePolicy(QSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding));
-	QBoxLayout *layout = new QBoxLayout(QBoxLayout::TopToBottom, wrapperWidget);
+	loginWidgetWrapper_ = new QWidget(this);
+	loginWidgetWrapper_->setSizePolicy(QSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding));
+	QBoxLayout *layout = new QBoxLayout(QBoxLayout::TopToBottom, loginWidgetWrapper_);
 	layout->addStretch(2);
 
 	QLabel* logo = new QLabel(this);
@@ -139,7 +139,7 @@ QtLoginWindow::QtLoginWindow(UIEventStream* uiEventStream) : QMainWindow() {
 	layout->addWidget(loginAutomatically_);
 
 	connect(loginButton_, SIGNAL(clicked()), SLOT(loginClicked()));
-	stack_->addWidget(wrapperWidget);
+	stack_->addWidget(loginWidgetWrapper_);
 #ifdef SWIFTEN_PLATFORM_MACOSX
 	menuBar_ = new QMenuBar(NULL);
 #else
@@ -284,11 +284,9 @@ void QtLoginWindow::handleUsernameTextChanged() {
 }
 
 void QtLoginWindow::loggedOut() {
-	if (stack_->count() > 1) {
-		QWidget* current = stack_->currentWidget();
-		stack_->setCurrentIndex(0);
-		stack_->removeWidget(current);
-	}
+	stack_->removeWidget(stack_->currentWidget());
+	stack_->addWidget(loginWidgetWrapper_);
+	stack_->setCurrentWidget(loginWidgetWrapper_);
 	setInitialMenus();
 	setIsLoggingIn(false);
 }
@@ -370,6 +368,7 @@ void QtLoginWindow::setInitialMenus() {
 void QtLoginWindow::morphInto(MainWindow *mainWindow) {
 	QtMainWindow *qtMainWindow = dynamic_cast<QtMainWindow*>(mainWindow);
 	assert(qtMainWindow);
+	stack_->removeWidget(loginWidgetWrapper_);
 	stack_->addWidget(qtMainWindow);
 	stack_->setCurrentWidget(qtMainWindow);
 	setEnabled(true);
diff --git a/Swift/QtUI/QtLoginWindow.h b/Swift/QtUI/QtLoginWindow.h
index 3f3b5f8..b667a4b 100644
--- a/Swift/QtUI/QtLoginWindow.h
+++ b/Swift/QtUI/QtLoginWindow.h
@@ -1,11 +1,10 @@
 /*
- * Copyright (c) 2010 Kevin Smith
+ * Copyright (c) 2010-2011 Kevin Smith
  * Licensed under the GNU General Public License v3.
  * See Documentation/Licenses/GPLv3.txt for more information.
  */
 
-#ifndef SWIFT_QtLoginWindow_H
-#define SWIFT_QtLoginWindow_H
+#pragma once
 
 #include <QMainWindow>
 #include <QPointer>
@@ -65,6 +64,7 @@ namespace Swift {
 
 		private:
 			void setInitialMenus();
+			QWidget* loginWidgetWrapper_;
 			QStringList usernames_;
 			QStringList passwords_;
 			QStringList certificateFiles_;
@@ -87,5 +87,3 @@ namespace Swift {
 			QPointer<QtAboutWidget> aboutDialog_;
 	};
 }
-
-#endif
-- 
cgit v0.10.2-6-g49f6