diff --git a/interface/src/Menu.cpp b/interface/src/Menu.cpp index f95301027e..44f2c7a787 100644 --- a/interface/src/Menu.cpp +++ b/interface/src/Menu.cpp @@ -1468,7 +1468,9 @@ void Menu::showChat() { if (_chatWindow->isHidden()) { _chatWindow->show(); } + _chatWindow->raise(); _chatWindow->activateWindow(); + _chatWindow->setFocus(); } else { Application::getInstance()->getTrayIcon()->showMessage("Interface", "You need to login to be able to chat with others on this domain."); } @@ -1480,6 +1482,9 @@ void Menu::toggleChat() { if (!_chatAction->isEnabled() && _chatWindow && AccountManager::getInstance().isLoggedIn()) { if (_chatWindow->isHidden()) { _chatWindow->show(); + _chatWindow->raise(); + _chatWindow->activateWindow(); + _chatWindow->setFocus(); } else { _chatWindow->hide(); } diff --git a/interface/src/ui/ChatWindow.cpp b/interface/src/ui/ChatWindow.cpp index a04212afe0..b9b5ed8e19 100644 --- a/interface/src/ui/ChatWindow.cpp +++ b/interface/src/ui/ChatWindow.cpp @@ -18,28 +18,27 @@ #include #include "Application.h" +#include "ChatMessageArea.h" #include "FlowLayout.h" #include "qtimespan.h" -#include "ui_chatWindow.h" +#include "UIUtil.h" #include "XmppClient.h" -#include "ChatMessageArea.h" +#include "ui_chatWindow.h" #include "ChatWindow.h" const int NUM_MESSAGES_TO_TIME_STAMP = 20; -const float OPACITY_ACTIVE = 1.0f; -const float OPACITY_INACTIVE = 0.8f; - const QRegularExpression regexLinks("((?:(?:ftp)|(?:https?)|(?:hifi))://\\S+)"); const QRegularExpression regexHifiLinks("([#@]\\S+)"); const QString mentionSoundsPath("/mention-sounds/"); const QString mentionRegex("@(\\b%1\\b)"); ChatWindow::ChatWindow(QWidget* parent) : - FramelessDialog(parent, 0, POSITION_RIGHT), + QWidget(parent, Qt::Window | Qt::CustomizeWindowHint | Qt::WindowTitleHint | Qt::WindowMinMaxButtonsHint | + Qt::WindowCloseButtonHint), ui(new Ui::ChatWindow), numMessagesAfterLastTimeStamp(0), _mousePressed(false), @@ -82,7 +81,6 @@ ChatWindow::ChatWindow(QWidget* parent) : startTimerForTimeStamps(); } else { ui->numOnlineLabel->hide(); - ui->closeButton->hide(); ui->usersArea->hide(); ui->messagesScrollArea->hide(); ui->messagePlainTextEdit->hide(); @@ -112,17 +110,25 @@ ChatWindow::~ChatWindow() { void ChatWindow::keyPressEvent(QKeyEvent* event) { if (event->key() == Qt::Key_Escape) { Application::getInstance()->getWindow()->activateWindow(); + hide(); } else { - FramelessDialog::keyPressEvent(event); + QWidget::keyPressEvent(event); } } void ChatWindow::showEvent(QShowEvent* event) { - FramelessDialog::showEvent(event); + QWidget::showEvent(event); if (!event->spontaneous()) { ui->messagePlainTextEdit->setFocus(); } + const QRect parentGeometry = parentWidget()->geometry(); + int titleBarHeight = UIUtil::getWindowTitleBarHeight(this); + int menuBarHeight = Menu::getInstance()->geometry().height(); + int topMargin = titleBarHeight + menuBarHeight; + + setGeometry(parentGeometry.topRight().x() - size().width() + 1, parentGeometry.topRight().y() + topMargin, + size().width(), parentWidget()->height() - topMargin); Application::processEvents(); @@ -167,7 +173,7 @@ bool ChatWindow::eventFilter(QObject* sender, QEvent* event) { return true; } } - return FramelessDialog::eventFilter(sender, event); + return QWidget::eventFilter(sender, event); } void ChatWindow::addTimeStamp() { @@ -214,7 +220,6 @@ void ChatWindow::startTimerForTimeStamps() { void ChatWindow::connected() { ui->connectingToXMPPLabel->hide(); ui->numOnlineLabel->show(); - ui->closeButton->show(); ui->usersArea->show(); ui->messagesScrollArea->show(); ui->messagePlainTextEdit->show(); @@ -393,9 +398,7 @@ void ChatWindow::scrollToBottom() { bool ChatWindow::event(QEvent* event) { if (event->type() == QEvent::WindowActivate) { - setWindowOpacity(OPACITY_ACTIVE); - } else if (event->type() == QEvent::WindowDeactivate) { - setWindowOpacity(OPACITY_INACTIVE); + ui->messagePlainTextEdit->setFocus(); } - return FramelessDialog::event(event); + return QWidget::event(event); } diff --git a/interface/src/ui/ChatWindow.h b/interface/src/ui/ChatWindow.h index 652dcb5b08..afaacf34b4 100644 --- a/interface/src/ui/ChatWindow.h +++ b/interface/src/ui/ChatWindow.h @@ -38,7 +38,7 @@ const int AUTO_SCROLL_THRESHOLD = 20; class ChatWindow; } -class ChatWindow : public FramelessDialog { +class ChatWindow : public QWidget { Q_OBJECT public: diff --git a/interface/ui/chatWindow.ui b/interface/ui/chatWindow.ui index 46ccafd5f8..4120515b3d 100644 --- a/interface/ui/chatWindow.ui +++ b/interface/ui/chatWindow.ui @@ -1,7 +1,7 @@ ChatWindow - + 0 @@ -86,45 +86,6 @@ - - - - - 0 - 0 - - - - - 16 - 16 - - - - Qt::NoFocus - - - QPushButton { - background-color: rgba( 0, 0, 0, 0% ); - border: none; - image: url(../resources/images/close.svg) -} - - -QPushButton:pressed { - background-color: rgba( 0, 0, 0, 0% ); - border: none; - image: url(../resources/images/close_down.svg) -} - - - - - - true - - - @@ -283,7 +244,7 @@ border-color: palette(dark); border-style: solid; border-left-width: 1px; borde QAbstractScrollArea::AdjustToContents - true + true false @@ -308,22 +269,5 @@ border-color: palette(dark); border-style: solid; border-left-width: 1px; borde messagesScrollArea - - - closeButton - clicked() - ChatWindow - hide() - - - 390 - 42 - - - 550 - 42 - - - - +