diff --git a/src/home/room_screen.rs b/src/home/room_screen.rs index 0f8ad193..ed90c992 100644 --- a/src/home/room_screen.rs +++ b/src/home/room_screen.rs @@ -17,6 +17,9 @@ use matrix_sdk::{ matrix_uri::MatrixId, uint, EventId, MatrixToUri, MatrixUri, MilliSecondsSinceUnixEpoch, OwnedEventId, OwnedRoomId, RoomId, UserId }, OwnedServerName, + sync::UnreadNotificationsCount, + Room, + Client, }; use matrix_sdk_ui::timeline::{ self, EventTimelineItem, MemberProfileChange, Profile, ReactionsByKeyBySender, RepliedToInfo, @@ -38,6 +41,8 @@ use crate::{ }; use rangemap::RangeSet; +use crate::persistent_state::restore_session; + live_design! { import makepad_draw::shader::std::*; import makepad_widgets::base::*; @@ -662,21 +667,50 @@ live_design! { jump_to_bottom_button = { width: 50, height: 50, draw_icon: {svg_file: (ICO_JUMP_TO_BOTTOM)}, - icon_walk: {width: 20, height: 20, margin: {top: 10, right: 4.5} } - // draw a circular background for the button + icon_walk: {width: 20, height: 20, margin: {top: 10, right: 4.5} }, draw_bg: { instance background_color: #edededee, fn pixel(self) -> vec4 { let sdf = Sdf2d::viewport(self.pos * self.rect_size); let c = self.rect_size * 0.5; - sdf.circle(c.x, c.x, c.x) + sdf.circle(c.x, c.x, c.x); sdf.fill_keep(self.background_color); return sdf.result } } } - } + // Badge overlay for unread messages + unread_message_badge = { + width: 20, height: 20, + align: {x: 1.0, y: -1.0}, + margin: {top: -5.0, right: -5.0}, + visible: false, + + draw_bg: { + instance background_color: #FF0000FF, + fn pixel(self) -> vec4 { + let sdf = Sdf2d::viewport(self.pos * self.rect_size); + let c = self.rect_size * 0.5; + sdf.circle(c.x, c.x, c.x); + sdf.fill_keep(self.background_color); + return sdf.result; + } + } + + // Text to display the unread message count + label =