aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/QuickMedia.cpp17
-rw-r--r--src/Text.cpp8
2 files changed, 11 insertions, 14 deletions
diff --git a/src/QuickMedia.cpp b/src/QuickMedia.cpp
index a0e9b78..3922ceb 100644
--- a/src/QuickMedia.cpp
+++ b/src/QuickMedia.cpp
@@ -3434,8 +3434,12 @@ namespace QuickMedia {
};
std::unordered_map<std::string, RoomBodyData> body_items_by_room_id;
+ std::string current_room_id;
+ RoomBodyData *current_room_body_data = nullptr;
- auto process_new_room_messages = [matrix, &body_items_by_room_id](RoomSyncMessages &room_sync_messages, bool only_show_mentions) mutable {
+ bool is_window_focused = window.hasFocus();
+
+ auto process_new_room_messages = [matrix, &body_items_by_room_id, &current_room_id, &is_window_focused](RoomSyncMessages &room_sync_messages, bool only_show_mentions) mutable {
for(auto &[room, messages] : room_sync_messages) {
bool was_mentioned = false;
for(auto &message : messages) {
@@ -3443,7 +3447,8 @@ namespace QuickMedia {
was_mentioned = true;
message->mentions_me = false;
// TODO: What if the message or username begins with "-"? also make the notification image be the avatar of the user
- show_notification("QuickMedia matrix - " + matrix->message_get_author_displayname(message.get()) + " (" + room->name + ")", message->body);
+ if(!is_window_focused || room->id != current_room_id)
+ show_notification("QuickMedia matrix - " + matrix->message_get_author_displayname(message.get()) + " (" + room->name + ")", message->body);
}
}
@@ -3481,12 +3486,6 @@ namespace QuickMedia {
}
};
- // The room id should be saved in a file when changing viewed room.
- std::string current_room_id;
- RoomBodyData *current_room_body_data = nullptr;
-
- // get_all_room_messages is not needed here because its done in the loop, where the initial timeout is 0ms
-
enum class ChatState {
NAVIGATING,
TYPING_MESSAGE,
@@ -3711,8 +3710,6 @@ namespace QuickMedia {
return result;
};
- bool is_window_focused = true;
-
while (current_page == Page::CHAT) {
sf::Int32 frame_time_ms = frame_timer.restart().asMilliseconds();
while (window.pollEvent(event)) {
diff --git a/src/Text.cpp b/src/Text.cpp
index d58473d..c1adc5d 100644
--- a/src/Text.cpp
+++ b/src/Text.cpp
@@ -97,6 +97,7 @@ namespace QuickMedia
{
this->maxWidth = maxWidth;
dirty = true;
+ dirtyCaret = true;
}
}
@@ -567,7 +568,7 @@ namespace QuickMedia
}
if(closest_index != -1)
return closest_index;
- return 0;
+ return startIndex;
}
// TODO: This can be optimized by using binary search
@@ -588,7 +589,7 @@ namespace QuickMedia
}
if(closest_index != -1)
return closest_index;
- return num_vertices;
+ return startIndex;
}
// TODO: Optimize text editing by only processing the changed parts in updateGeometry.
@@ -697,8 +698,7 @@ namespace QuickMedia
{
updateGeometry();
- if(dirtyCaret || caretMoveDirection != CaretMoveDirection::NONE)
- {
+ if(editable && (dirtyCaret || caretMoveDirection != CaretMoveDirection::NONE)) {
updateCaret();
dirtyCaret = false;
caretMoveDirection = CaretMoveDirection::NONE;