lazarus/lcl/widgetset
maxim fec94eed66 Merged revision(s) 51694-51695 #d0a37e168d-#d0a37e168d from trunk:
LCL: Implement TCustomCalendar.GetCalendarView. Patch by Zoran Vučenović.
........
LCL: Try not to close CalendarDialogs if CurrentView <> cvMonth. Partly resolves Issue #0029646.
........

git-svn-id: branches/fixes_1_6@52170 -
2016-04-11 22:09:58 +00:00
..
README.txt
wsbuttons.pp
wscalendar.pp Merged revision(s) 51694-51695 #d0a37e168d-#d0a37e168d from trunk: 2016-04-11 22:09:58 +00:00
wschecklst.pp
wscomctrls.pp LCL: fixed GetDefaultColor for TStaticText, TNoteBook, TTabSheet, TGroupBox, bug #26535 2014-08-06 16:54:36 +00:00
wscontrols.pp LCL: Implement TCustomMemo.ScrollBy. Refactor widgetset ScrollBy from ScrollingWinControl to WinControl. Solves issue #29067. 2015-11-29 18:45:53 +00:00
wsdesigner.pp
wsdialogs.pp
wsextctrls.pp LCL: fixed GetDefaultColor for TStaticText, TNoteBook, TTabSheet, TGroupBox, bug #26535 2014-08-06 16:54:36 +00:00
wsextdlgs.pp
wsfactory.pas LCL: Remove arrow from widgetsets. 2015-06-05 17:11:00 +00:00
wsforms.pp merge r51019 #bbb3a9aa1d,r51022,r51023,r51032,r51036,r51044,r51046,r51047,r51049: PopupParent/PopupMode bug fixes: 2015-12-27 20:27:38 +00:00
wsgrids.pp merged r50847 #9cd8314204,r50848,r50851,r50854: grids: fix editor position. Issue #29196 2015-12-17 10:51:30 +00:00
wsimglist.pp
wslazdeviceapis.pas
wslclclasses.pp
wsmenus.pp
wspairsplitter.pp
wsproc.pp LCL: Implement TCustomMemo.ScrollBy. Refactor widgetset ScrollBy from ScrollingWinControl to WinControl. Solves issue #29067. 2015-11-29 18:45:53 +00:00
wsreferences.pp
wsspin.pp
wsstdctrls.pp LCL: Implement TCustomCheckbox.Alignment (Windows only), partly resolves issue #0012343. 2014-11-22 14:38:26 +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