talons

Fork of Claws Mail https://www.claws-mail
Log | Files | Refs | README | LICENSE

commit a33ae166a64cdc536b97fbf672d057ebace7e545
parent 2018afa55f1121ba703251963f16fd201afa1bcb
Author: Jonathan Boeing <jonathan.n.boeing@gmail.com>
Date:   Sun, 25 Jul 2021 20:43:31 -0700

Fix UI overwrite when clearing LiteHTML message

Diffstat:
Msrc/plugins/litehtml_viewer/lh_widget.cpp | 30++++++++++--------------------
Msrc/plugins/litehtml_viewer/lh_widget.h | 3+--
2 files changed, 11 insertions(+), 22 deletions(-)

diff --git a/src/plugins/litehtml_viewer/lh_widget.cpp b/src/plugins/litehtml_viewer/lh_widget.cpp @@ -61,6 +61,7 @@ lh_widget::lh_widget() GtkWidget *item; m_force_render = false; + m_blank = false; /* scrolled window */ m_scrolled_window = gtk_scrolled_window_new(NULL, NULL); @@ -197,6 +198,7 @@ void lh_widget::open_html(const gchar *contents) adj = gtk_scrolled_window_get_vadjustment( GTK_SCROLLED_WINDOW(m_scrolled_window)); gtk_adjustment_set_value(adj, 0.0); + m_blank = false; } lh_widget_statusbar_pop(); } @@ -271,33 +273,21 @@ void lh_widget::redraw() return; } cr = gdk_cairo_create(GDK_DRAWABLE(gdkwin)); - draw(cr); - - cairo_destroy(cr); -} - -void lh_widget::paint_white() -{ - GdkWindow *gdkwin = gtk_widget_get_window(m_drawing_area); - if (gdkwin == NULL) { - g_warning("lh_widget::clear: No GdkWindow to draw on!"); - return; + if(!std::atomic_exchange(&m_blank, false)) { + draw(cr); + } else { + cairo_rectangle(cr, rect.x, rect.y, rect.width, rect.height); + cairo_set_source_rgb(cr, 255, 255, 255); + cairo_fill(cr); } - cairo_t *cr = gdk_cairo_create(GDK_DRAWABLE(gdkwin)); - - /* Paint white background. */ - gint width, height; - gdk_drawable_get_size(gdkwin, &width, &height); - cairo_rectangle(cr, 0, 0, width, height); - cairo_set_source_rgb(cr, 255, 255, 255); - cairo_fill(cr); cairo_destroy(cr); } + void lh_widget::clear() { m_html = nullptr; - paint_white(); + m_blank = true; m_rendered_width = 0; m_base_url.clear(); m_clicked_url.clear(); diff --git a/src/plugins/litehtml_viewer/lh_widget.h b/src/plugins/litehtml_viewer/lh_widget.h @@ -76,8 +76,6 @@ class lh_widget : public container_linux litehtml::tstring m_base_url; private: - void paint_white(); - gint m_rendered_width; GtkWidget *m_drawing_area; GtkWidget *m_scrolled_window; @@ -92,4 +90,5 @@ class lh_widget : public container_linux litehtml::tchar_t *m_font_name; int m_font_size; std::atomic<bool> m_force_render; + std::atomic<bool> m_blank; };