From 96951cf407f5e7b6d915f1d68fcc4198b35085bc Mon Sep 17 00:00:00 2001 From: mattias Date: Sun, 14 Nov 2004 00:21:08 +0000 Subject: [PATCH] added memo thaw on set SelStart from Andrew Haines git-svn-id: trunk@6242 - --- lcl/interfaces/gtk/gtkwsstdctrls.pp | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/lcl/interfaces/gtk/gtkwsstdctrls.pp b/lcl/interfaces/gtk/gtkwsstdctrls.pp index a29dcb843a..3b944d1e69 100644 --- a/lcl/interfaces/gtk/gtkwsstdctrls.pp +++ b/lcl/interfaces/gtk/gtkwsstdctrls.pp @@ -282,7 +282,7 @@ implementation { helper routines } -function WidgetGetSelStart(const Widget: PGtkWidget): integer; +function WidgetGetSelStart(const Widget: PGtkWidget): integer; begin if Widget <> nil then begin @@ -765,9 +765,15 @@ end; procedure TGtkWSCustomEdit.SetSelStart(const ACustomEdit: TCustomEdit; NewStart: integer); +var +Widget: PGtkWidget; begin - gtk_editable_set_position(PGtkOldEditable(GetWidgetInfo( - Pointer(ACustomEdit.Handle), true)^.CoreWidget), NewStart); + Widget:=GetWidgetInfo(Pointer(ACustomEdit.Handle), true)^.CoreWidget; + if WidgetGetSelStart(Widget)=NewStart then exit; + // sometimes the gtk freezes the memo, canges something and emits the change + // event. Then the LCL gets notified and wants to react: force thaw (unfreeze) + gtk_text_thaw(PGtkText(Widget)); + gtk_editable_set_position(PGtkOldEditable(Widget), NewStart); end; procedure TGtkWSCustomEdit.SetSelLength(const ACustomEdit: TCustomEdit;