gtk intf: TGtkWSCustomEdit.SetText: lock during set and fire CM_TEXTCHANGED, bug #14615

git-svn-id: trunk@21836 -
This commit is contained in:
mattias 2009-09-23 12:06:24 +00:00
parent 048789bd19
commit bd38195d35
2 changed files with 17 additions and 1 deletions

View File

@ -450,6 +450,7 @@ begin
EventTrace('changed_editbox', data);
{$ENDIF}
FillByte(Mess,SizeOf(Mess),0);
Mess.Msg := CM_TEXTCHANGED;
DeliverMessage(Data, Mess);
end;

View File

@ -1257,13 +1257,28 @@ end;
class procedure TGtkWSCustomEdit.SetText(const AWinControl: TWinControl;
const AText: string);
var
Widget: PGtkWidget;
Mess : TLMessage;
begin
if not WSCheckHandleAllocated(AWinControl, 'SetText') then
Exit;
{$IFDEF VerboseTWinControlRealText}
DebugLn(['TGtkWSCustomEdit.SetText START ',DbgSName(AWinControl),' AText="',AText,'"']);
{$ENDIF}
gtk_entry_set_text(PGtkEntry(AWinControl.Handle), PChar(AText));
Widget:=PGtkWidget(AWinControl.Handle);
LockOnChange(PgtkObject(Widget), +1);
try
gtk_entry_set_text(PGtkEntry(Widget), PChar(AText));
finally
LockOnChange(PgtkObject(Widget), -1);
end;
{$IFDEF VerboseTWinControlRealText}
DebugLn(['TGtkWSCustomEdit.SetText SEND TEXTCHANGED message ',DbgSName(AWinControl),' New="',gtk_entry_get_text(PGtkEntry(AWinControl.Handle)),'"']);
{$ENDIF}
FillByte(Mess,SizeOf(Mess),0);
Mess.Msg := CM_TEXTCHANGED;
DeliverMessage(AWinControl, Mess);
{$IFDEF VerboseTWinControlRealText}
DebugLn(['TGtkWSCustomEdit.SetText END ',DbgSName(AWinControl),' New="',gtk_entry_get_text(PGtkEntry(AWinControl.Handle)),'"']);