lazarus/lcl/widgetset
2021-07-03 01:02:04 +00:00
..
README.txt
wsbuttons.pp
wscalendar.pp LCL/Calendar: Remove option dsStartMonday from Calendar.DisplaySettings and replace it by Delphi-compatible Calendar.FirstDayOfWeek 2020-05-25 14:16:57 +00:00
wschecklst.pp
wscomctrls.pp lcl-cocoa: restoring the items checked status after the sort, if WS needs some extra assistance for that. bug #39121. potential resolution for #38137 2021-07-03 01:02:04 +00:00
wscontrols.pp lcl: update accessibility patch by David Jenkins. bug #38603 2021-03-18 02:48:41 +00:00
wsdesigner.pp
wsdialogs.pp
wsextctrls.pp
wsextdlgs.pp
wsfactory.pas LCL/ShellCtrls: Display default shell icons in TShellListView. Issue #18247. 2021-03-07 14:39:17 +00:00
wsforms.pp LCL-GTK2: Paint a form with one color also after scrolling. Issue #16183, patch from Joeny Ang. 2020-11-30 20:52:19 +00:00
wsgrids.pp lcl: less hints 2020-01-31 14:10:00 +00:00
wsimglist.pp
wslazdeviceapis.pas
wslclclasses.pp LCL: Remove useless FillChar() in procedure CreateVClass. Issue #34408, patch by Bartek Dajewski. 2021-05-11 06:46:26 +00:00
wsmenus.pp
wspairsplitter.pp LCL/PairSplitter: Fix Position parameter and panel widths being out of sync under some circumstances (https://forum.lazarus.freepascal.org/index.php/topic,46726.msg333773.html#msg333773). 2019-09-21 20:48:04 +00:00
wsproc.pp
wsreferences.pp
wsshellctrls.pp LCL/ShellCtrls: Display default shell icons in TShellListView. Issue #18247. 2021-03-07 14:39:17 +00:00
wsspin.pp T(Float)SpinEdit: implement property EditorEnabled. ATM win32/64 and wince only. Issue #0038736. 2021-04-14 07:25:00 +00:00
wsstdctrls.pp LCL: Implement TextHint for TComboBox. Issue #30682. 2020-08-13 11:23:38 +00:00
wstoolwin.pp

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