mirror of
https://github.com/AyuGram/AyuGramDesktop.git
synced 2026-08-04 02:50:36 +00:00
Set shortcut context for global menu shortcuts
This commit is contained in:
@@ -112,16 +112,18 @@ void SkipTaskbar(QWindow *window, bool skip) {
|
||||
}
|
||||
|
||||
void SendKeySequence(
|
||||
Qt::Key key,
|
||||
Qt::KeyboardModifiers modifiers = Qt::NoModifier) {
|
||||
const auto focused = static_cast<QObject*>(QApplication::focusWidget());
|
||||
Qt::Key key,
|
||||
Qt::KeyboardModifiers modifiers = Qt::NoModifier) {
|
||||
const auto focused = QApplication::focusWidget();
|
||||
if (qobject_cast<QLineEdit*>(focused)
|
||||
|| qobject_cast<QTextEdit*>(focused)
|
||||
|| dynamic_cast<HistoryInner*>(focused)) {
|
||||
QKeyEvent pressEvent(QEvent::KeyPress, key, modifiers);
|
||||
focused->event(&pressEvent);
|
||||
QKeyEvent releaseEvent(QEvent::KeyRelease, key, modifiers);
|
||||
focused->event(&releaseEvent);
|
||||
QApplication::postEvent(
|
||||
focused,
|
||||
new QKeyEvent(QEvent::KeyPress, key, modifiers));
|
||||
QApplication::postEvent(
|
||||
focused,
|
||||
new QKeyEvent(QEvent::KeyRelease, key, modifiers));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -232,6 +234,7 @@ void MainWindow::createGlobalMenu() {
|
||||
QKeySequence::Quit);
|
||||
|
||||
quit->setMenuRole(QAction::QuitRole);
|
||||
quit->setShortcutContext(Qt::WidgetShortcut);
|
||||
|
||||
auto edit = psMainMenu->addMenu(tr::lng_mac_menu_edit(tr::now));
|
||||
|
||||
@@ -240,6 +243,8 @@ void MainWindow::createGlobalMenu() {
|
||||
[] { SendKeySequence(Qt::Key_Z, Qt::ControlModifier); },
|
||||
QKeySequence::Undo);
|
||||
|
||||
psUndo->setShortcutContext(Qt::WidgetShortcut);
|
||||
|
||||
psRedo = edit->addAction(
|
||||
tr::lng_linux_menu_redo(tr::now),
|
||||
[] {
|
||||
@@ -249,6 +254,8 @@ void MainWindow::createGlobalMenu() {
|
||||
},
|
||||
QKeySequence::Redo);
|
||||
|
||||
psRedo->setShortcutContext(Qt::WidgetShortcut);
|
||||
|
||||
edit->addSeparator();
|
||||
|
||||
psCut = edit->addAction(
|
||||
@@ -256,21 +263,29 @@ void MainWindow::createGlobalMenu() {
|
||||
[] { SendKeySequence(Qt::Key_X, Qt::ControlModifier); },
|
||||
QKeySequence::Cut);
|
||||
|
||||
psCut->setShortcutContext(Qt::WidgetShortcut);
|
||||
|
||||
psCopy = edit->addAction(
|
||||
tr::lng_mac_menu_copy(tr::now),
|
||||
[] { SendKeySequence(Qt::Key_C, Qt::ControlModifier); },
|
||||
QKeySequence::Copy);
|
||||
|
||||
psCopy->setShortcutContext(Qt::WidgetShortcut);
|
||||
|
||||
psPaste = edit->addAction(
|
||||
tr::lng_mac_menu_paste(tr::now),
|
||||
[] { SendKeySequence(Qt::Key_V, Qt::ControlModifier); },
|
||||
QKeySequence::Paste);
|
||||
|
||||
psPaste->setShortcutContext(Qt::WidgetShortcut);
|
||||
|
||||
psDelete = edit->addAction(
|
||||
tr::lng_mac_menu_delete(tr::now),
|
||||
[] { SendKeySequence(Qt::Key_Delete); },
|
||||
QKeySequence(Qt::ControlModifier | Qt::Key_Backspace));
|
||||
|
||||
psDelete->setShortcutContext(Qt::WidgetShortcut);
|
||||
|
||||
edit->addSeparator();
|
||||
|
||||
psBold = edit->addAction(
|
||||
@@ -278,16 +293,22 @@ void MainWindow::createGlobalMenu() {
|
||||
[] { SendKeySequence(Qt::Key_B, Qt::ControlModifier); },
|
||||
QKeySequence::Bold);
|
||||
|
||||
psBold->setShortcutContext(Qt::WidgetShortcut);
|
||||
|
||||
psItalic = edit->addAction(
|
||||
tr::lng_menu_formatting_italic(tr::now),
|
||||
[] { SendKeySequence(Qt::Key_I, Qt::ControlModifier); },
|
||||
QKeySequence::Italic);
|
||||
|
||||
psItalic->setShortcutContext(Qt::WidgetShortcut);
|
||||
|
||||
psUnderline = edit->addAction(
|
||||
tr::lng_menu_formatting_underline(tr::now),
|
||||
[] { SendKeySequence(Qt::Key_U, Qt::ControlModifier); },
|
||||
QKeySequence::Underline);
|
||||
|
||||
psUnderline->setShortcutContext(Qt::WidgetShortcut);
|
||||
|
||||
psStrikeOut = edit->addAction(
|
||||
tr::lng_menu_formatting_strike_out(tr::now),
|
||||
[] {
|
||||
@@ -297,6 +318,8 @@ void MainWindow::createGlobalMenu() {
|
||||
},
|
||||
Ui::kStrikeOutSequence);
|
||||
|
||||
psStrikeOut->setShortcutContext(Qt::WidgetShortcut);
|
||||
|
||||
psBlockquote = edit->addAction(
|
||||
tr::lng_menu_formatting_blockquote(tr::now),
|
||||
[] {
|
||||
@@ -306,6 +329,8 @@ void MainWindow::createGlobalMenu() {
|
||||
},
|
||||
Ui::kBlockquoteSequence);
|
||||
|
||||
psBlockquote->setShortcutContext(Qt::WidgetShortcut);
|
||||
|
||||
psMonospace = edit->addAction(
|
||||
tr::lng_menu_formatting_monospace(tr::now),
|
||||
[] {
|
||||
@@ -315,6 +340,8 @@ void MainWindow::createGlobalMenu() {
|
||||
},
|
||||
Ui::kMonospaceSequence);
|
||||
|
||||
psMonospace->setShortcutContext(Qt::WidgetShortcut);
|
||||
|
||||
psClearFormat = edit->addAction(
|
||||
tr::lng_menu_formatting_clear(tr::now),
|
||||
[] {
|
||||
@@ -324,6 +351,8 @@ void MainWindow::createGlobalMenu() {
|
||||
},
|
||||
Ui::kClearFormatSequence);
|
||||
|
||||
psClearFormat->setShortcutContext(Qt::WidgetShortcut);
|
||||
|
||||
edit->addSeparator();
|
||||
|
||||
psSelectAll = edit->addAction(
|
||||
@@ -331,6 +360,8 @@ void MainWindow::createGlobalMenu() {
|
||||
[] { SendKeySequence(Qt::Key_A, Qt::ControlModifier); },
|
||||
QKeySequence::SelectAll);
|
||||
|
||||
psSelectAll->setShortcutContext(Qt::WidgetShortcut);
|
||||
|
||||
edit->addSeparator();
|
||||
|
||||
auto prefs = edit->addAction(
|
||||
@@ -343,6 +374,7 @@ void MainWindow::createGlobalMenu() {
|
||||
QKeySequence(Qt::ControlModifier | Qt::Key_Comma));
|
||||
|
||||
prefs->setMenuRole(QAction::PreferencesRole);
|
||||
prefs->setShortcutContext(Qt::WidgetShortcut);
|
||||
|
||||
auto tools = psMainMenu->addMenu(tr::lng_linux_menu_tools(tr::now));
|
||||
|
||||
|
||||
Reference in New Issue
Block a user