View Issue Details

IDProjectCategoryView StatusLast Update
0000964LazarusWidgetsetpublic2015-03-14 12:48
ReporterTony Maro Assigned To 
PrioritynormalSeveritymajorReproducibilityalways
Status acknowledgedResolutionreopened 
Platformi386OSLinux 
Product Version0.9.7 (CVS) 
Summary0000964: GTK2 seems to paint in reverse order...?
DescriptionTesting TruckBites built for GTK2, I find that the TTilePanel component will redraw itself ontop of a TButton. The TTilePanel is a TPanel with a custom paint job to display a bitmap on it's background. While resizing the window, the panel will be grey and the buttons draw, however as soon as done, the TPanel appears to get the last paint message, rather than the components sitting on top of it.
Steps To ReproduceThe same behavior appears to happen in the OI of Lazarus - the ".." icon and the dropdown when setting event handlers will flicker in and out - mostly out.
Tagsgtk2
Fixed in Revision
LazTarget-
WidgetsetGTK 2
Attached Files

Relationships

related to 0019562 acknowledged The scrollbar of visual component appears behind other component 
related to 0008346 closedZeljan Rikalo TPageControl: Edit components are invisible - possible z-order problem 
related to 0021966 new Build with GTK2 win32/win64, IDE Tool bar icons will lose!! 
related to 0023158 confirmedZeljan Rikalo drag-n-drop accross PageControl Tabs make TImages disappear 
child of 0008165 closedMattias Gaertner GTK2 - suggested to be default 

Activities

AndrewH

2006-10-14 22:46

developer   ~0009351

a patch has been submitted to fix this

AndrewH

2006-10-31 21:41

developer   ~0009594

The patch I sent was applied and now things mostly work. I would rate this as 85% fixed.

Vincent Snijders

2007-03-05 10:14

manager   ~0011729

What is the remaining 15%?

Andrew, do you think we can close this issue and open an new one for the (unknown) remaining 15%?

AndrewH

2007-05-05 04:50

developer   ~0012498

Okay, the problem is that TButtons on gtk2 do not have their own window. "Windows" provide cropping.

We connect to the gtk1/2 'expose-event' signal _after_ the widgetset has painted so when we paint, we are painting over the button.

It is easy to connect to the event _before_ instead but I'm not sure what effect that would have on everything else.

FYI gtk1 TButtons have their own window so that is why there is no problem with gtk1.

Gtk2 Widgets that are affected by this "bug":
http://www.gtk.org/tutorial/x483.html

Felipe Monteiro de Carvalho

2008-02-09 23:42

developer   ~0017681

That link is old. Here is the new one:

http://library.gnome.org/devel/gtk-tutorial/stable/x483.html

Maybe we should just put something with a window under the button?

Felipe Monteiro de Carvalho

2008-02-09 23:43

developer   ~0017682

This widget seams to be perfekt for the task:

http://library.gnome.org/devel/gtk-tutorial/stable/c1228.html#SEC-EVENTBOX

Felipe Monteiro de Carvalho

2008-02-10 15:53

developer   ~0017705

It should now be fixed for TButton.

Felipe Monteiro de Carvalho

2008-02-22 17:29

developer   ~0017926

I need a list of which Lazarus controls are affected by the bug.

Vincent Snijders

2008-04-01 11:47

manager   ~0018521

No further feedback.

Zeljan Rikalo

2009-03-25 08:12

developer   ~0026369

Is this fixed ? Any ?

Vincent Snijders

2009-03-25 08:15

manager   ~0026371

I don't know, I just don't think Tony is going to re-test it.

Feel free to do a quick test yourself (if you didn't do it already) and resolve the issue.

Felipe Monteiro de Carvalho

2009-03-25 15:56

developer   ~0026378

It's not fixed and I think that almost all controls with a handle are affected.

Mattias Gaertner

2009-08-20 00:40

manager   ~0030008

The bug seems to be about the paint event order.
Can you provide a test example?

I don't understand the notes. And I don't see why do you think that adding a xwindow for every widget is the only solution. One of the advantages of gtk2 over gtk1 is the reduced number of xwindows.

Mattias Gaertner

2009-08-20 09:13

manager   ~0030011

Generally speaking:
For some tasks you need to paint before the widgetset (drawing background), for some tasks you need to paint after the widgetset (drawing markers) and for some tasks you need to draw after the widgetset, but before any child is painted.
So no single paint event fits for all cases. And not all widgets support all three events.
Because paint events are expensive, especially if they are not used, we need a mechanism to enable the needed paint events. Some kind of capability for the three cases and some kind of set to enable them.

Felipe Monteiro de Carvalho

2009-08-20 19:57

developer   ~0030037

I dont know if it is the only solution, it was the only solution I could come up with. If they have a window then they are painted in the right order.

Zeljan Rikalo

2012-02-04 12:34

developer   ~0056358

Not fixable in 1.0 time window, postponed.

Issue History

Date Modified Username Field Change
2005-06-16 14:24 Tony Maro New Issue
2005-06-16 14:24 Tony Maro Widgetset => GTK 2
2005-08-02 10:12 Vincent Snijders Target => post 1.0
2006-10-11 04:39 Felipe Monteiro de Carvalho Status new => acknowledged
2006-10-14 22:46 AndrewH Note Added: 0009351
2006-10-31 21:41 AndrewH Note Added: 0009594
2007-03-05 10:01 Vincent Snijders LazTarget post 1.0 => 1.2
2007-03-05 10:14 Vincent Snijders Note Added: 0011729
2007-03-05 10:14 Vincent Snijders Status acknowledged => feedback
2007-05-05 04:50 AndrewH Note Added: 0012498
2008-02-09 23:42 Felipe Monteiro de Carvalho Note Added: 0017681
2008-02-09 23:43 Felipe Monteiro de Carvalho Note Added: 0017682
2008-02-09 23:44 Felipe Monteiro de Carvalho Status feedback => assigned
2008-02-09 23:44 Felipe Monteiro de Carvalho Assigned To => Felipe Monteiro de Carvalho
2008-02-09 23:50 Felipe Monteiro de Carvalho Relationship added related to 0008346
2008-02-10 15:53 Felipe Monteiro de Carvalho Note Added: 0017705
2008-02-22 17:29 Felipe Monteiro de Carvalho Note Added: 0017926
2008-02-22 17:29 Felipe Monteiro de Carvalho Status assigned => feedback
2008-04-01 11:47 Vincent Snijders Status feedback => resolved
2008-04-01 11:47 Vincent Snijders Resolution open => fixed
2008-04-01 11:47 Vincent Snijders Note Added: 0018521
2008-04-17 19:16 Felipe Monteiro de Carvalho Status resolved => feedback
2008-04-17 19:16 Felipe Monteiro de Carvalho Resolution fixed => reopened
2008-04-17 19:17 Felipe Monteiro de Carvalho Status feedback => confirmed
2008-04-17 19:21 Felipe Monteiro de Carvalho Tag Attached: gtk2
2008-07-16 20:35 Vincent Snijders Relationship added child of 0008165
2009-02-04 21:53 Felipe Monteiro de Carvalho Assigned To Felipe Monteiro de Carvalho =>
2009-03-25 08:12 Zeljan Rikalo Note Added: 0026369
2009-03-25 08:12 Zeljan Rikalo Status confirmed => feedback
2009-03-25 08:15 Vincent Snijders Note Added: 0026371
2009-03-25 15:56 Felipe Monteiro de Carvalho Note Added: 0026378
2009-06-08 22:29 Vincent Snijders Status feedback => acknowledged
2009-08-20 00:40 Mattias Gaertner Note Added: 0030008
2009-08-20 09:13 Mattias Gaertner Note Added: 0030011
2009-08-20 19:57 Felipe Monteiro de Carvalho Note Added: 0030037
2009-09-27 11:19 Vincent Snijders LazTarget 1.2 => 1.0
2009-09-27 11:19 Vincent Snijders Target Version => 1.0.0
2011-10-06 10:47 Vincent Snijders Relationship added related to 0019562
2012-02-04 12:34 Zeljan Rikalo LazTarget 1.0 => 1.2
2012-02-04 12:34 Zeljan Rikalo Note Added: 0056358
2012-03-13 07:50 Vincent Snijders Target Version 1.0.0 => 1.2.0
2014-01-14 15:10 Martin Friebe LazTarget 1.2 => 1.4
2014-01-14 15:12 Martin Friebe Target Version 1.2.0 => 1.4
2014-09-10 01:21 Juha Manninen LazTarget 1.4 => -
2014-09-10 01:21 Juha Manninen Target Version 1.4 =>
2015-03-14 12:45 Zeljan Rikalo Relationship added related to 0027419
2015-03-14 12:46 Zeljan Rikalo Relationship added related to 0021966
2015-03-14 12:47 Zeljan Rikalo Relationship added related to 0023158
2015-03-14 12:48 Zeljan Rikalo Relationship deleted related to 0027419