lazarus/lcl/widgetset
martin 2c03a634c5 Merged revision(s) 64165 #7d90e95e0b, 64167-64168 #51302252eb-#51302252eb, 64195 #aa8f480e17, 64199 #473e65ba01, 64211 #1c9c36d205, 64267 #5197500844 from trunk:
LCL: Propogate TAction.ImageIndex to TSpeedButton.ImageIndex. Issue #38135, patch from Anton Kavalenka.
........
LCL-GTK2: Paint a form with one color also after scrolling. Issue #16183, patch from Joeny Ang.
........
LCL/CheckGroup: Fix items and checkboxes getting out of sync upon Items.Insert. Issue #38157.
........
LCL/Grids: Fix grids truncating cell height during editing if TitleFont.Size is smaller than Font.Size. Issue #38203).
........
IDE: Prevent an infinite loop when comparing files. Issue #38185, patch from Domingo Galmés.
........
LCL/FileListbox: Update selected filename when ItemIndex is set
........
LCL: Fix selected items of TComboBoxEx and TCheckComboBox not being painted with color clHighlightText.
........

git-svn-id: branches/fixes_2_0@64612 -
2021-02-18 01:23:59 +00:00
..
README.txt
wsbuttons.pp Reverts changes to the handling of vclass due to issues in gtk2 2017-06-01 19:36:16 +00:00
wscalendar.pp Reverts changes to the handling of vclass due to issues in gtk2 2017-06-01 19:36:16 +00:00
wschecklst.pp Reverts changes to the handling of vclass due to issues in gtk2 2017-06-01 19:36:16 +00:00
wscomctrls.pp lcl: adding sortindicator for the listview control 2020-02-24 04:12:44 +00:00
wscontrols.pp LCL, win32: add TWSWinControlClass.GetDoubleBuffered 2018-02-16 11:15:36 +00:00
wsdesigner.pp Reverts changes to the handling of vclass due to issues in gtk2 2017-06-01 19:36:16 +00:00
wsdialogs.pp Reverts changes to the handling of vclass due to issues in gtk2 2017-06-01 19:36:16 +00:00
wsextctrls.pp Reverts changes to the handling of vclass due to issues in gtk2 2017-06-01 19:36:16 +00:00
wsextdlgs.pp Reverts changes to the handling of vclass due to issues in gtk2 2017-06-01 19:36:16 +00:00
wsfactory.pas LCL: High-DPI ImageList: LCL runtime and win32 2018-01-10 12:46:42 +00:00
wsforms.pp Merged revision(s) 64165 #7d90e95e0b, 64167-64168 #51302252eb-#51302252eb, 64195 #aa8f480e17, 64199 #473e65ba01, 64211 #1c9c36d205, 64267 #5197500844 from trunk: 2021-02-18 01:23:59 +00:00
wsgrids.pp Reverts changes to the handling of vclass due to issues in gtk2 2017-06-01 19:36:16 +00:00
wsimglist.pp LCL: High-DPI ImageList: LCL runtime and win32 2018-01-10 12:46:42 +00:00
wslazdeviceapis.pas Reverts changes to the handling of vclass due to issues in gtk2 2017-06-01 19:36:16 +00:00
wslclclasses.pp Merged revision 60964 #3ddc6c5a7b from trunk 2019-07-29 12:40:38 +00:00
wsmenus.pp Move debug- & other non-GUI stuff from LCLProc to LazUtilities and LazLogger in package LazUtils. 2018-06-13 13:59:07 +00:00
wspairsplitter.pp Merged revision(s) 61909 #028edb1573 from trunk: 2019-09-26 17:25:46 +00:00
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 Improve license headers in sources, part 1. Refer to details about license, not copyright. Remove jargon about lack of warranty, it is covered in license already. 2013-05-24 18:30:06 +00:00
wsspin.pp Reverts changes to the handling of vclass due to issues in gtk2 2017-06-01 19:36:16 +00:00
wsstdctrls.pp LCL: publish DoubleBuffered & ParentDoubleBuffered 2018-06-03 20:36:08 +00:00
wstoolwin.pp Improve license headers in sources, part 1. Refer to details about license, not copyright. Remove jargon about lack of warranty, it is covered in license already. 2013-05-24 18:30:06 +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