mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-12-05 23:37:10 +01:00
gtk:
- simplify TGtkWSWinControl.SetBorderStyle - correct TGTKAPIWidget for gtk2-win32 - set border according to borderStyle for gtk2 git-svn-id: trunk@12653 -
This commit is contained in:
parent
a6337a6b09
commit
4cd7b9125b
@ -4683,6 +4683,10 @@ begin
|
||||
PGTKScrolledWindow(Result)^.HScrollBar);
|
||||
Step_Increment := 1;
|
||||
end;
|
||||
|
||||
if AWinControl is TCustomControl then
|
||||
GTKAPIWidget_SetShadowType(PGTKAPIWidget(Result),
|
||||
BorderStyleShadowMap[TCustomControl(AWinControl).BorderStyle]);
|
||||
end;
|
||||
|
||||
{------------------------------------------------------------------------------
|
||||
|
||||
@ -290,6 +290,12 @@ const
|
||||
0, // bsToolWindow
|
||||
1 // bsSizeToolWin
|
||||
);
|
||||
|
||||
BorderStyleShadowMap: array[TBorderStyle] of TGtkShadowType =
|
||||
(
|
||||
{ bsNone } GTK_SHADOW_NONE,
|
||||
{ bsSingle } GTK_SHADOW_ETCHED_IN
|
||||
);
|
||||
|
||||
|
||||
// signals ------------------------------------------------------------------
|
||||
|
||||
@ -50,6 +50,9 @@ type
|
||||
TGTKAPIWidget = record
|
||||
// ! the ScrolledWindow must be the first attribute of this record !
|
||||
ScrolledWindow: TGTKScrolledWindow;
|
||||
{$if defined(win32) and defined(gtk2)}
|
||||
Reserved1: Word; // workaround gtk2 win32 fpc bug: SizeOf(TGTKScrolledWindow) is less than in real
|
||||
{$ifend}
|
||||
Frame: PGtkFrame;
|
||||
Client: PGtkWidget;
|
||||
end;
|
||||
@ -73,6 +76,8 @@ procedure GTKAPIWidget_SetCaretRespondToFocus(APIWidget: PGTKAPIWidget;
|
||||
procedure GTKAPIWidget_GetCaretRespondToFocus(APIWidget: PGTKAPIWidget;
|
||||
var ShowHideOnFocus: boolean);
|
||||
|
||||
procedure GTKAPIWidget_SetShadowType(APIWidget: PGTKAPIWidget; AShadowType: TGtkShadowType);
|
||||
|
||||
function GTK_APIWIDGETCLIENT_TYPE: Guint;
|
||||
|
||||
implementation
|
||||
@ -191,6 +196,17 @@ procedure GTKAPIWidgetClient_GetCaretRespondToFocus(Client: PGTKAPIWidgetClient;
|
||||
|
||||
//-----------------------------
|
||||
|
||||
procedure GTKAPIWidget_SetShadowType(APIWidget: PGTKAPIWidget;
|
||||
AShadowType: TGtkShadowType);
|
||||
begin
|
||||
if (APIWidget^.Frame <> nil) then
|
||||
gtk_frame_set_shadow_type(APIWidget^.Frame, AShadowType)
|
||||
{$ifdef gtk2}
|
||||
else
|
||||
gtk_scrolled_window_set_shadow_type(PGtkScrolledWindow(APIWidget), AShadowType);
|
||||
{$endif}
|
||||
end;
|
||||
|
||||
function GTK_APIWIDGETCLIENT_TYPE: Guint;
|
||||
begin
|
||||
GTK_APIWIDGETCLIENT_TYPE := GTKAPIWidgetClient_GetType;
|
||||
@ -1123,3 +1139,4 @@ initialization
|
||||
|
||||
end.
|
||||
|
||||
|
||||
|
||||
@ -301,16 +301,8 @@ begin
|
||||
then Exit;
|
||||
|
||||
Widget := PGtkWidget(AWinControl.Handle);
|
||||
if GtkWidgetIsA(Widget,GTKAPIWidget_GetType) then begin
|
||||
//DebugLn('TGtkWSWinControl.SetBorderStyle ',AWinControl.Name,':',AWinControl.ClassName,' ',ord(ABorderStyle));
|
||||
APIWidget := PGTKAPIWidget(Widget);
|
||||
if (APIWidget^.Frame<>nil) then begin
|
||||
case ABorderStyle of
|
||||
bsNone: gtk_frame_set_shadow_type(APIWidget^.Frame,GTK_SHADOW_NONE);
|
||||
bsSingle: gtk_frame_set_shadow_type(APIWidget^.Frame,GTK_SHADOW_ETCHED_IN);
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
if GtkWidgetIsA(Widget, GTKAPIWidget_GetType) then
|
||||
GTKAPIWidget_SetShadowType(PGTKAPIWidget(Widget), BorderStyleShadowMap[ABorderStyle]);
|
||||
end;
|
||||
|
||||
class procedure TGtkWSWinControl.SetCallbacks(const AGTKObject: PGTKObject;
|
||||
|
||||
Loading…
Reference in New Issue
Block a user