richmemo: gtk2 use custommemo default signal handlers, added a handle for selection change notification

git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@3820 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
skalogryz
2014-12-02 03:49:12 +00:00
parent 681614d3c4
commit 08713071ff

View File

@ -33,7 +33,7 @@ uses
// Gtk2 widget // Gtk2 widget
Gtk2Def, Gtk2Def,
GTK2WinApiWindow, Gtk2Globals, Gtk2Proc, InterfaceBase, GTK2WinApiWindow, Gtk2Globals, Gtk2Proc, InterfaceBase,
Gtk2WSControls, gdk2pixbuf, gdk2pixbuf, Gtk2WSStdCtrls,
// RichMemo // RichMemo
RichMemo, WSRichMemo, RichMemoUtils; RichMemo, WSRichMemo, RichMemoUtils;
@ -129,11 +129,28 @@ begin
if gtktextattr_strikethrough(textAttr.appearance) then Include(FontParams.Style, fsStrikeOut); if gtktextattr_strikethrough(textAttr.appearance) then Include(FontParams.Style, fsStrikeOut);
end; end;
type
TGtk2WSCustomMemoInt = class(TGtk2WSCustomMemo);
TCustomRichMemoInt = class(TCustomRichMemo);
procedure Gtk2WS_MemoSelChanged (Textbuffer: PGtkTextBuffer;
StartIter: PGtkTextIter; mark: PGtkTextMark; WidgetInfo: PWidgetInfo); cdecl;
begin
if TControl(WidgetInfo^.LCLObject) is TCustomRichMemo then
begin
TCustomRichMemoInt(WidgetInfo^.LCLObject).DoSelectionChange;
end;
end;
class procedure TGtk2WSCustomRichMemo.SetCallbacks( class procedure TGtk2WSCustomRichMemo.SetCallbacks(
const AGtkWidget: PGtkWidget; const AWidgetInfo: PWidgetInfo); const AGtkWidget: PGtkWidget; const AWidgetInfo: PWidgetInfo);
var
TextBuf: PGtkTextBuffer;
begin begin
TGtk2WSWinControl.SetCallbacks(PGtkObject(AGtkWidget), TComponent(AWidgetInfo^.LCLObject)); TGtk2WSCustomMemoInt.SetCallbacks(AGtkWidget, AWidgetInfo);
TextBuf := gtk_text_view_get_buffer(PGtkTextView(AWidgetInfo^.CoreWidget));
SignalConnect(PGtkWidget(TextBuf), 'mark-set', @Gtk2WS_MemoSelChanged, AWidgetInfo);
end; end;
class procedure TGtk2WSCustomRichMemo.GetWidgetBuffer(const AWinControl: TWinControl; class procedure TGtk2WSCustomRichMemo.GetWidgetBuffer(const AWinControl: TWinControl;
@ -221,17 +238,9 @@ begin
SetMainWidget(Widget, TempWidget); SetMainWidget(Widget, TempWidget);
GetWidgetInfo(Widget, True)^.CoreWidget := TempWidget; GetWidgetInfo(Widget, True)^.CoreWidget := TempWidget;
// gtk_text_buffer_set_text(gtk_text_view_get_buffer(PGtkTextView(TempWidget)), PChar(TCustomMemo(AWinControl).Text), -1);
gtk_text_view_set_editable(PGtkTextView(TempWidget), True); gtk_text_view_set_editable(PGtkTextView(TempWidget), True);
{ //gtk_text_view_set_editable(PGtkTextView(TempWidget), not TCustomMemo(AWinControl).ReadOnly);
//gtk_text_view_set_justification(PGtkTextView(TempWidget), aGtkJustification[TCustomMemo(AWinControl).Alignment]);
if TCustomMemo(AWinControl).WordWrap then
gtk_text_view_set_wrap_mode(PGtkTextView(TempWidget), GTK_WRAP_WORD)
else
gtk_text_view_set_wrap_mode(PGtkTextView(TempWidget), GTK_WRAP_NONE);}
gtk_text_view_set_wrap_mode(PGtkTextView(TempWidget), GTK_WRAP_WORD); gtk_text_view_set_wrap_mode(PGtkTextView(TempWidget), GTK_WRAP_WORD);
//gtk_text_view_set_accepts_tab(PGtkTextView(TempWidget), TCustomMemo(AWinControl).WantTabs);
gtk_text_view_set_accepts_tab(PGtkTextView(TempWidget), True); gtk_text_view_set_accepts_tab(PGtkTextView(TempWidget), True);
gtk_widget_show_all(Widget); gtk_widget_show_all(Widget);