Indicate state of Win/Alt modifiers by making '...' button appear depressed
authorChristian Pulvermacher <pulvermacher@gmx.de>
Mon, 30 Jan 2012 21:59:06 +0000 (22:59 +0100)
committerChristian Pulvermacher <pulvermacher@gmx.de>
Mon, 30 Jan 2012 21:59:06 +0000 (22:59 +0100)
src/keymenu.cpp
src/keymenu.h
src/mainwindow.cpp
src/mainwindow.h

index fa78331..d973fba 100644 (file)
@@ -28,11 +28,11 @@ KeyMenu::KeyMenu(QWidget *parent):
 
     //modifiers
     ActionTab *mod_tab = new ActionTab(this);
-    QAction *win = new QAction(tr("Win"), this);
+    win = new QAction(tr("Win"), this);
     win->setShortcut(Qt::META);
     win->setCheckable(true);
     mod_tab->addAction(win);
-    QAction *alt = new QAction(tr("Alt"), this);
+    alt = new QAction(tr("Alt"), this);
     alt->setShortcut(Qt::ALT);
     alt->setCheckable(true);
     mod_tab->addAction(alt);
@@ -84,8 +84,9 @@ ActionTab::ActionTab(KeyMenu *parent):
     keymenu(parent)
 {
     setWidgetResizable(true);
-    setWidget(&widget);
-    widget.setLayout(&layout);
+    QWidget *widget = new QWidget(this);
+    setWidget(widget);
+    widget->setLayout(&layout);
 }
 
 void ActionTab::addAction(QString text, QKeySequence keysequence)
index 82d7c6d..2ba0250 100644 (file)
@@ -27,13 +27,17 @@ class KeyMenu : public QDialog
 {
     Q_OBJECT
 public:
-    KeyMenu(QWidget *parent);
-    QKeySequence getKeySequence() { return keysequence; }
+    explicit KeyMenu(QWidget *parent);
+    const QKeySequence& getKeySequence() const { return keysequence; }
+    bool isAltChecked() const { return alt->isChecked(); }
+    bool isWinChecked() const { return win->isChecked(); }
 public slots:
     virtual void accept();
     virtual int exec() { keysequence = QKeySequence(); return QDialog::exec(); }
 private:
-    QKeySequence keysequence;
+    QKeySequence keysequence; //key sequence last selected
+    QAction *alt;
+    QAction *win;
 };
 
 
@@ -41,11 +45,10 @@ class ActionTab : public QScrollArea
 {
     Q_OBJECT
 public:
-    ActionTab(KeyMenu *parent);
+    explicit ActionTab(KeyMenu *parent);
     void addAction(QAction *action); //adds action and connects it to keymenu->accept()
     void addAction(QString text, QKeySequence keysequence);
 private:
-    QWidget widget;
     QHBoxLayout layout;
     KeyMenu *keymenu;
 };
index d89af5a..5eb80dd 100644 (file)
@@ -54,7 +54,8 @@ MainWindow::MainWindow(QString url, int quality, int listen_port, bool view_only
 
     //set up toolbar
     toolbar = new QToolBar(0);
-    input_toolbuttons->addAction(toolbar->addAction(QChar(0x2026), this, SLOT(showKeyMenu()))); //"..." button
+    key_menu_button = input_toolbuttons->addAction(toolbar->addAction(QChar(0x2026), this, SLOT(showKeyMenu()))); //"..." button
+    key_menu_button->setCheckable(true); //used to indicate wether a modifier key is still pressed
     input_toolbuttons->addAction(toolbar->addAction(tr("Tab"), this, SLOT(sendTab())));
     input_toolbuttons->addAction(toolbar->addAction(tr("Esc"), this, SLOT(sendEsc())));
     input_toolbuttons->addAction(toolbar->addAction(tr("PgUp"), this, SLOT(sendPgUp())));
@@ -321,6 +322,7 @@ void MainWindow::showKeyMenu()
 {
     key_menu->exec();
     vnc_view->sendKeySequence(key_menu->getKeySequence());
+    key_menu_button->setChecked(key_menu->isAltChecked() or key_menu->isWinChecked());
 }
 
 void MainWindow::showPreferences()
index f487bf9..c5296a5 100644 (file)
@@ -61,11 +61,13 @@ private:
 
     VncView *vnc_view;
     ScrollArea *scroll_area;
+
     QToolBar *toolbar;
     QSlider *zoom_slider;
     QAction *scaling, *show_toolbar, *disconnect_action;
     QActionGroup *input_toolbuttons;
     KeyMenu *key_menu;
+    QAction *key_menu_button;
     bool zoom_to_cursor;
 };
 #endif