Qt: workaround for #10706, stop events processing on DropList after combobox destroy called ...

git-svn-id: trunk@13910 -
This commit is contained in:
zeljko 2008-01-29 13:52:16 +00:00
parent 17d475dec4
commit a64bd53ce5

View File

@ -621,6 +621,8 @@ type
// used to store values if no selection
FSelStart: Integer;
FSelLength: Integer;
// stop event processing on droplist
FDynPropChanged: Boolean;
function GetDropList: TQtListWidget;
function GetLineEdit: QLineEditH;
procedure SetOwnerDrawn(const AValue: Boolean);
@ -5093,6 +5095,7 @@ begin
WriteLn('TQtComboBox.Create');
{$endif}
Result := QComboBox_create();
FDynPropChanged := False;
FLineEdit := nil;
FOwnerDrawn := False;
end;
@ -5297,7 +5300,18 @@ function TQtComboBox.EventFilter(Sender: QObjectH; Event: QEventH): Boolean; cde
var
ev: QEventH;
str: WideString;
DynPropName: QByteArrayH;
DynPropChars: PAnsiChar;
i: Integer;
begin
Result := FDynPropChanged;
if Result then
begin
QEvent_accept(Event);
exit;
end;
BeginEventProcessing;
if (FDropList <> nil) and (Sender = FDropList.Widget) then
begin
@ -5306,6 +5320,24 @@ begin
QEvent_accept(Event);
case QEvent_type(Event) of
QEventDynamicPropertyChange:
begin
DynPropName := QByteArray_create();
try
QDynamicPropertyChangeEvent_propertyName(
QDynamicPropertyChangeEventH(Event), DynPropName);
DynPropChars := QByteArray_constData(DynPropName);
Str := '';
for i := 0 to QByteArray_length(DynPropName) - 1 do
begin
Str := Str + DynPropChars^;
inc(DynPropChars);
end;
FDynPropChanged := Str = 'lclwidget';
finally
QByteArray_destroy(DynPropName);
end;
end;
QEventShow: SlotDropListVisibility(True);
QEventHide:
begin