This commit is contained in:
ctrlaltca 2014-07-04 11:11:59 +00:00
commit a54139697e
7 changed files with 56 additions and 10 deletions

View file

@ -90,6 +90,7 @@ SET(cockatrice_SOURCES
src/qt-json/json.cpp src/qt-json/json.cpp
src/soundengine.cpp src/soundengine.cpp
src/pending_command.cpp src/pending_command.cpp
src/lineinput.cpp
${CMAKE_CURRENT_BINARY_DIR}/version_string.cpp ${CMAKE_CURRENT_BINARY_DIR}/version_string.cpp
) )

View file

@ -0,0 +1,29 @@
#include <QKeyEvent>
#include <QKeySequence>
#include <QDebug>
#include "lineinput.h"
LineInput::LineInput(QWidget *parent)
: QLineEdit(parent)
{
}
bool LineInput::eventFilter(QObject *obj, QEvent *event)
{
// intercept keyborad events from chatView
if (event->type() == QEvent::KeyPress) {
QKeyEvent *keyEvent = (QKeyEvent*)event;
// ensure "copy" and "select all" shortcuts works on the chatView
if(!(keyEvent->key() == Qt::Key_Control) &&
!keyEvent->matches(QKeySequence::Copy) &&
!keyEvent->matches(QKeySequence::SelectAll))
{
setFocus();
keyPressEvent(keyEvent);
return true;
}
}
return QLineEdit::eventFilter(obj, event);
}

View file

@ -0,0 +1,16 @@
#ifndef LINEINPUT_H
#define LINEINPUT_H
#include <QLineEdit>
class QEvent;
class LineInput : public QLineEdit {
Q_OBJECT
public:
LineInput(QWidget *parent=0);
protected:
bool eventFilter(QObject *obj, QEvent *event);
};
#endif

View file

@ -1,4 +1,3 @@
#include <QLineEdit>
#include <QVBoxLayout> #include <QVBoxLayout>
#include <QHBoxLayout> #include <QHBoxLayout>
#include <QMenu> #include <QMenu>
@ -6,6 +5,7 @@
#include "tab_message.h" #include "tab_message.h"
#include "abstractclient.h" #include "abstractclient.h"
#include "chatview.h" #include "chatview.h"
#include "lineinput.h"
#include "pending_command.h" #include "pending_command.h"
#include "pb/session_commands.pb.h" #include "pb/session_commands.pb.h"
@ -18,7 +18,7 @@ TabMessage::TabMessage(TabSupervisor *_tabSupervisor, AbstractClient *_client, c
chatView = new ChatView(tabSupervisor, 0, true); chatView = new ChatView(tabSupervisor, 0, true);
connect(chatView, SIGNAL(showCardInfoPopup(QPoint, QString)), this, SLOT(showCardInfoPopup(QPoint, QString))); connect(chatView, SIGNAL(showCardInfoPopup(QPoint, QString)), this, SLOT(showCardInfoPopup(QPoint, QString)));
connect(chatView, SIGNAL(deleteCardInfoPopup(QString)), this, SLOT(deleteCardInfoPopup(QString))); connect(chatView, SIGNAL(deleteCardInfoPopup(QString)), this, SLOT(deleteCardInfoPopup(QString)));
sayEdit = new QLineEdit; sayEdit = new LineInput;
connect(sayEdit, SIGNAL(returnPressed()), this, SLOT(sendMessage())); connect(sayEdit, SIGNAL(returnPressed()), this, SLOT(sendMessage()));
QVBoxLayout *vbox = new QVBoxLayout; QVBoxLayout *vbox = new QVBoxLayout;
@ -36,7 +36,7 @@ TabMessage::TabMessage(TabSupervisor *_tabSupervisor, AbstractClient *_client, c
setLayout(vbox); setLayout(vbox);
setFocusProxy(sayEdit); setFocusProxy(sayEdit);
chatView->setFocusProxy(sayEdit); chatView->installEventFilter(sayEdit);
sayEdit->setFocus(); sayEdit->setFocus();
} }

View file

@ -5,7 +5,7 @@
class AbstractClient; class AbstractClient;
class ChatView; class ChatView;
class QLineEdit; class LineInput;
class Event_UserMessage; class Event_UserMessage;
class Response; class Response;
class ServerInfo_User; class ServerInfo_User;
@ -20,7 +20,7 @@ private:
bool userOnline; bool userOnline;
ChatView *chatView; ChatView *chatView;
QLineEdit *sayEdit; LineInput *sayEdit;
QAction *aLeave; QAction *aLeave;
signals: signals:

View file

@ -1,4 +1,3 @@
#include <QLineEdit>
#include <QVBoxLayout> #include <QVBoxLayout>
#include <QHBoxLayout> #include <QHBoxLayout>
#include <QMenu> #include <QMenu>
@ -16,6 +15,7 @@
#include "userlist.h" #include "userlist.h"
#include "abstractclient.h" #include "abstractclient.h"
#include "chatview.h" #include "chatview.h"
#include "lineinput.h"
#include "gameselector.h" #include "gameselector.h"
#include "settingscache.h" #include "settingscache.h"
@ -46,7 +46,7 @@ TabRoom::TabRoom(TabSupervisor *_tabSupervisor, AbstractClient *_client, ServerI
connect(chatView, SIGNAL(showCardInfoPopup(QPoint, QString)), this, SLOT(showCardInfoPopup(QPoint, QString))); connect(chatView, SIGNAL(showCardInfoPopup(QPoint, QString)), this, SLOT(showCardInfoPopup(QPoint, QString)));
connect(chatView, SIGNAL(deleteCardInfoPopup(QString)), this, SLOT(deleteCardInfoPopup(QString))); connect(chatView, SIGNAL(deleteCardInfoPopup(QString)), this, SLOT(deleteCardInfoPopup(QString)));
sayLabel = new QLabel; sayLabel = new QLabel;
sayEdit = new QLineEdit; sayEdit = new LineInput;
sayLabel->setBuddy(sayEdit); sayLabel->setBuddy(sayEdit);
connect(sayEdit, SIGNAL(returnPressed()), this, SLOT(sendMessage())); connect(sayEdit, SIGNAL(returnPressed()), this, SLOT(sendMessage()));
@ -100,7 +100,7 @@ TabRoom::TabRoom(TabSupervisor *_tabSupervisor, AbstractClient *_client, ServerI
gameSelector->processGameInfo(info.game_list(i)); gameSelector->processGameInfo(info.game_list(i));
setFocusProxy(sayEdit); setFocusProxy(sayEdit);
chatView->setFocusProxy(sayEdit); chatView->installEventFilter(sayEdit);
QTimer::singleShot(0, sayEdit, SLOT(setFocus())); QTimer::singleShot(0, sayEdit, SLOT(setFocus()));
} }

View file

@ -10,7 +10,7 @@ class AbstractClient;
class UserList; class UserList;
class QLabel; class QLabel;
class ChatView; class ChatView;
class QLineEdit; class LineInput;
class QPushButton; class QPushButton;
class QTextTable; class QTextTable;
class RoomEvent; class RoomEvent;
@ -38,7 +38,7 @@ private:
UserList *userList; UserList *userList;
ChatView *chatView; ChatView *chatView;
QLabel *sayLabel; QLabel *sayLabel;
QLineEdit *sayEdit; LineInput *sayEdit;
QGroupBox *chatGroupBox; QGroupBox *chatGroupBox;
QMenu *roomMenu; QMenu *roomMenu;