Browse Source

sidebar: Fix room highlight

merge-requests/1327/merge
Kévin Commaille 4 years ago
parent
commit
0a73302554
No known key found for this signature in database
GPG Key ID: DD507DAE96E8245C
  1. 8
      src/session/room/highlight_flags.rs
  2. 2
      src/session/room/mod.rs
  3. 42
      src/session/sidebar/room_row.rs

8
src/session/room/highlight_flags.rs

@ -2,18 +2,12 @@ use gtk::glib;
#[glib::flags(name = "HighlightFlags")]
pub enum HighlightFlags {
#[flags_value(name = "NONE")]
NONE = 0b00000000,
#[flags_value(name = "HIGHLIGHT")]
HIGHLIGHT = 0b00000001,
#[flags_value(name = "BOLD")]
BOLD = 0b00000010,
#[flags_value(skip)]
HIGHLIGHT_BOLD = Self::HIGHLIGHT.bits() | Self::BOLD.bits(),
}
impl Default for HighlightFlags {
fn default() -> Self {
HighlightFlags::NONE
HighlightFlags::empty()
}
}

2
src/session/room/mod.rs

@ -639,7 +639,7 @@ impl Room {
if count > 0 {
HighlightFlags::HIGHLIGHT
} else {
HighlightFlags::NONE
HighlightFlags::empty()
}
}

42
src/session/sidebar/room_row.rs

@ -187,44 +187,40 @@ impl RoomRow {
priv_.signal_handler.replace(Some(room.connect_notify_local(
Some("highlight"),
clone!(@weak self as obj => move |_, _| {
obj.set_highlight();
obj.update_highlight();
}),
)));
if room.category() == RoomType::Left {
priv_.display_name.add_css_class("dim-label");
}
self.set_highlight();
}
priv_.room.replace(room);
self.update_highlight();
self.update_actions();
self.notify("room");
}
fn set_highlight(&self) {
fn update_highlight(&self) {
let priv_ = self.imp();
if let Some(room) = &*priv_.room.borrow() {
match room.highlight() {
HighlightFlags::NONE => {
priv_.notification_count.remove_css_class("highlight");
priv_.display_name.remove_css_class("bold");
}
HighlightFlags::HIGHLIGHT => {
priv_.notification_count.add_css_class("highlight");
priv_.display_name.remove_css_class("bold");
}
HighlightFlags::BOLD => {
priv_.display_name.add_css_class("bold");
priv_.notification_count.remove_css_class("highlight");
}
HighlightFlags::HIGHLIGHT_BOLD => {
priv_.notification_count.add_css_class("highlight");
priv_.display_name.add_css_class("bold");
}
_ => {}
};
let flags = room.highlight();
if flags.contains(HighlightFlags::HIGHLIGHT) {
priv_.notification_count.add_css_class("highlight");
} else {
priv_.notification_count.remove_css_class("highlight");
}
if flags.contains(HighlightFlags::BOLD) {
priv_.display_name.add_css_class("bold");
} else {
priv_.display_name.remove_css_class("bold");
}
} else {
priv_.notification_count.remove_css_class("highlight");
priv_.display_name.remove_css_class("bold");
}
}

Loading…
Cancel
Save