On Wed, 2012-08-01 at 19:56 +0400, Ivan Timofeev wrote:
> With gtk3 I see similar effect for normal (not toolbar) buttons, edits
> etc. Why do you think this is related to toolbars?
Oh - quite probably it is a generic problem :-) but we noticed it in
toolbars first.
> I solved the problem by the following change in renderAreaToPix:
> cairo_data[x*4+0] * alpha
That appears to me to break the compositing :-) it might happen to
improve things for this case of course.
Ultimately, we need to draw those widgets just once. With the attached
debug patch I get this:
paint 0x8cfe720: N9framework7ToolBarE
stack paint
paint 0x8d41e30: 16ImplBorderWindow
paint 20 1 combobox 425,37 75x25
stack paint
paint 0x8d41a90: N3svx19SvxFontSizeBox_ImplE
stack paint
paint 0x8d489c0: 4Edit
paint 20 1 combobox 425,37 75x25
Which seems like it renders the borders twice on that edit (AFAICS) -
although that is not what we want. It'd be great to work out why and
unwind that I think.
Thanks ! :-)
Michael.
--
[email protected] <><, Pseudo Engineer, itinerant idiot
diff --git a/vcl/source/window/window.cxx b/vcl/source/window/window.cxx
index a39d855..550d16c 100644
--- a/vcl/source/window/window.cxx
+++ b/vcl/source/window/window.cxx
@@ -2421,8 +2421,10 @@ void Window::ImplCallPaint( const Region* pRegion, sal_uInt16 nPaintFlags )
{
// Paint from the bottom child window and frontward.
Window* pTempWindow = mpWindowImpl->mpLastChild;
+ fprintf (stderr, "stack paint\n");
while ( pTempWindow )
{
+ fprintf (stderr, "paint %p: %s\n", pTempWindow, typeid(*pTempWindow).name());
if ( pTempWindow->mpWindowImpl->mbVisible )
pTempWindow->ImplCallPaint( pChildRegion, nPaintFlags );
pTempWindow = pTempWindow->mpWindowImpl->mpPrev;
diff --git a/vcl/unx/gtk3/gdi/gtk3salnativewidgets-gtk.cxx b/vcl/unx/gtk3/gdi/gtk3salnativewidgets-gtk.cxx
index 5e0972f..23115df 100644
--- a/vcl/unx/gtk3/gdi/gtk3salnativewidgets-gtk.cxx
+++ b/vcl/unx/gtk3/gdi/gtk3salnativewidgets-gtk.cxx
@@ -697,6 +697,11 @@ void GtkSalGraphics::PaintCombobox( GtkStyleContext *context,
// plus its actual draw rect excluding adornment
areaRect = rControlRectangle;
+ fprintf (stderr, "paint %d %d combobox %d,%d %dx%d\n",
+ (int)nType, (int)nPart,
+ (int)areaRect.Left(), (int)areaRect.Top(),
+ (int)areaRect.GetWidth(), (int)areaRect.GetHeight());
+
buttonRect = NWGetComboBoxButtonRect( nType, PART_BUTTON_DOWN, areaRect );
if( nPart == PART_BUTTON_DOWN )
buttonRect.Left() += 1;
_______________________________________________
LibreOffice mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/libreoffice