4785bed
commit f1d711aa84c95430319fd92ffbcb03df36e5e76e
4785bed
Author: Hubert Figuière <hub@figuiere.net>
4785bed
Date:   Sat Feb 22 10:41:55 2014 -0500
4785bed
4785bed
    Bug 13582 - Fix redraw region in custom widget.
4785bed
    
4785bed
    Cherry-picked from trunk@33870 and reworked for 3.0.x
4785bed
4785bed
diff --git a/src/af/gr/gtk/gr_UnixCairoGraphics.cpp b/src/af/gr/gtk/gr_UnixCairoGraphics.cpp
4785bed
index 4c8d23c..15d7a7d 100644
4785bed
--- a/src/af/gr/gtk/gr_UnixCairoGraphics.cpp
4785bed
+++ b/src/af/gr/gtk/gr_UnixCairoGraphics.cpp
4785bed
@@ -520,7 +520,7 @@ void GR_UnixCairoGraphics::_beginPaint()
4785bed
 		{
4785bed
 			UT_ASSERT(ev->type == GDK_EXPOSE || ev->type == GDK_DAMAGE);
4785bed
 			if (ev->type == GDK_EXPOSE || ev->type == GDK_DAMAGE)
4785bed
-				UT_ASSERT(ev->expose.window == m_pWin);
4785bed
+				UT_ASSERT(ev->expose.window == m_pWin || ev->expose.window == gdk_window_get_effective_parent (m_pWin));
4785bed
 		}
4785bed
 	}
4785bed
 #endif
4785bed
diff --git a/src/af/xap/gtk/xap_UnixCustomWidget.cpp b/src/af/xap/gtk/xap_UnixCustomWidget.cpp
4785bed
index b0b7015..5150afe 100644
4785bed
--- a/src/af/xap/gtk/xap_UnixCustomWidget.cpp
4785bed
+++ b/src/af/xap/gtk/xap_UnixCustomWidget.cpp
4785bed
@@ -45,16 +45,18 @@ void XAP_UnixCustomWidget::_fe::expose(XAP_UnixCustomWidget *self, GdkEventExpos
4785bed
 #endif
4785bed
 {
4785bed
 #if GTK_CHECK_VERSION(3,0,0)
4785bed
-	GdkEventExpose *ev = reinterpret_cast<GdkEventExpose *>(gtk_get_current_event());
4785bed
-#endif
4785bed
+	self->m_cr = cr;
4785bed
+	double x1, y1, x2, y2;
4785bed
+	cairo_clip_extents(cr, &x1, &y1, &x2, &y2;;
4785bed
+
4785bed
+	UT_Rect r(x1, y1, x2 - x1, y2 - y1);
4785bed
+#else
4785bed
 	UT_Rect r(
4785bed
 			ev->area.x,
4785bed
 			ev->area.y,
4785bed
 			ev->area.width,
4785bed
 			ev->area.height
4785bed
 		);
4785bed
-#if GTK_CHECK_VERSION(3,0,0)
4785bed
-	self->m_cr = cr;
4785bed
 #endif
4785bed
 	self->draw(&r);
4785bed
 }