Example #1
0
int WinPlatform::keyCode(const QKeyEvent &event)
{
    const int key = event.key();

    // Some keys shouldn't be translated.
    if ( key == Qt::Key_Return
      || key == Qt::Key_Enter
      || key == Qt::Key_Escape
      || key == Qt::Key_Tab
      || key == Qt::Key_Backtab
      || key == Qt::Key_Backspace
         )
    {
        return key;
    }

    const quint32 vk = event.nativeVirtualKey();
    const UINT result = MapVirtualKeyW(vk, MAPVK_VK_TO_CHAR);
    if (result != 0)
        return result;

    return key;
}
bool KisAbstractSliderSpinBox::eventFilter(QObject* recv, QEvent* e)
{
    Q_D(KisAbstractSliderSpinBox);
    if (recv == static_cast<QObject*>(d->edit) &&
            e->type() == QEvent::KeyRelease) {
        QKeyEvent* keyEvent = static_cast<QKeyEvent*>(e);

        switch (keyEvent->key()) {
        case Qt::Key_Enter:
        case Qt::Key_Return:
            setInternalValue(d->edit->text().toDouble()*d->factor);
            hideEdit();
            return true;
        case Qt::Key_Escape:
            hideEdit();
            return true;
        default:
            break;
        }
    }

    return false;
}
bool FileSystemRemoteDialog::eventFilter(QObject * o, QEvent * e)
{
    if (e->type() == QEvent::KeyPress)
    {
        // key pressed
        // transforms QEvent into QKeyEvent
        QKeyEvent* pKeyEvent = static_cast<QKeyEvent*>(e);
        switch (pKeyEvent->key())
        {
            case Qt::Key_Backspace:
            case Qt::Key_Back:
            {
                sltClickedBack();
                break;
            }
        }
        return true;
    }
    else
    {
        return QDialog::eventFilter(o, e);
    }
}
Example #4
0
bool ColorMapEditor::eventFilter(QObject *object, QEvent *e) {
  if (e->type() == QEvent::MouseMove && object == table->viewport()) {
    const QMouseEvent *me = (const QMouseEvent *)e;
    QPoint pos = table->viewport()->mapToParent(me->pos());
    int row = table->rowAt(pos.y() - table->horizontalHeader()->height());
    if (table->columnAt(pos.x()) == 1 && row >= 0 && row < table->rowCount())
      setCursor(QCursor(Qt::PointingHandCursor));
    else
      setCursor(QCursor(Qt::ArrowCursor));
    return true;
  } else if (e->type() == QEvent::Leave && object == table->viewport()) {
    setCursor(QCursor(Qt::ArrowCursor));
    return true;
  } else if (e->type() == QEvent::KeyPress && object == table) {
    QKeyEvent *ke = (QKeyEvent *)e;
    if (ke->key() == Qt::Key_Return && table->currentColumn() == 1) {
      showColorDialog(table->currentRow(), 1);
      return true;
    }
    return false;
  }
  return QObject::eventFilter(object, e);
}
Example #5
0
bool FileTransferWindow::eventFilter( QObject *obj, QEvent *ev )
{
	if( ( ev->type() == QEvent::KeyPress ) )
	{
		//m_pTableWidget could not have been initialized yet when FileTransferWindow
		//will receive the first events.. but it will surely be on a keypress event
		if(obj==m_pTableWidget)
		{
			QKeyEvent *keyEvent = (QKeyEvent*)ev;
			switch(keyEvent->key())
			{
				case Qt::Key_Delete:
					if(m_pTableWidget->currentItem())
					{
						delete m_pTableWidget->currentItem();
						return true;
					}
					break;
			}
		}
	}
	return KviWindow::eventFilter( obj, ev );
}
Example #6
0
bool PropertiesDock::event(QEvent *event)
{
    switch (event->type()) {
    case QEvent::ShortcutOverride: {
        QKeyEvent *keyEvent = static_cast<QKeyEvent *>(event);
        if (keyEvent->matches(QKeySequence::Delete) || keyEvent->key() == Qt::Key_Backspace
                || keyEvent->matches(QKeySequence::Cut)
                || keyEvent->matches(QKeySequence::Copy)
                || keyEvent->matches(QKeySequence::Paste)) {
            event->accept();
            return true;
        }
        break;
    }
    case QEvent::LanguageChange:
        retranslateUi();
        break;
    default:
        break;
    }

    return QDockWidget::event(event);
}
Example #7
0
bool K3bInteractionDialog::eventFilter( QObject* o, QEvent* ev )
{
  if( dynamic_cast<K3bInteractionDialog*>(o) == this &&
      ev->type() == QEvent::KeyPress ) {

    QKeyEvent* kev = dynamic_cast<QKeyEvent*>(ev);

    switch ( kev->key() ) {
    case Key_Enter:
    case Key_Return:
      // if the process finished this closes the dialog
      if( m_defaultButton == START_BUTTON ) {
	if( m_buttonStart->isEnabled() )
	  slotStartClickedInternal();
      }
      else if( m_defaultButton == CANCEL_BUTTON ) {
	if( m_buttonCancel->isEnabled() )
	  slotCancelClicked();
      }
      else if( m_defaultButton == SAVE_BUTTON ) {
	if( m_buttonSave->isEnabled() )
	  slotSaveClicked();
      }
      return true;

    case Key_Escape:
      // simulate button clicks
      if( m_buttonCancel ) {
	if( m_buttonCancel->isEnabled() )
	  slotCancelClicked();
      }
      return true;
    }
  }

  return KDialog::eventFilter( o, ev );
}
bool BufferWidget::eventFilter(QObject *watched, QEvent *event) {
  if(event->type() != QEvent::KeyPress)
    return false;

  QKeyEvent *keyEvent = static_cast<QKeyEvent*>(event);

  MultiLineEdit *inputLine = qobject_cast<MultiLineEdit *>(watched);
  if(!inputLine)
    return false;

  // Intercept copy key presses
  if(keyEvent == QKeySequence::Copy) {
    if(inputLine->hasSelectedText())
      return false;
    ChatView *view = qobject_cast<ChatView *>(ui.stackedWidget->currentWidget());
    if(view)
      view->scene()->selectionToClipboard();
    return true;
  }

  // We don't want to steal cursor movement keys if the input line is in multiline mode
  if(!inputLine->isSingleLine())
    return false;

  switch(keyEvent->key()) {
  case Qt::Key_Up:
  case Qt::Key_Down:
    if(!(keyEvent->modifiers() & Qt::ShiftModifier))
      return false;
  case Qt::Key_PageUp:
  case Qt::Key_PageDown:
    // static cast to access public qobject::event
    return static_cast<QObject*>(ui.stackedWidget->currentWidget())->event(event);
  default:
    return false;
  }
}
bool TopicChooser::eventFilter(QObject *object, QEvent *event)
{
    if (object == ui.lineEdit && event->type() == QEvent::KeyPress) {
        QKeyEvent *ke = static_cast<QKeyEvent*>(event);
        int dIndex = 0;
        switch (ke->key()) {
        case Qt::Key_Up:
            dIndex = -1;
            break;
        case Qt::Key_Down:
            dIndex = +1;
            break;
        case Qt::Key_PageUp:
            dIndex = -5;
            break;
        case Qt::Key_PageDown:
            dIndex = +5;
            break;
        default:
            break;
        }
        if (dIndex != 0) {
            QModelIndex idx = ui.listWidget->currentIndex();
            int newIndex = qMin(m_filterModel->rowCount(idx.parent()) - 1,
                                qMax(0, idx.row() + dIndex));
            idx = m_filterModel->index(newIndex, idx.column(), idx.parent());
            if (idx.isValid())
                ui.listWidget->setCurrentIndex(idx);
            return true;
        }
    } else if (ui.lineEdit && event->type() == QEvent::FocusIn
        && static_cast<QFocusEvent *>(event)->reason() != Qt::MouseFocusReason) {
        ui.lineEdit->selectAll();
        ui.lineEdit->setFocus();
    }
    return QDialog::eventFilter(object, event);
}
Example #10
0
      bool notify(QObject* receiver, QEvent* event) {
         bool flag = QApplication::notify(receiver, event);
         if (event->type() == QEvent::KeyPress) {
#if QT_VERSION >= 0x050000
            const QMetaObject * mo = receiver->metaObject();
            bool forQWidgetWindow = false;
            if (mo){
               if (strcmp(mo->className(), "QWidgetWindow") == 0)
                  forQWidgetWindow = true;
            }
            if(forQWidgetWindow){
               return false;
            }
#endif
            QKeyEvent* ke = (QKeyEvent*)event;
            MusEGlobal::globalKeyState = ke->modifiers();
            bool accepted = ke->isAccepted();
            if (!accepted) {
               int key = ke->key();
               if (((QInputEvent*)ke)->modifiers() & Qt::ShiftModifier)
                  key += Qt::SHIFT;
               if (((QInputEvent*)ke)->modifiers() & Qt::AltModifier)
                  key += Qt::ALT;
               if (((QInputEvent*)ke)->modifiers() & Qt::ControlModifier)
                  key+= Qt::CTRL;
               muse->kbAccel(key);
               return true;
            }
         }
         if (event->type() == QEvent::KeyRelease) {
            QKeyEvent* ke = (QKeyEvent*)event;
            ///MusEGlobal::globalKeyState = ke->stateAfter();
            MusEGlobal::globalKeyState = ke->modifiers();
         }

         return flag;
      }
bool BookmarkDialog::eventFilter(QObject *object, QEvent *e)
{
    if (object == this && e->type() == QEvent::KeyPress) {
        QKeyEvent *ke = static_cast<QKeyEvent*>(e);

        QModelIndex index = ui.treeView->currentIndex();
        switch (ke->key()) {
            case Qt::Key_F2: {
                const QModelIndex &source = proxyModel->mapToSource(index);
                QStandardItem *item =
                    bookmarkManager->treeBookmarkModel()->itemFromIndex(source);
                if (item) {
                    item->setEditable(true);
                    ui.treeView->edit(index);
                    item->setEditable(false);
                }
            }   break;

            case Qt::Key_Delete: {
                bookmarkManager->removeBookmarkItem(ui.treeView,
                    proxyModel->mapToSource(index));
                ui.bookmarkFolders->clear();
                ui.bookmarkFolders->addItems(bookmarkManager->bookmarkFolders());

                QString name = tr("Bookmarks");
                index = ui.treeView->currentIndex();
                if (index.isValid())
                    name = index.data().toString();
                ui.bookmarkFolders->setCurrentIndex(ui.bookmarkFolders->findText(name));
            }   break;

            default:
                break;
        }
    }
    return QObject::eventFilter(object, e);
}
/* Event handler for prepared listener(s): */
bool UIKeyboardHandlerScale::eventFilter(QObject *pWatchedObject, QEvent *pEvent)
{
    /* Check if pWatchedObject object is view: */
    if (UIMachineView *pWatchedView = isItListenedView(pWatchedObject))
    {
        /* Get corresponding screen index: */
        ulong uScreenId = m_views.key(pWatchedView);
        NOREF(uScreenId);
        /* Handle view events: */
        switch (pEvent->type())
        {
#ifndef Q_WS_MAC
            /* We don't want this on the Mac, cause there the menu bar isn't within the window
             * and popping up a menu there looks really ugly. */
            case QEvent::KeyPress:
            {
                /* Get key-event: */
                QKeyEvent *pKeyEvent = static_cast<QKeyEvent*>(pEvent);
                /* Process Host+Home for menu popup: */
                if (isHostKeyPressed() && pKeyEvent->key() == gMS->keySequence(UIMachineShortcuts::PopupMenuShortcut))
                {
                    /* Post request to show popup-menu: */
                    QTimer::singleShot(0, m_windows[uScreenId], SLOT(sltPopupMainMenu()));
                    /* Filter-out this event: */
                    return true;
                }
                break;
            }
#endif /* !Q_WS_MAC */
            default:
                break;
        }
    }

    /* Else just propagate to base-class: */
    return UIKeyboardHandler::eventFilter(pWatchedObject, pEvent);
}
Example #13
0
bool DebuggerConsole::eventFilter(QObject*, QEvent* event) {
	if (event->type() != QEvent::KeyPress) {
		return false;
	}
	if (m_history.isEmpty()) {
		return false;
	}
	QKeyEvent* keyEvent = static_cast<QKeyEvent*>(event);
	switch (keyEvent->key()) {
	case Qt::Key_Down:
		if (m_historyOffset <= 0) {
			return false;
		}
		--m_historyOffset;
		break;
	case Qt::Key_Up:
		if (m_historyOffset >= m_history.size()) {
			return false;
		}
		++m_historyOffset;
		break;
	case Qt::Key_End:
		m_historyOffset = 0;
		break;
	case Qt::Key_Home:
		m_historyOffset = m_history.size();
		break;
	default:
		return false;
	}
	if (m_historyOffset == 0) {
		m_ui.prompt->clear();
	} else {
		m_ui.prompt->setText(m_history[m_history.size() - m_historyOffset]);
	}
	return true;
}
Example #14
0
bool MultiQFileDialog::eventFilter(QObject *obj, QEvent *e)
{
    if (e->type() == QEvent::KeyPress)
    {
        QKeyEvent* keyEvent = dynamic_cast<QKeyEvent*>(e);
        Qt::KeyboardModifiers modifiers = QApplication::queryKeyboardModifiers();
        if (modifiers.testFlag(Qt::ControlModifier) && keyEvent && keyEvent->key() == Qt::Key_H)
        {
            if (showHidden)
            {
                if (multiSelect)
                {
                    setFilter(QDir::AllDirs | QDir::AllEntries | QDir::NoDotAndDotDot);
                }
                else
                {
                    setFilter(QDir::AllDirs | QDir::NoDotAndDotDot);
                }
            }
            else
            {
                if (multiSelect)
                {
                    setFilter(QDir::AllDirs | QDir::AllEntries | QDir::Hidden | QDir::System | QDir::NoDotAndDotDot);
                }
                else
                {
                    setFilter(QDir::AllDirs | QDir::Hidden | QDir::System | QDir::NoDotAndDotDot);
                }
            }
            showHidden = !showHidden;
        }
    }

    return QFileDialog::eventFilter(obj, e);
}
Example #15
0
/**
    \fn eventFilter
    \brief keyboard accessibility
*/
bool filtermainWindow::eventFilter(QObject* watched, QEvent* event)
{
    QKeyEvent *keyEvent;
    if(event->type() == QEvent::KeyPress)
    {
        keyEvent = (QKeyEvent*)event;
        switch (keyEvent->key())
        {
#ifndef __APPLE__
            case Qt::Key_Delete:
#else
            case Qt::Key_Backspace:
#endif
                remove(true);
                return true;
            case Qt::Key_Return:
                if(keyEvent->modifiers() & Qt::ControlModifier)
                {
                    accept();
                    return true;
                }
                if(ui.listFilterCategory->hasFocus())
                    filterFamilyClick(ui.listFilterCategory->currentRow());
                else if(availableList->hasFocus())
                    add(true);
                else if(activeList->hasFocus())
                    configure(true);
                else
                    accept();
                return true;
            default:
                return false;
        }
    }
    return QObject::eventFilter(watched, event);
}
Example #16
0
bool RShortcutLineEdit::eventFilter(QObject *obj, QEvent *event) {
    if (event->type() == QEvent::KeyPress) {
        QKeyEvent *keyEvent = static_cast<QKeyEvent *> (event);
        int nextKey = keyEvent->key();
        if (m_keyNum > 3 || nextKey == Qt::Key_Control || nextKey
                == Qt::Key_Shift || nextKey == Qt::Key_Meta || nextKey
                == Qt::Key_Alt)
            return true;

        nextKey |= translateModifiers(keyEvent->modifiers(), keyEvent->text());
        switch (m_keyNum) {
        case 0:
            m_key[0] = nextKey;
            break;
        case 1:
            m_key[1] = nextKey;
            break;
        case 2:
            m_key[2] = nextKey;
            break;
        case 3:
            m_key[3] = nextKey;
            break;
        default:
            break;
        }
        m_keyNum++;
        QKeySequence ks(m_key[0], m_key[1], m_key[2], m_key[3]);
        setText(ks);
        keyEvent->accept();
        return true;
    } else {
        // standard event processing
        return QObject::eventFilter(obj, event);
    }
}
//------------------------------------------------------------------------------
bool IgnoreUndoRedo::eventFilter(QObject* watched, QEvent* event)
{
	if (event->type() == QEvent::KeyPress)
	{
		QKeyEvent* keyEvent = static_cast<QKeyEvent*>(event);
		if (keyEvent->matches(QKeySequence::Undo)
			|| keyEvent->matches(QKeySequence::Redo))
		{
			QCoreApplication::postEvent(recipient, new QKeyEvent(
				keyEvent->type(), keyEvent->key(), keyEvent->modifiers(),
				keyEvent->nativeScanCode(), keyEvent->nativeVirtualKey(),
				keyEvent->nativeModifiers(), keyEvent->text(),
				keyEvent->isAutoRepeat(), keyEvent->count()
			));
			return true;
		}
		else
		{
			return false;
		}
	}
	else
		return QObject::eventFilter(watched, event);
}
Example #18
0
bool ClipboardHistorySelector::eventFilter(QObject *obj, QEvent *event)
{
    if (obj == ui.clipboardItemsTable) {
        if (event->type() == QEvent::KeyPress) {
            QKeyEvent *keyEvent = static_cast<QKeyEvent*>(event);
            int key = keyEvent->key();
            int row = -1;

            if (key == Qt::Key_Delete) {
                int current_row = ui.clipboardItemsTable->currentRow();
                if (current_row >= 0) {
                    m_ClipboardHistoryItems->removeAt(current_row);
                    SetupClipboardHistoryTable();
                    if (current_row >= ui.clipboardItemsTable->rowCount()) {
                        current_row--;
                    }
                    ui.clipboardItemsTable->selectRow(current_row);
                    return true;
                }
            }
            else if ((key >= Qt::Key_0) && (key <= Qt::Key_9)) {
                row = key - Qt::Key_0;
            }
            else if ((key >= Qt::Key_A) && (key <= Qt::Key_J)) {
                row = key - Qt::Key_A + 10;
            }
            if (row >= 0 && row < ui.clipboardItemsTable->rowCount()) {
                ui.clipboardItemsTable->selectRow(row);
                accept();
                return true;
            }
        }
    }
    // pass the event on to the parent class
    return QDialog::eventFilter(obj, event);
}
Example #19
0
bool
SpinField_Impl::isModifyEvent(QEvent *event)
{
	switch (event->type()) {
	case QEvent::KeyPress:
		{
			QKeyEvent *e = (QKeyEvent *)event;
			switch (e->key()) {
			case Qt::Key_Tab:
			case Qt::Key_Backtab:
				return false;
			}
			return true;
		}
		break;
	case QEvent::MouseButtonPress:
	case QEvent::MouseButtonDblClick:
	case QEvent::Wheel:
		return true;
	default:
		break;
	}
	return false;
}
Example #20
0
bool FakeVimHandler::Private::eventFilter(QObject *ob, QEvent *ev)
{
    QKeyEvent *keyEvent = static_cast<QKeyEvent *>(ev);
    int key = keyEvent->key();
    if (key == Key_Shift || key == Key_Alt || key == Key_Control
        || key == Key_Alt || key == Key_AltGr || key == Key_Meta)
        return false;

    // Fake "End of line"
    m_textedit = qobject_cast<QTextEdit *>(ob);
    m_plaintextedit = qobject_cast<QPlainTextEdit *>(ob);
    if (!m_textedit && !m_plaintextedit)
        return false;

    m_tc = EDITOR(textCursor());

    if (m_fakeEnd)
        m_tc.movePosition(Right, MoveAnchor, 1);

    if (key >= Key_A && key <= Key_Z
        && (keyEvent->modifiers() & Qt::ShiftModifier) == 0)
        key += 32;
    if ((keyEvent->modifiers() & Qt::ControlModifier) != 0)
        key += 256;
    handleKey(key, keyEvent->text());

    // We fake vi-style end-of-line behaviour
    m_fakeEnd = (atEol() && m_mode == CommandMode);

    if (m_fakeEnd)
        m_tc.movePosition(Left, MoveAnchor, 1);

    EDITOR(setTextCursor(m_tc));
    EDITOR(ensureCursorVisible());
    return true;
}
bool QWordCompleter::eventFilter(QObject *o, QEvent *e)
{
    if(widget()->inherits("QTextEdit") && e->type() == QEvent::KeyPress){
        QKeyEvent* ke = static_cast<QKeyEvent*>(e);
        switch (ke->key()) {
        case Qt::Key_Space:
            if(ke->modifiers().testFlag(Qt::ControlModifier)){
                QTextEdit* textEdit = qobject_cast<QTextEdit*>(widget());
                QTextCursor textCursor = textEdit->textCursor();
                textCursor.movePosition(QTextCursor::StartOfWord, QTextCursor::KeepAnchor);
                if(textCursor.selectedText().length() >= minCompletionPrefixLength){
                    setCompletionPrefix(textCursor.selectedText());
                    QRect rect = QRect(textEdit->cursorRect().bottomLeft(), QSize(100, 5));
                    complete(rect);
                }
                return true;
            }
            break;
        case Qt::Key_Enter:
        case Qt::Key_Return:
        case Qt::Key_Tab:
            if(popup()->isVisible()){
                popup()->hide();
                if(popup()->currentIndex().isValid()){
                    emit activated(popup()->currentIndex());
                    emit activated(popup()->currentIndex().data(completionRole()).toString());
                }
                return true;
            }
        default:
            break;
        }
    }
    return QCompleter::eventFilter(o, e);

}
Example #22
0
int ShortcutDialog::getModifiers(const QKeyEvent &event)
{
    int key = event.key();
    const Qt::KeyboardModifiers mods = event.modifiers();
    int result = 0;

    if (key == Qt::Key_Meta || key == Qt::Key_Super_L || key == Qt::Key_Super_R
            || key == Qt::Key_Hyper_L || key == Qt::Key_Hyper_R)
    {
        m_metaPressed = (event.type() == QEvent::KeyPress);
        COPYQ_LOG(QString("Shortcut \"Meta\" key %1.").arg(m_metaPressed ? "pressed" : "released"));
    }

    if (mods & Qt::ShiftModifier)
        result |= Qt::SHIFT;
    if (mods & Qt::ControlModifier)
        result |= Qt::CTRL;
    if (mods & Qt::AltModifier)
        result |= Qt::ALT;
    if (m_metaPressed || mods & Qt::MetaModifier)
        result |= Qt::META;

    return result;
}
Example #23
0
bool FocusWidgetFilter::eventFilter(QObject *, QEvent *e)
{
    switch (e->type()) {
    case QEvent::KeyPress:
    {
        QKeyEvent *ke = static_cast<QKeyEvent*>(e);
        switch (ke->key()) {
        case Qt::Key_Return:
            emit returnPressed();
            return true;
        case Qt::Key_Escape:
            emit escapePressed();
            return true;
        default:
            return false;
        };
    }
    case QEvent::Enter:
	emit mouseEntered();
	// pass through
    default:
	return false;
    };
}
bool History::eventFilter(QObject *target, QEvent *event)
{
   if(target ==plainTextEdit)//此判断可以省略,此程序中必进入此判断,但是有此句判断让程序更加规范
   {
         if (event->type() == QEvent::KeyPress)
         {
             QKeyEvent *keyEvent = static_cast<QKeyEvent *>(event);
             int code=keyEvent->key();
             if(code==Qt::Key_Up)
             {
                 plainTextEdit->moveCursor(QTextCursor::Up);
                 return false;
             }
             if(code==Qt::Key_Down)
             {
                 plainTextEdit->moveCursor(QTextCursor::Down);
                 return false;
             }
         }
         else
             return false;
   }
   return QObject::eventFilter(target, event);
}
Example #25
0
bool ItemEditorWidget::eventFilter(QObject *object, QEvent *event)
{
    if ( object == m_editor && event->type() == QEvent::KeyPress ) {
        QKeyEvent *keyevent = static_cast<QKeyEvent *>(event);
        int k = keyevent->key();

        if (k == Qt::Key_Return || k == Qt::Key_Enter) {
            Qt::KeyboardModifiers mods = keyevent->modifiers();
            if ( (mods & (Qt::ShiftModifier | Qt::AltModifier | Qt::MetaModifier)) == 0 ) {
                bool controlPressed = mods.testFlag(Qt::ControlModifier);
                if (m_saveOnReturnKey && controlPressed ) {
                    keyevent->setModifiers(mods & ~Qt::ControlModifier);
                    return false;
                }
                if ( m_saveOnReturnKey || controlPressed ) {
                    saveAndExit();
                    return true;
                }
            }
        }
    }

    return false;
}
Example #26
0
// Reimplemented 
bool QmvList::eventFilter( QObject *o, QEvent *e )
{
    if ( !o || !e )
	return TRUE;

    QmvItem *i = (QmvItem*)currentItem();
    if ( o != this &&e->type() == QEvent::KeyPress )
    {
	QKeyEvent *ke = (QKeyEvent*)e;
	if ( ( ke->key() == Key_Up || ke->key() == Key_Down ) &&
	     ( o != this || o != viewport() ) &&
	     !( ke->state() & ControlButton ) )
        {
	    QApplication::sendEvent( this, (QKeyEvent*)e );
	    return TRUE;
	} else
            if ( ( !o->inherits( "QLineEdit" ) ||
                   ( o->inherits( "QLineEdit" ) && ( (QLineEdit*)o )->isReadOnly() ) ) &&
                 i && i->hasSubItems() )
            {
                if ( !i->isOpen() &&
                     ( ke->key() == Key_Plus ||
                       ke->key() == Key_Right ))
                    i->setOpen( TRUE );
                else
                    if ( i->isOpen() &&
                         ( ke->key() == Key_Minus ||
                           ke->key() == Key_Left ) )
                        i->setOpen( FALSE );
            } else
                if ( ( ke->key() == Key_Return || ke->key() == Key_Enter ) && o->inherits( "QComboBox" ) )
                {
                    QKeyEvent ke2( QEvent::KeyPress, Key_Space, 0, 0 );
                    QApplication::sendEvent( o, &ke2 );
                    return TRUE;
                }
    }
    
    return QListView::eventFilter( o, e );
}
bool FormWindowManager::eventFilter(QObject *o, QEvent *e)
{
    if (!o->isWidgetType())
        return false;

    // If we don't have an active form, we only listen for WindowActivate to speed up integrations
    const QEvent::Type eventType = e->type();
    if (m_activeFormWindow == 0 && eventType != QEvent::WindowActivate)
        return false;

    switch (eventType) { // Uninteresting events
    case QEvent::Create:
    case QEvent::Destroy:
    case QEvent::ActionAdded:
    case QEvent::ActionChanged:
    case QEvent::ActionRemoved:
    case QEvent::ChildAdded:
    case QEvent::ChildPolished:
    case QEvent::ChildRemoved:
#ifndef QT_NO_CLIPBOARD
    case QEvent::Clipboard:
#endif
    case QEvent::ContentsRectChange:
    case QEvent::DeferredDelete:
    case QEvent::FileOpen:
    case QEvent::LanguageChange:
    case QEvent::MetaCall:
    case QEvent::ModifiedChange:
    case QEvent::Paint:
    case QEvent::PaletteChange:
    case QEvent::ParentAboutToChange:
    case QEvent::ParentChange:
    case QEvent::Polish:
    case QEvent::PolishRequest:
    case QEvent::QueryWhatsThis:
    case QEvent::StatusTip:
    case QEvent::StyleChange:
    case QEvent::Timer:
    case QEvent::ToolBarChange:
    case QEvent::ToolTip:
    case QEvent::WhatsThis:
    case QEvent::WhatsThisClicked:
    case QEvent::WinIdChange:
    case QEvent::DynamicPropertyChange:
    case QEvent::HoverEnter:
    case QEvent::HoverLeave:
    case QEvent::HoverMove:
    case QEvent::AcceptDropsChange:
        return false;
    default:
        break;
    }

    QWidget *widget = static_cast<QWidget*>(o);

    if (qobject_cast<WidgetHandle*>(widget)) { // ### remove me
        return false;
    }

    FormWindow *fw = FormWindow::findFormWindow(widget);
    if (fw == 0) {
        return false;
    }

    if (QWidget *managedWidget = findManagedWidget(fw, widget)) {
        // Prevent MDI subwindows from being closed by clicking at the title bar
        if (managedWidget != widget && eventType == QEvent::Close) {
            e->ignore();
            return true;
        }
        switch (eventType) {

        case QEvent::WindowActivate: {
            if (fw->parentWidget()->isWindow() && fw->isMainContainer(managedWidget) && activeFormWindow() != fw) {
                setActiveFormWindow(fw);
            }
        } break;

        case QEvent::WindowDeactivate: {
            if (o == fw && o == activeFormWindow())
                fw->repaintSelection();
        } break;

        case QEvent::KeyPress: {
            QKeyEvent *ke = static_cast<QKeyEvent*>(e);
            if (ke->key() == Qt::Key_Escape) {
                ke->accept();
                return true;
            }
        }
        // don't break...
        // Embedded Design: Drop on different form: Make sure the right form
        // window/device is active before having the widget created by the factory
        case QEvent::Drop:
            if (activeFormWindow() != fw)
                setActiveFormWindow(fw);
        // don't break...
        default: {
            if (fw->handleEvent(widget, managedWidget, e)) {
                return true;
            }
        } break;

        } // end switch
    }

    return false;
}
bool ShortcutGetter::event(QEvent *e)
{
	if (!capture) return QDialog::event(e);


	QString key;
	QStringList mods;
	QKeyEvent *k = static_cast<QKeyEvent*>(e);
			
	switch ( e->type() )
	{
		case QEvent::KeyPress :
					
		if ( bStop )
		{
			lKeys.clear();
			bStop = false;
		}

		key = keyToString(k->key());
		mods = modToString(k->modifiers());

		//qDebug("event: key.count: %d, mods.count: %d", key.count(), mods.count());

		if ( key.count() || mods.count() )
		{

			if ( key.count() && !lKeys.contains(key) )
				lKeys << key;

			for ( const auto &key : mods ) {
				if ( !lKeys.contains(key) )
					lKeys << key;
            }
		} else {
				key = k->text();
						
				if ( !lKeys.contains(key) )
					lKeys << key;
		}

		setText();
		break;
					
		case QEvent::KeyRelease :
					
			bStop = true;
			break;
					
			/*
		case QEvent::ShortcutOverride :
			leKey->setText("Shortcut override");
			break;
			*/
					
		default:
			return QDialog::event(e);
			break;
	}
	
	return true;
}
bool TocDlg::eventFilter(QObject *obj, QEvent *event)
{
    if(event->type() == QEvent::KeyPress) {
        QKeyEvent *keyEvent = static_cast<QKeyEvent*>(event);
        QString text;
        switch(keyEvent->key()) {
        case Qt::Key_Q:
            text = "1";
            break;
        case Qt::Key_W:
            text = "2";
            break;
        case Qt::Key_E:
            text = "3";
            break;
        case Qt::Key_R:
            text = "4";
            break;
        case Qt::Key_T:
            text = "5";
            break;
        case Qt::Key_Y:
            text = "6";
            break;
        case Qt::Key_U:
            text = "7";
            break;
        case Qt::Key_I:
            text = "8";
            break;
        case Qt::Key_O:
            text = "9";
            break;
        case Qt::Key_P:
            text = "0";
            break;
        case 0x2e:
            text = "%";
            break;
        case 0x01001103:
            text = "%";
            break;
        case Qt::Key_Up:
        {
            if(isPageUpdated) {
                on_actionUpdatePage_triggered();
                isPageUpdated = false;
            }
            int cur_num = getCurrentItemPosFromBegin(m_docview->getToc(),m_ui->treeWidget->currentItem(), 0);
            if((cur_num<=((curPage-1)*pageStrCount)+1) && (curPage==pageCount) && (pageCount>2)){
                moveUpPage();
                moveDownPage();
            }
            moveUp();
        }
            break;
        case Qt::Key_Down:
            moveDown();
            break;
        case Qt::Key_Select:
            qDebug() << focusWidget()->objectName().toAscii().data();
        {

            QString s = m_ui->treeWidget->currentIndex().data(Qt::UserRole).toString();
            m_docview->goToXPointer(s);
            close();
            return true;
        }
            break;
        }

        if(keyEvent->key() >= Qt::Key_0 && keyEvent->key() <= Qt::Key_9) text = keyEvent->text();
        if(!text.isEmpty()) {
            if(m_ui->pageNumEdit->text().lastIndexOf('%')>0) return true;
            if(text == QString('%')) {
                if(m_ui->pageNumEdit->text().toDouble()>100) return true;
            }

            m_ui->pageNumEdit->setText(m_ui->pageNumEdit->text() + text);
            return true;
        }
    }
    return false;
}
void Interactor2DVolumeEdit::UpdateCursor( QEvent* event, QWidget* wnd )
{
  if ( wnd->hasFocus() )
  {
    bool bMouseEvent = false;
    if ( event->type() == QEvent::MouseButtonPress ||
         event->type() == QEvent::MouseButtonRelease ||
         event->type() == QEvent::MouseMove)
    {
      QMouseEvent* e = ( QMouseEvent* )event;
      bMouseEvent = true;
      if ( ( ( e->button() == Qt::MidButton || e->button() == Qt::RightButton ) && !m_bEditing ) ||
           ( ( e->modifiers() & CONTROL_MODIFIER) && (e->modifiers() & Qt::ShiftModifier) ) )
      {
        Interactor2D::UpdateCursor( event, wnd );
        return;
      }
    }

    if ( m_nAction != EM_Fill )
    {
      if ( event->type() == QEvent::KeyPress )
      {
        QKeyEvent* e = ( QKeyEvent* )event;
        if ( e->key() == CONTROL_KEY && !(e->modifiers() & Qt::ShiftModifier) && !(e->modifiers() & Qt::AltModifier) )
        {
          wnd->setCursor( CursorFactory::CursorFill );
          return;
        }
      }

      if ( bMouseEvent && (( QMouseEvent* )event)->modifiers() & CONTROL_MODIFIER
           && !((( QMouseEvent* )event)->modifiers() & Qt::ShiftModifier)
           && !((( QMouseEvent* )event)->modifiers() & Qt::AltModifier) )
      {
        wnd->setCursor( CursorFactory::CursorFill );
      }
      else if ( m_nAction == EM_ColorPicker )
      {
        wnd->setCursor( CursorFactory::CursorColorPicker );
      }
      else //if ( bMouseEvent )
      {
        switch ( m_nAction )
        {
        case EM_Freehand:
          wnd->setCursor( CursorFactory::CursorPencil );
          break;
        case EM_Polyline:
          wnd->setCursor( CursorFactory::CursorPolyline );
          break;
        case EM_Contour:
          wnd->setCursor( CursorFactory::CursorContour );
          break;
        }
      }
    }
    else
    {
      wnd->setCursor( CursorFactory::CursorFill );
    }
  }
  else
  {
    Interactor2D::UpdateCursor( event, wnd );
  }
}