diff --git a/fractal-gtk/src/widgets/message.rs b/fractal-gtk/src/widgets/message.rs index ea8103ec..fe5b40b5 100644 --- a/fractal-gtk/src/widgets/message.rs +++ b/fractal-gtk/src/widgets/message.rs @@ -540,35 +540,44 @@ fn render_html_block(container: &MessageBoxContainer, msg: &Message, block: &Htm set_label_styles(&w); w.set_markup(&s); w.get_style_context().add_class(&format!("h{}", n)); + container.connect_right_click_menu(msg, Some(&w.upcast_ref::())); w.upcast::() } HtmlBlock::UList(elements) => { - let w = gtk::Label::new(None); - set_label_styles(&w); + let bx = gtk::Box::new(gtk::Orientation::Vertical, 6); - let text = elements - .iter() - .map(|li| format!(" • {}", li)) - .collect::>() - .join("\n"); - w.set_markup(&text); + for li in elements.iter() { + let h_box = gtk::Box::new(gtk::Orientation::Horizontal, 6); + let bullet = gtk::Label::new(Some("•")); + bullet.set_valign(gtk::Align::Start); + let w = gtk::Label::new(None); + set_label_styles(&w); + h_box.add(&bullet); + h_box.add(&w); + w.set_markup(&li); + container.connect_right_click_menu(msg, Some(&w.upcast_ref::())); + bx.add(&h_box); + } - w.upcast::() + bx.upcast::() } HtmlBlock::OList(elements) => { - let w = gtk::Label::new(None); - set_label_styles(&w); - - let text = elements - .iter() - .enumerate() - .map(|(i, li)| format!(" {}. {}", i + 1, li)) - .collect::>() - .join("\n"); + let bx = gtk::Box::new(gtk::Orientation::Vertical, 6); - w.set_markup(&text); + for (i, ol) in elements.iter().enumerate() { + let h_box = gtk::Box::new(gtk::Orientation::Horizontal, 6); + let bullet = gtk::Label::new(Some(&format!("{}.", i + 1))); + bullet.set_valign(gtk::Align::Start); + let w = gtk::Label::new(None); + set_label_styles(&w); + h_box.add(&bullet); + h_box.add(&w); + w.set_markup(&ol); + bx.add(&h_box); + container.connect_right_click_menu(msg, Some(&w.upcast_ref::())); + } - w.upcast::() + bx.upcast::() } HtmlBlock::Code(s) => { let buffer = sourceview4::Buffer::new::(None); @@ -578,6 +587,7 @@ fn render_html_block(container: &MessageBoxContainer, msg: &Message, block: &Htm view.set_editable(false); view.set_wrap_mode(gtk::WrapMode::WordChar); view.get_style_context().add_class("codeview"); + container.connect_right_click_menu(msg, Some(&view.upcast_ref::())); view.upcast::() } HtmlBlock::Quote(blocks) => { @@ -593,10 +603,10 @@ fn render_html_block(container: &MessageBoxContainer, msg: &Message, block: &Htm let w = gtk::Label::new(None); set_label_styles(&w); w.set_markup(&s); + container.connect_right_click_menu(msg, Some(&w.upcast_ref::())); w.upcast::() } }; - container.connect_right_click_menu(msg, Some(&widget)); widget }