diff --git a/components/richmemo/gtk2/gtk2richmemo.pas b/components/richmemo/gtk2/gtk2richmemo.pas index b5d21904e..18723dc95 100644 --- a/components/richmemo/gtk2/gtk2richmemo.pas +++ b/components/richmemo/gtk2/gtk2richmemo.pas @@ -55,6 +55,7 @@ type class function CreateHandle(const AWinControl: TWinControl; const AParams: TCreateParams): TLCLIntfHandle; override; class procedure DestroyHandle(const AWinControl: TWinControl); override; + class function GetSelLength(const ACustomEdit: TCustomEdit): integer; override; class function GetStrings(const ACustomMemo: TCustomMemo): TStrings; override; class function GetStyleRange(const AWinControl: TWinControl; TextStart: Integer; @@ -621,6 +622,25 @@ begin inherited DestroyHandle(AWinControl); end; +class function TGtk2WSCustomRichMemo.GetSelLength(const ACustomEdit: TCustomEdit + ): integer; +var + w : PGtkWidget; + b : PGtkTextBuffer; + istart : TGtkTextIter; + iend : TGtkTextIter; +begin + GetWidgetBuffer(ACustomEdit, w, b); + if not Assigned(b) then begin + Result:=-1; + Exit; + end; + Result := 0; + if not gtk_text_buffer_get_selection_bounds(b, @istart, @iend) then Exit; + + Result := Abs(gtk_text_iter_get_offset(@iend) - gtk_text_iter_get_offset(@istart)); +end; + class function TGtk2WSCustomRichMemo.GetStrings(const ACustomMemo: TCustomMemo ): TStrings; var