Browse Source

sender-avatar: Do not subclass AdwBin to fix focus

fractal-7
Kévin Commaille 2 years ago
parent
commit
404910dd67
No known key found for this signature in database
GPG Key ID: 29A48C1F03620416
  1. 12
      src/session/view/content/room_history/sender_avatar/mod.rs
  2. 3
      src/session/view/content/room_history/sender_avatar/mod.ui

12
src/session/view/content/room_history/sender_avatar/mod.rs

@ -36,6 +36,8 @@ mod imp {
)]
#[properties(wrapper_type = super::SenderAvatar)]
pub struct SenderAvatar {
#[template_child]
pub avatar: TemplateChild<Avatar>,
#[template_child]
pub user_id_btn: TemplateChild<gtk::Button>,
/// Whether this avatar is active.
@ -55,14 +57,13 @@ mod imp {
impl ObjectSubclass for SenderAvatar {
const NAME: &'static str = "ContentSenderAvatar";
type Type = super::SenderAvatar;
type ParentType = adw::Bin;
type ParentType = gtk::Widget;
fn class_init(klass: &mut Self::Class) {
Avatar::ensure_type();
Self::bind_template(klass);
Self::Type::bind_template_callbacks(klass);
klass.set_layout_manager_type::<gtk::BinLayout>();
klass.set_css_name("sender-avatar");
klass.set_accessible_role(gtk::AccessibleRole::ToggleButton);
@ -192,11 +193,12 @@ mod imp {
popover.unparent();
popover.remove_child(&*self.user_id_btn);
}
self.avatar.unparent();
}
}
impl WidgetImpl for SenderAvatar {}
impl BinImpl for SenderAvatar {}
impl AccessibleImpl for SenderAvatar {
fn first_accessible_child(&self) -> Option<gtk::Accessible> {
@ -413,7 +415,7 @@ mod imp {
glib::wrapper! {
/// An avatar with a popover menu for room members.
pub struct SenderAvatar(ObjectSubclass<imp::SenderAvatar>)
@extends gtk::Widget, adw::Bin, @implements gtk::Accessible;
@extends gtk::Widget, @implements gtk::Accessible;
}
#[gtk::template_callbacks]

3
src/session/view/content/room_history/sender_avatar/mod.ui

@ -1,9 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<interface>
<template class="ContentSenderAvatar" parent="AdwBin">
<template class="ContentSenderAvatar" parent="GtkWidget">
<accessibility>
<property name="description" translatable="yes">Open Sender Context Menu</property>
</accessibility>
<property name="focusable">true</property>
<property name="valign">start</property>
<child>
<object class="ComponentsAvatar" id="avatar">

Loading…
Cancel
Save