Browse Source

room-history: Show member details when clicking on a reaction sender

merge-requests/1461/merge
Paul van Tilburg 2 years ago
parent
commit
a98dd9d05b
No known key found for this signature in database
GPG Key ID: C6DE073EDA9EEC4D
  1. 30
      src/session/view/content/room_history/message_row/reaction/reaction_popover.rs
  2. 2
      src/session/view/content/room_history/message_row/reaction/reaction_popover.ui

30
src/session/view/content/room_history/message_row/reaction/reaction_popover.rs

@ -1,7 +1,16 @@
use adw::subclass::prelude::*;
use gtk::{gio, glib, prelude::*, CompositeTemplate};
use adw::{prelude::*, subclass::prelude::*};
use gtk::{
gio,
glib::{self, clone},
CompositeTemplate,
};
use crate::session::view::content::room_history::member_timestamp::row::MemberTimestampRow;
use crate::{
components::UserProfileDialog,
session::view::content::room_history::member_timestamp::{
row::MemberTimestampRow, MemberTimestamp,
},
};
mod imp {
use glib::subclass::InitializingObject;
@ -46,9 +55,24 @@ mod imp {
impl ReactionPopover {
/// Set the reaction senders to display.
fn set_senders(&self, senders: gio::ListStore) {
let obj = self.obj();
self.senders.set(Some(&senders));
self.list
.set_model(Some(&gtk::NoSelection::new(Some(senders))));
self.list
.connect_activate(clone!(@weak obj => move |_, pos| {
let Some(member) = obj.senders()
.and_then(|list| list.item(pos))
.and_downcast::<MemberTimestamp>()
.and_then(|ts| ts.member())
else { return; };
let dialog = UserProfileDialog::new();
dialog.set_room_member(member);
dialog.present(&obj);
obj.popdown();
}));
}
}
}

2
src/session/view/content/room_history/message_row/reaction/reaction_popover.ui

@ -13,13 +13,13 @@
<property name="max-content-height">280</property>
<property name="child">
<object class="GtkListView" id="list">
<property name="single-click-activate">True</property>
<property name="factory">
<object class="GtkBuilderListItemFactory">
<property name="bytes"><![CDATA[
<?xml version="1.0" encoding="UTF-8"?>
<interface>
<template class="GtkListItem">
<property name="activatable">False</property>
<property name="selectable">False</property>
<property name="child">
<object class="ContentMemberTimestampRow">

Loading…
Cancel
Save