- 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:
paul 2007-10-31 02:18:41 +00:00
parent a6337a6b09
commit 4cd7b9125b
4 changed files with 29 additions and 10 deletions

View File

@ -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;
{------------------------------------------------------------------------------

View File

@ -290,6 +290,12 @@ const
0, // bsToolWindow
1 // bsSizeToolWin
);
BorderStyleShadowMap: array[TBorderStyle] of TGtkShadowType =
(
{ bsNone } GTK_SHADOW_NONE,
{ bsSingle } GTK_SHADOW_ETCHED_IN
);
// signals ------------------------------------------------------------------

View File

@ -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.

View File

@ -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;