Skip to content

Commit 97a1a50

Browse files
Merge branch 'master' into windows-clang
2 parents 8228ae6 + 146619d commit 97a1a50

File tree

4 files changed

+46
-28
lines changed

4 files changed

+46
-28
lines changed

rpcs3/rpcs3qt/shortcut_dialog.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ shortcut_dialog::shortcut_dialog(const std::shared_ptr<gui_settings> gui_setting
3939
key_sequence_edit->setObjectName(shortcut.name);
4040
key_sequence_edit->setMinimumWidth(label->sizeHint().width());
4141
key_sequence_edit->setKeySequence(key_sequence);
42+
key_sequence_edit->setClearButtonEnabled(true);
4243

4344
m_values[shortcut.name] = key_sequence.toString();
4445

rpcs3/rpcs3qt/shortcut_handler.cpp

Lines changed: 43 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -17,30 +17,41 @@ shortcut_handler::shortcut_handler(gui::shortcuts::shortcut_handler_id handler_i
1717
continue;
1818
}
1919

20-
const QKeySequence key_sequence = sc_settings.get_key_sequence(info, gui_settings);
21-
QShortcut* shortcut = new QShortcut(key_sequence, parent);
22-
shortcut->setAutoRepeat(info.allow_auto_repeat);
20+
QKeySequence key_sequence = sc_settings.get_key_sequence(info, gui_settings);
2321

2422
shortcut_key_info key_info{};
25-
key_info.shortcut = shortcut;
23+
key_info.shortcut = make_shortcut(shortcut_key, info, key_sequence);
2624
key_info.info = info;
27-
key_info.key_sequence = key_sequence;
25+
key_info.key_sequence = std::move(key_sequence);
2826

29-
m_shortcuts[shortcut_key] = key_info;
27+
m_shortcuts[shortcut_key] = std::move(key_info);
28+
}
29+
}
3030

31-
connect(shortcut, &QShortcut::activated, this, [this, key = shortcut_key]()
32-
{
33-
handle_shortcut(key, m_shortcuts[key].key_sequence);
34-
});
35-
connect(shortcut, &QShortcut::activatedAmbiguously, this, [this, key = shortcut_key]()
36-
{
37-
// TODO: do not allow same shortcuts and remove this connect
38-
// activatedAmbiguously will trigger if you have the same key sequence for several shortcuts
39-
const QKeySequence& key_sequence = m_shortcuts[key].key_sequence;
40-
shortcut_log.error("%s: Shortcut activated ambiguously: %s (%s)", m_handler_id, key, key_sequence.toString());
41-
handle_shortcut(key, key_sequence);
42-
});
31+
QShortcut* shortcut_handler::make_shortcut(gui::shortcuts::shortcut key, const shortcut_info& info, const QKeySequence& key_sequence)
32+
{
33+
if (key_sequence.isEmpty())
34+
{
35+
return nullptr;
4336
}
37+
38+
QShortcut* shortcut = new QShortcut(key_sequence, parent());
39+
shortcut->setAutoRepeat(info.allow_auto_repeat);
40+
41+
connect(shortcut, &QShortcut::activated, this, [this, key]()
42+
{
43+
handle_shortcut(key, m_shortcuts[key].key_sequence);
44+
});
45+
connect(shortcut, &QShortcut::activatedAmbiguously, this, [this, key]()
46+
{
47+
// TODO: do not allow same shortcuts and remove this connect
48+
// activatedAmbiguously will trigger if you have the same key sequence for several shortcuts
49+
const QKeySequence& key_sequence = m_shortcuts[key].key_sequence;
50+
shortcut_log.error("%s: Shortcut activated ambiguously: %s (%s)", m_handler_id, key, key_sequence.toString());
51+
handle_shortcut(key, key_sequence);
52+
});
53+
54+
return shortcut;
4455
}
4556

4657
void shortcut_handler::update()
@@ -61,9 +72,22 @@ void shortcut_handler::update()
6172

6273
shortcut_key_info& key_info = m_shortcuts[shortcut_key];
6374
key_info.key_sequence = key_sequence;
75+
6476
if (key_info.shortcut)
6577
{
66-
key_info.shortcut->setKey(key_sequence);
78+
if (key_sequence.isEmpty())
79+
{
80+
key_info.shortcut->deleteLater();
81+
key_info.shortcut = nullptr;
82+
}
83+
else
84+
{
85+
key_info.shortcut->setKey(key_sequence);
86+
}
87+
}
88+
else
89+
{
90+
key_info.shortcut = make_shortcut(shortcut_key, info, key_sequence);
6791
}
6892
}
6993
}

rpcs3/rpcs3qt/shortcut_handler.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ public Q_SLOTS:
2323

2424
private:
2525
void handle_shortcut(gui::shortcuts::shortcut shortcut_key, const QKeySequence& key_sequence);
26+
QShortcut* make_shortcut(gui::shortcuts::shortcut key, const shortcut_info& info, const QKeySequence& key_sequence);
2627

2728
gui::shortcuts::shortcut_handler_id m_handler_id;
2829
std::shared_ptr<gui_settings> m_gui_settings;

rpcs3/rpcs3qt/shortcut_settings.cpp

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -114,13 +114,5 @@ QKeySequence shortcut_settings::get_key_sequence(const shortcut_info& entry, con
114114

115115
const QString saved_value = gui_settings->GetValue(get_shortcut_gui_save(entry.name)).toString();
116116

117-
QKeySequence key_sequence = QKeySequence::fromString(saved_value);
118-
119-
if (key_sequence.isEmpty())
120-
{
121-
// Use the default shortcut if no shortcut was configured
122-
key_sequence = QKeySequence::fromString(entry.key_sequence);
123-
}
124-
125-
return key_sequence;
117+
return QKeySequence::fromString(saved_value);
126118
}

0 commit comments

Comments
 (0)