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. -- michael.me...@suse.com <><, 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 LibreOffice@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice