implement border style for gtk TListBox and added generic way for setting border style for all scrollables

git-svn-id: trunk@13363 -
This commit is contained in:
paul 2007-12-18 02:57:49 +00:00
parent 9cff00c297
commit f7f99f038e
3 changed files with 26 additions and 13 deletions

View File

@ -36,7 +36,7 @@ uses
GtkFontCache, Gtk1WSPrivate,
{$ENDIF}
InterfaceBase, WSStdCtrls, WSLCLClasses, WSProc, WSControls,
GtkInt, GtkDef, GTKWinApiWindow, gtkglobals, gtkproc, gtkExtra, GtkWSPrivate;
GtkInt, GtkDef, GTKWinApiWindow, GtkGlobals, GtkProc, GtkExtra, GtkWSPrivate;
type
@ -639,11 +639,7 @@ var
begin
Handle := ACustomListBox.Handle;
Widget:= PGtkWidget(PGtkBin(Handle)^.child);
if ACustomListBox.BorderStyle = TBorderStyle(bsSingle)
then
gtk_viewport_set_shadow_type(PGtkViewPort(Widget), GTK_SHADOW_IN)
else
gtk_viewport_set_shadow_type(PGtkViewPort(Widget), GTK_SHADOW_NONE);
gtk_viewport_set_shadow_type(PGtkViewPort(Widget), BorderStyleShadowMap[ACustomListBox.BorderStyle]);
end;
class procedure TGtkWSCustomListBox.SetItemIndex(const ACustomListBox: TCustomListBox;

View File

@ -35,9 +35,9 @@ uses
////////////////////////////////////////////////////
Controls,
////////////////////////////////////////////////////
Gtk2, Gdk2, Glib2,
Gtk2, Gdk2, Glib2, GtkGlobals,
GtkWsControls,
WSControls, WSLCLClasses;
WSControls, WSLCLClasses, WSProc;
type
@ -66,6 +66,7 @@ type
public
class function GetText(const AWinControl: TWinControl; var AText: String): Boolean; override;
class procedure SetText(const AWinControl: TWinControl; const AText: string); override;
class procedure SetBorderStyle(const AWinControl: TWinControl; const ABorderStyle: TBorderStyle); override;
end;
{ TGtk2WSGraphicControl }
@ -162,6 +163,21 @@ begin
end;
end;
class procedure TGtk2WSWinControl.SetBorderStyle(
const AWinControl: TWinControl; const ABorderStyle: TBorderStyle);
var
Widget: PGtkWidget;
begin
if not WSCheckHandleAllocated(AWinControl, 'SetBorderStyle')
then Exit;
Widget := PGtkWidget(AWinControl.Handle);
if GTK_IS_SCROLLED_WINDOW(Widget) then
gtk_scrolled_window_set_shadow_type(PGtkScrolledWindow(Widget), BorderStyleShadowMap[ABorderStyle])
else
TWSWinControlClass(ClassParent).SetBorderStyle(AWinControl, ABorderStyle);
end;
initialization
////////////////////////////////////////////////////

View File

@ -427,8 +427,8 @@ end;
class procedure TGtk2WSCustomListBox.SetBorder(
const ACustomListBox: TCustomListBox);
begin
// TODO
debugln('TGtk2WSCustomListBox.SetBorder TODO');
gtk_scrolled_window_set_shadow_type(PGtkScrolledWindow(ACustomListBox.Handle),
BorderStyleShadowMap[ACustomListBox.BorderStyle]);
end;
class procedure TGtk2WSCustomListBox.SetItemIndex(
@ -533,8 +533,8 @@ var
column : PGtkTreeViewColumn;
WidgetInfo: PWidgetInfo;
begin
Result := TGtkWSBaseScrollingWinControl.CreateHandle(AWinControl,AParams);
p:= PGtkWidget(Result);
Result := TGtkWSBaseScrollingWinControl.CreateHandle(AWinControl, AParams);
p := PGtkWidget(Result);
if Result = 0 then exit;
{$IFDEF DebugLCLComponents}
@ -545,7 +545,8 @@ begin
GTK_WIDGET_UNSET_FLAGS(PGtkScrolledWindow(p)^.vscrollbar, GTK_CAN_FOCUS);
gtk_scrolled_window_set_policy(PGtkScrolledWindow(p),
GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
gtk_scrolled_window_set_shadow_type(PGtkScrolledWindow(p),GTK_SHADOW_IN);
gtk_scrolled_window_set_shadow_type(PGtkScrolledWindow(p),
BorderStyleShadowMap[TCustomListBox(AWinControl).BorderStyle]);
gtk_widget_show(p);
liststore := gtk_list_store_new (2, [G_TYPE_STRING, G_TYPE_POINTER, nil]);