HackStudio: Allow switching between editors with Ctrl+E / Ctrl+Shift+E
This commit is contained in:
parent
f844715106
commit
538d5f82c1
Notes:
sideshowbarker
2024-07-19 11:21:43 +09:00
Author: https://github.com/awesomekling Commit: https://github.com/SerenityOS/serenity/commit/538d5f82c14
2 changed files with 35 additions and 5 deletions
|
@ -24,3 +24,9 @@ private:
|
|||
RefPtr<GLabel> m_cursor_label;
|
||||
RefPtr<Editor> m_editor;
|
||||
};
|
||||
|
||||
template<>
|
||||
inline bool is<EditorWrapper>(const CObject& object)
|
||||
{
|
||||
return !strcmp(object.class_name(), "EditorWrapper");
|
||||
}
|
||||
|
|
|
@ -133,12 +133,36 @@ int main(int argc, char** argv)
|
|||
auto switch_to_next_editor = GAction::create("Switch to next editor", { Mod_Ctrl, Key_E }, [&](auto&) {
|
||||
if (g_all_editor_wrappers.size() <= 1)
|
||||
return;
|
||||
// FIXME: This will only work correctly when there are 2 editors. Make it work for any editor count.
|
||||
for (auto& wrapper : g_all_editor_wrappers) {
|
||||
if (&wrapper == ¤t_editor_wrapper())
|
||||
continue;
|
||||
wrapper.editor().set_focus(true);
|
||||
Vector<EditorWrapper*> wrappers;
|
||||
inner_splitter->for_each_child_of_type<EditorWrapper>([&](auto& child) {
|
||||
wrappers.append(&child);
|
||||
return IterationDecision::Continue;
|
||||
});
|
||||
for (int i = 0; i < wrappers.size(); ++i) {
|
||||
if (g_current_editor_wrapper.ptr() == wrappers[i]) {
|
||||
if (i == wrappers.size() - 1)
|
||||
wrappers[0]->editor().set_focus(true);
|
||||
else
|
||||
wrappers[i + 1]->editor().set_focus(true);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
auto switch_to_previous_editor = GAction::create("Switch to previous editor", { Mod_Ctrl | Mod_Shift, Key_E }, [&](auto&) {
|
||||
if (g_all_editor_wrappers.size() <= 1)
|
||||
return;
|
||||
Vector<EditorWrapper*> wrappers;
|
||||
inner_splitter->for_each_child_of_type<EditorWrapper>([&](auto& child) {
|
||||
wrappers.append(&child);
|
||||
return IterationDecision::Continue;
|
||||
});
|
||||
for (int i = wrappers.size() - 1; i >= 0; --i) {
|
||||
if (g_current_editor_wrapper.ptr() == wrappers[i]) {
|
||||
if (i == 0)
|
||||
wrappers.last()->editor().set_focus(true);
|
||||
else
|
||||
wrappers[i - 1]->editor().set_focus(true);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue