diff --git a/lcl/interfaces/gtk2/gtk2int.pas b/lcl/interfaces/gtk2/gtk2int.pas index e5bf27ba95..111747e34e 100644 --- a/lcl/interfaces/gtk2/gtk2int.pas +++ b/lcl/interfaces/gtk2/gtk2int.pas @@ -134,6 +134,10 @@ procedure gdk_draw_pixbuf(drawable : PGdkDrawable; gc : PGdkGC; pixbuf : PGdkPix {$EndIf} {$EndIf} +var + GTK2WidgetSet: TGTK2WidgetSet absolute GtkWidgetSet; + + implementation uses diff --git a/lcl/interfaces/gtk2/gtk2wscustommemo.inc b/lcl/interfaces/gtk2/gtk2wscustommemo.inc index 7929bddeb1..d0c9270deb 100644 --- a/lcl/interfaces/gtk2/gtk2wscustommemo.inc +++ b/lcl/interfaces/gtk2/gtk2wscustommemo.inc @@ -1,3 +1,5 @@ +{%MainUnit gtk2wsstdctrls.pp} + { Callbacks } procedure Gtk2WS_MemoChanged( AGtkTextBuffer: PGtkTextBuffer; WidgetInfo: PWidgetInfo); cdecl; @@ -114,7 +116,6 @@ begin gtk_scrolled_window_set_policy(PGtkScrolledWindow(Widget), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); - gtk_scrolled_window_set_shadow_type(PGtkScrolledWindow(Widget),GTK_SHADOW_IN); SetMainWidget(Widget, TempWidget); GetWidgetInfo(Widget, True)^.CoreWidget := TempWidget; @@ -138,3 +139,35 @@ begin Result := TGtk2MemoStrings.Create(TextView, ACustomMemo); end; + +procedure TGtk2WSCustomMemo.SetColor(const AWinControl: TWinControl); +var + AWidget : PGTKWidget; +begin + AWidget:=PGtkWidget(AWinControl.Handle); + AWidget:=GetWidgetInfo(AWidget, True)^.CoreWidget; + Gtk2WidgetSet.SetWidgetColor(AWidget, AWinControl.font.color, AWinControl.color,[GTK_STATE_NORMAL,GTK_STATE_ACTIVE,GTK_STATE_PRELIGHT,GTK_STATE_SELECTED,GTK_STYLE_BASE]); + +end; + +procedure TGtk2WSCustomMemo.SetFont(const AWinControl: TWinControl; + const AFont : TFont); +var + AWidget: PGTKWidget; +begin + if not AWinControl.HandleAllocated then exit; + if AFont.IsDefault then exit; + + AWidget:= PGtkWidget(AWinControl.Handle); + AWidget:= GetWidgetInfo(AWidget, true)^.CoreWidget; + + if AWidget<>nil then begin + Gtk2WidgetSet.SetWidgetColor(AWidget, AWinControl.font.color, clNone, + [GTK_STATE_NORMAL,GTK_STATE_ACTIVE,GTK_STATE_PRELIGHT,GTK_STATE_SELECTED, + GTK_STYLE_TEXT]); + Gtk2WidgetSet.SetWidgetFont(AWidget, AFont); + end; +end; + + + diff --git a/lcl/interfaces/gtk2/gtk2wsstdctrls.pp b/lcl/interfaces/gtk2/gtk2wsstdctrls.pp index 903d4318e9..481ba3d4ec 100644 --- a/lcl/interfaces/gtk2/gtk2wsstdctrls.pp +++ b/lcl/interfaces/gtk2/gtk2wsstdctrls.pp @@ -36,7 +36,7 @@ uses //////////////////////////////////////////////////// StdCtrls, LMessages, //////////////////////////////////////////////////// - glib2, gdk2pixbuf, gdk2, gtk2, Pango, + glib2, gdk2, gtk2, Pango, WSStdCtrls, WSLCLClasses, GtkWSStdCtrls, Gtk2Int, LCLType, GtkDef, LCLProc, GTKWinApiWindow, gtkglobals, gtkproc, InterfaceBase; @@ -72,6 +72,7 @@ type private protected public + class procedure SetFont(const AWinControl: TWinControl; const AFont : tFont); override; end; { TGtk2WSComboBox } @@ -131,6 +132,8 @@ type public class function CreateHandle(const AWinControl: TWinControl; const AParams: TCreateParams): TLCLIntfHandle; override; class function GetStrings(const ACustomMemo: TCustomMemo): TStrings; override; + class procedure SetColor(const AWinControl: TWinControl);override; + class procedure SetFont(const AWinControl: TWinControl;const AFont : TFont);override; end; { TGtk2WSEdit } @@ -584,6 +587,27 @@ begin Result := ABS(Entry^.current_pos - Entry^.selection_bound); end; + + +procedure TGtk2WSCustomComboBox.SetFont(const AWinControl: TWinControl; + const AFont : TFont); +var + AWidget: PGTKWidget; + EntryWidget: PGtkWidget; +begin + if not AWinControl.HandleAllocated then exit; + if AFont.IsDefault then exit; + + AWidget:= PGtkWidget(AWinControl.Handle); + EntryWidget:=PGtkCombo(AWidget)^.entry; + + if EntryWidget<>nil then begin + Gtk2WidgetSet.SetWidgetColor(EntryWidget, AWinControl.font.color, clNone, + [GTK_STATE_NORMAL,GTK_STATE_ACTIVE,GTK_STATE_PRELIGHT,GTK_STATE_SELECTED,GTK_STYLE_TEXT]); + Gtk2WidgetSet.SetWidgetFont(EntryWidget, AFont); + end; +end; + initialization //////////////////////////////////////////////////// @@ -595,7 +619,7 @@ initialization // RegisterWSComponent(TScrollBar, TGtk2WSScrollBar); // RegisterWSComponent(TCustomGroupBox, TGtk2WSCustomGroupBox); // RegisterWSComponent(TGroupBox, TGtk2WSGroupBox); -// RegisterWSComponent(TCustomComboBox, TGtk2WSCustomComboBox); + RegisterWSComponent(TCustomComboBox, TGtk2WSCustomComboBox); // RegisterWSComponent(TComboBox, TGtk2WSComboBox); RegisterWSComponent(TCustomListBox, TGtk2WSCustomListBox); // RegisterWSComponent(TListBox, TGtk2WSListBox);