lazarus/lcl/widgetset
marc 7e76353e18 + Added debug code to dump VClass tree
git-svn-id: trunk@12498 -
2007-10-16 23:25:46 +00:00
..
README.txt fixed typos from Darius 2006-10-23 10:14:31 +00:00
wsactnlist.pp fixed references to COPYING.LCL 2006-05-05 05:52:08 +00:00
wsarrow.pp added class keyword to proc bodies for fpc 2.1.1 2006-05-27 17:40:59 +00:00
wsbuttons.pp LCL: moved TButton from buttons unit to stdctrls (bug #9137), compilation tested on windows for gtk2, qt and win32 widgetset 2007-06-25 08:34:41 +00:00
wscalendar.pp added class keyword to proc bodies for fpc 2.1.1 2006-05-27 17:40:59 +00:00
wschecklst.pp added class keyword to proc bodies for fpc 2.1.1 2006-05-27 17:40:59 +00:00
wsclistbox.pp fixed references to COPYING.LCL 2006-05-05 05:52:08 +00:00
wscomctrls.pp declared TListItem.Position, TListItem.Top, TListItem.Left with implementation for win32 (0008426) 2007-04-18 15:51:50 +00:00
wscontrols.pp Widgetset: introduce new WSWinControl method GetMouseInteractiveInDesigner to ask control about its needs in mouse messages/events in design time 2007-09-29 16:55:13 +00:00
wsdbctrls.pp fixed references to COPYING.LCL 2006-05-05 05:52:08 +00:00
wsdbgrids.pp fixed references to COPYING.LCL 2006-05-05 05:52:08 +00:00
wsdesigner.pp lcl: 2007-09-07 16:39:27 +00:00
wsdialogs.pp lcl wsdialogs: use LCLType to have a 64 bits THandle on 64 bits cpus from Giulio Bernardi 2006-11-26 19:19:22 +00:00
wsdirsel.pp fixed references to COPYING.LCL 2006-05-05 05:52:08 +00:00
wseditbtn.pp fixed references to COPYING.LCL 2006-05-05 05:52:08 +00:00
wsextctrls.pp Added gtk2 implementation for TTrayIcon and removed the widgetset implementations of GetCanvas on TTrayIcon. 2007-09-21 09:10:30 +00:00
wsextdlgs.pp fixed references to COPYING.LCL 2006-05-05 05:52:08 +00:00
wsfilectrl.pp fixed references to COPYING.LCL 2006-05-05 05:52:08 +00:00
wsforms.pp forgotten files + cleanup 2007-09-03 08:04:01 +00:00
wsgrids.pp fixed references to COPYING.LCL 2006-05-05 05:52:08 +00:00
wsimglist.pp * fixed alpha images on 16 bpp 2007-09-01 02:46:24 +00:00
wslclclasses.pp + Added debug code to dump VClass tree 2007-10-16 23:25:46 +00:00
wsmaskedit.pp fixed references to COPYING.LCL 2006-05-05 05:52:08 +00:00
wsmenus.pp Qt: menu rework (also fixed issue with destroying menu items - they had not destroyed their handles) 2007-09-24 06:03:19 +00:00
wspairsplitter.pp - little behavior adjusting for non gtk pairsplitter 2007-05-29 15:05:25 +00:00
wsproc.pp Qt: 2007-09-14 05:05:19 +00:00
wsspin.pp LCL: - derived T(Float)SpinEdit from TCustomEdit to remove redundant code 2007-05-26 09:57:11 +00:00
wsstdctrls.pp - move TWidgetset.GetListBoxXXX to TWSCustomListBox.GetXXX (where XXX in [GetIndexAtY, GetItemRect]) *untested on Carbon and wince* 2007-08-28 17:44:28 +00:00
wstoolwin.pp fixed references to COPYING.LCL 2006-05-05 05:52:08 +00:00

This directory contains all skeleton widget set component 
classes. These classes will never get instantiated and may 
only contain class functions.
  
=========  
IMPORTANT
=========  

Derivation and inheritance of classes is different then one
might be used to. It will be explained by the following 
examples.

Suppose the following LCL class hierarchy:

 TLCLComponent
     |
  TControl
     |
 TWinControl
 
the corresponding WS skeleton would be

 TWSLCLComponent
      |
  TWSControl
      |
 TWSWinControl


When method X of TWSControl gets implemented by 
widgetset Q the hierarchy looks like

 TWSLCLComponent
      |
  TWSControl.X --> TQWSControl.X
      |
 TWSWinControl


Calling TWSWinControl.X doesn't call TQWSControl.X since
it's parent is TWSControl. This problem is solved by 
modifying the class hierarchy at runtime.
When a component class is registered by RegisterWSComponent,
the class is copied and the vmt entries are adjusted so 
that the hierarchy looks like:


 TWSLCLComponent
      |
  TWSControl.X --> TQWSControl.X
                        |
                   TWSWinControl

In this case, calling TWSWinControl.X will call the overridden 
TQWSControl.X. The only thing which doesn't get handled is the 
inherited statement. Suppose there is also a TQWSWinControl.X 
which implements a few extra steps. In a normal situation one 
would have called "inherited". The call to inherited is
resolved at compile time and would in this example to a call to
TWSControl.X. That is not what we want.
To get around this, call the parent yourself:
  TWSWinControlClass(ClassParent).X