Skip to content

Commit 323d822

Browse files
committed
remove nested view for pre tag
1 parent ff7f225 commit 323d822

File tree

1 file changed

+18
-33
lines changed

1 file changed

+18
-33
lines changed

src/draw_ctx.rs

Lines changed: 18 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
use crate::common::MARGIN;
21
use crate::config;
32

43
use glib::IsA;
@@ -90,12 +89,23 @@ impl DrawCtx {
9089
tag_a.set_foreground(Some("blue"));
9190
tag_a.set_underline(gtk::pango::Underline::Low);
9291

92+
let tag_pre = DrawCtx::create_tag(
93+
"pre",
94+
self.config
95+
.fonts
96+
.preformatted
97+
.as_ref()
98+
.unwrap_or(&config::Fonts::default_preformatted()),
99+
);
100+
tag_pre.set_wrap_mode(gtk::WrapMode::None);
101+
93102
tag_table.add(&tag_h1);
94103
tag_table.add(&tag_h2);
95104
tag_table.add(&tag_h3);
96105
tag_table.add(&tag_q);
97106
tag_table.add(&tag_p);
98107
tag_table.add(&tag_a);
108+
tag_table.add(&tag_pre);
99109
tag_table
100110
}
101111
pub fn create_tag(name: &str, config: &crate::config::Font) -> gtk::TextTag {
@@ -133,39 +143,14 @@ impl DrawCtx {
133143
}
134144

135145
pub fn insert_preformatted(&self, text_iter: &mut gtk::TextIter, line: &str) {
136-
let nested_view = {
137-
let text_view = gtk::TextView::new();
138-
let text_buffer = text_view.buffer();
139-
140-
let tag_pre = DrawCtx::create_tag(
141-
"pre",
142-
self.config
143-
.fonts
144-
.preformatted
145-
.as_ref()
146-
.unwrap_or(&config::Fonts::default_preformatted()),
147-
);
148-
tag_pre.set_wrap_mode(gtk::WrapMode::None);
149-
150-
text_buffer.tag_table().add(&tag_pre);
151-
text_buffer.insert(&mut text_buffer.end_iter(), line);
152-
text_buffer.apply_tag_by_name(
153-
"pre",
154-
text_buffer.iter_at_line_index(0, 0).as_ref().unwrap(),
155-
&text_buffer.end_iter(),
156-
);
157-
text_view
158-
};
159-
160-
let scrolled_window = gtk::ScrolledWindow::new();
161-
scrolled_window.set_child(Some(&nested_view));
162-
scrolled_window.set_vscrollbar_policy(gtk::PolicyType::Never);
163-
self.insert_widget(text_iter, &scrolled_window);
146+
let start = text_iter.offset();
147+
self.text_buffer.insert(text_iter, line);
148+
self.text_buffer.apply_tag_by_name(
149+
"pre",
150+
&self.text_buffer.iter_at_offset(start),
151+
text_iter,
152+
);
164153

165-
let text_view = self.text_view.clone();
166-
self.text_view.connect_width_request_notify(move |_| {
167-
scrolled_window.set_width_request(text_view.allocated_width() - MARGIN * 2)
168-
});
169154
self.text_buffer.insert(text_iter, "\n");
170155
}
171156
pub fn insert_paragraph(&self, text_iter: &mut gtk::TextIter, line: &str) {

0 commit comments

Comments
 (0)