diff options
author | dec05eba <dec05eba@protonmail.com> | 2025-06-14 21:51:42 +0200 |
---|---|---|
committer | dec05eba <dec05eba@protonmail.com> | 2025-06-14 21:51:42 +0200 |
commit | 52f8dc5d05f5e34b0a3cf4bb4e4fe607f06965c5 (patch) | |
tree | 338a4a83685e0f0c7805ef3a884bec8274949f93 /src/QuickMedia.cpp | |
parent | a3843702b93513052e1e167d52f232b5a5301bd0 (diff) |
Better G key behavior in matrix, add ctrl+g for encrypt reply, load mpris from system path if available for videos
Diffstat (limited to 'src/QuickMedia.cpp')
-rw-r--r-- | src/QuickMedia.cpp | 45 |
1 files changed, 34 insertions, 11 deletions
diff --git a/src/QuickMedia.cpp b/src/QuickMedia.cpp index 8cdc874..3f59c14 100644 --- a/src/QuickMedia.cpp +++ b/src/QuickMedia.cpp @@ -7162,6 +7162,19 @@ namespace QuickMedia { chat_state = ChatState::TYPING_MESSAGE; }; + auto start_replying = [&](std::shared_ptr<BodyItem> selected_body_item) { + RoomExtraData &room_extra_data = matrix->get_room_extra_data(current_room); + chat_state = ChatState::REPLYING; + currently_operating_on_item = selected_body_item; + chat_input.set_editable(true); + if(get_config().matrix.clear_message_on_escape || !room_extra_data.editing_message_id.empty()) { + chat_input.set_text(""); + room_extra_data.editing_message_id.clear(); + } + replying_to_text.set_string("Replying to:"); + frame_skip_text_entry = true; + }; + for(size_t i = 0; i < tabs.size(); ++i) { tabs[i].body->on_top_reached = on_top_reached; tabs[i].body->on_bottom_reached = on_bottom_reached; @@ -7313,7 +7326,11 @@ namespace QuickMedia { if(event.key.code == mgl::Keyboard::G && !event.key.control) { start_typing(); - chat_input.set_text("/encrypt "); + std::string chat_text = chat_input.get_text(); + if(!string_starts_with(chat_text, "/encrypt")) { + chat_input.set_text("/encrypt " + chat_text); + chat_input.set_caret_index(chat_input.get_caret_index() + 9); + } } if(event.key.control && event.key.code == mgl::Keyboard::V) { @@ -7400,21 +7417,27 @@ namespace QuickMedia { // TODO: Show inline notification show_notification("QuickMedia", "You can't reply to a message that hasn't been sent yet"); } else { - RoomExtraData &room_extra_data = matrix->get_room_extra_data(current_room); - chat_state = ChatState::REPLYING; - currently_operating_on_item = selected; - chat_input.set_editable(true); - if(get_config().matrix.clear_message_on_escape || !room_extra_data.editing_message_id.empty()) { - chat_input.set_text(""); - room_extra_data.editing_message_id.clear(); - } - replying_to_text.set_string("Replying to:"); - frame_skip_text_entry = true; + start_replying(std::move(selected)); } } } } + if(event.key.code == mgl::Keyboard::G && event.key.control) { + std::shared_ptr<BodyItem> selected = tabs[selected_tab].body->get_selected_shared(); + if(static_cast<Message*>(selected->userdata)->event_id.empty()) { + // TODO: Show inline notification + show_notification("QuickMedia", "You can't reply to a message that hasn't been sent yet"); + } else { + start_replying(std::move(selected)); + std::string chat_text = chat_input.get_text(); + if(!string_starts_with(chat_text, "/encrypt")) { + chat_input.set_text("/encrypt " + chat_text); + chat_input.set_caret_index(chat_input.get_caret_index() + 9); + } + } + } + if(event.key.code == mgl::Keyboard::B && event.key.control) { // Reload room, goes to latest message l0l move_room = true; |