[Lazarus] TCombobox major failure :(
Luiz Americo Pereira Camara
luizmed at oi.com.br
Sun Jul 20 04:05:43 CEST 2008
Mattias Gaertner wrote:
>> Luiz Americo Pereira Camara wrote:
>>
>>
>> Gtk2 is handled in an different callback function. Unlike gtk1 the
>> LM_SELCHANGE message is sent inside the 'changed' event. At first
>> look is not possible to determine if the changed event came from the
>> selection list or not.
>>
>> One issue is that in gtk2 and Qt the LM_CHANGED message is sent
>> before LM_SELCHANGE unlike gtk1, but gtk1 could be reimplemented like
>> gtk2. Under Win32 is easy to sent an extra LM_CHANGED message in
>> response to selection change
>>
>
> It seems, there are no objections. Will you do it?
>
Done.
The attached patches does the following:
- [ComboBox] OnChange is called if a item is selected (just before OnSelect)
- [List/ComboBox] Fix calling OnChange/Select after calls to
delete/clear in gtk1/2
- [ListBox] Fix double call to SelectionChange after setting ItemIndex
(gtk2)
- [ComboBox] After Delete ItemIndex is -1 and Text is '' gtk1/2
- [ComboBox] Fix a bug that was returning previous text set through Text
when Style is DropDownList (GetText was returning false)
Implementation details:
- Under gtk1 all event handling is done inside the 'changed' event
handler of the entry widget like gtk2. This event handler is now
separated from the generic one. The event handler of 'select' was
deleted. It also caches the LCL Index like gtk2 does.
- Under gtk2, the initial idea was to keep the current approach of using
WidgetInfo.UserData as a flag to skip unneeded event trigger, but since
ListBox already uses UserData (ScrollingData) was necessary to move the
skip logic to the ChangeLock field. The UserData of ComboBox now holds
the LCLIndex cache.
- ListBox.CreateHandle calls Assign that calls Clear, so there's no
widgetinfo at this time. I added a check to widgetinfo. No big issue
here, but i added some options in the comments near of it to remove the
check.
Some notes:
- ComboBox functions in LCLProc can be moved to the WS* classes since
they are not shared between gtk1/2. I did not do this to keep the patch
smaller.
- I did not touched Qt. Some work needs to be done there.
- Together with the patches are the apps i used to test
Luiz
-------------- next part --------------
A non-text attachment was scrubbed...
Name: ComboBoxItemIndex.zip
Type: application/zip
Size: 2761 bytes
Desc: not available
URL: <http://lists.lazarus-ide.org/pipermail/lazarus/attachments/20080719/74544ea3/attachment-0021.zip>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: gtkcomboitemindex_patches.zip
Type: application/zip
Size: 7175 bytes
Desc: not available
URL: <http://lists.lazarus-ide.org/pipermail/lazarus/attachments/20080719/74544ea3/attachment-0022.zip>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: ListItemIndex.zip
Type: application/zip
Size: 2501 bytes
Desc: not available
URL: <http://lists.lazarus-ide.org/pipermail/lazarus/attachments/20080719/74544ea3/attachment-0023.zip>
More information about the Lazarus
mailing list