Merge branch '19554-2' of github.com:huffman/hifi into 19554-2

This commit is contained in:
Ryan Huffman 2014-04-23 16:17:16 -07:00
commit 1a5dbf3da6
3 changed files with 15 additions and 9 deletions

View file

@ -171,7 +171,7 @@ void ChatWindow::addTimeStamp() {
timeLabel->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred);
timeLabel->setAlignment(Qt::AlignLeft);
bool atBottom = isAtBottom();
bool atBottom = isNearBottom();
ui->messagesVBoxLayout->addWidget(timeLabel);
ui->messagesVBoxLayout->parentWidget()->updateGeometry();
@ -288,7 +288,7 @@ void ChatWindow::messageReceived(const QXmppMessage& message) {
messageText = messageText.replace(regexHifiLinks, "<a href=\"hifi://\\1\">\\1</a>");
messageArea->setHtml(userLabel + messageText);
bool atBottom = isAtBottom();
bool atBottom = isNearBottom();
ui->messagesVBoxLayout->addWidget(messageArea);
ui->messagesVBoxLayout->parentWidget()->updateGeometry();
@ -308,13 +308,13 @@ void ChatWindow::messageReceived(const QXmppMessage& message) {
#endif
bool ChatWindow::isAtBottom() {
bool ChatWindow::isNearBottom() {
QScrollBar* verticalScrollBar = ui->messagesScrollArea->verticalScrollBar();
return verticalScrollBar->sliderPosition() == verticalScrollBar->maximum();
return verticalScrollBar->value() >= verticalScrollBar->maximum() - Ui::AUTO_SCROLL_THRESHOLD;
}
// Scroll chat message area to bottom.
void ChatWindow::scrollToBottom() {
QScrollBar* verticalScrollBar = ui->messagesScrollArea->verticalScrollBar();
verticalScrollBar->setSliderPosition(verticalScrollBar->maximum());
verticalScrollBar->setValue(verticalScrollBar->maximum());
}

View file

@ -27,6 +27,12 @@
#endif
namespace Ui {
// Maximum amount the chat can be scrolled up in order to auto scroll.
const int AUTO_SCROLL_THRESHOLD = 20;
class ChatWindow;
}
@ -49,7 +55,7 @@ private:
#endif
void startTimerForTimeStamps();
void addTimeStamp();
bool isAtBottom();
bool isNearBottom();
void scrollToBottom();
Ui::ChatWindow* ui;

View file

@ -16,10 +16,10 @@ const int RESIZE_HANDLE_WIDTH = 7;
FramelessDialog::FramelessDialog(QWidget *parent, Qt::WindowFlags flags, Position position) :
QDialog(parent, flags | Qt::FramelessWindowHint | Qt::WindowStaysOnTopHint),
_position(position),
_selfHidden(false),
_isResizing(false),
_resizeInitialWidth(0) {
_resizeInitialWidth(0),
_selfHidden(false),
_position(position) {
setAttribute(Qt::WA_DeleteOnClose);