Fixed Gtk2 bug #9213 to show items when the Listview style is vlList and no Columns have been added

git-svn-id: trunk@12430 -
This commit is contained in:
andrew 2007-10-12 22:11:03 +00:00
parent 8e2aff6777
commit 8932a0e969
2 changed files with 51 additions and 0 deletions

View File

@ -90,6 +90,7 @@ type
class procedure ReCreateListStore(const ALV: TCustomListView;const TVWidgets: PTVWidgets); virtual;
class procedure ReCreateItems(const ALV: TCustomListView); virtual;
class procedure SetPropertyInternal(const ALV: TCustomListView; const Widgets: PTVWidgets; const AProp: TListViewProperty; const AIsSet: Boolean);
class procedure SetNeedDefaultColumn(const ALV: TCustomListView; const AValue: Boolean);
protected
class procedure SetCallbacks(const AScrollWidget: PGtkWidget; const Widgets: PTVWidgets; const AWidgetInfo: PWidgetInfo); virtual;
public

View File

@ -331,6 +331,53 @@ begin
end;
end;
class procedure TGtk2WSCustomListView.SetNeedDefaultColumn(
const ALV: TCustomListView; const AValue: Boolean);
var
Widgets: PTVWidgets;
GtkColumn: PGtkTreeViewColumn;
pixrenderer,
textrenderer: PGtkCellRenderer;
begin
if not WSCheckHandleAllocated(ALV, 'SetNeedDefaultColumn')
then Exit;
GetCommonTreeViewWidgets(PGtkWidget(ALV.Handle), Widgets);
GtkColumn := g_object_get_data(G_OBJECT(Widgets^.MainView), 'LCL_DEFAULT_COLUMN');
if AValue = True then
begin
if GtkColumn = nil then
begin
GtkColumn := gtk_tree_view_column_new();
gtk_widget_unset_flags(PGtkWidget(GtkColumn), GTK_CAN_FOCUS);
// add renderers
pixrenderer := gtk_cell_renderer_pixbuf_new();
textrenderer := gtk_cell_renderer_text_new();
gtk_tree_view_column_pack_start(GtkColumn, pixrenderer, FALSE);
gtk_tree_view_column_set_attributes(GtkColumn, pixrenderer,['pixbuf', 0, nil]);
gtk_tree_view_column_pack_start(GtkColumn, textrenderer, True);
gtk_tree_view_column_set_attributes(GtkColumn, textrenderer, ['text',1, nil]);
// insert column
gtk_tree_view_insert_column(GTK_TREE_VIEW(Widgets^.MainView), GtkColumn, 0);
g_object_set_data(G_OBJECT(Widgets^.MainView), 'LCL_DEFAULT_COLUMN', GtkColumn);
end;
end
else begin // No Column Needed
if GtkColumn <> nil then
begin
gtk_tree_view_remove_column(PGtkTreeView(Widgets^.MainView), GtkColumn);
g_object_set_data(G_OBJECT(Widgets^.MainView), 'LCL_DEFAULT_COLUMN', nil);
end;
end;
end;
class procedure TGtk2WSCustomListView.SetCallbacks(const AScrollWidget: PGtkWidget;
const Widgets: PTVWidgets; const AWidgetInfo: PWidgetInfo);
begin
@ -1227,6 +1274,7 @@ class procedure TGtk2WSCustomListView.SetViewStyle(const ALV: TCustomListView;
var
Widgets: PTVWidgets;
begin
WriteLn('SetViewStyle');
if not WSCheckHandleAllocated(ALV, 'SetViewStyle')
then Exit;
@ -1237,10 +1285,12 @@ begin
case AValue of
vsList:
begin
SetNeedDefaultColumn(ALV, True);
gtk_tree_view_set_headers_visible(GTK_TREE_VIEW (MainView), False);
end;
vsReport:
begin
SetNeedDefaultColumn(ALV, False);
if TLVHack(ALV).ShowColumnHeaders = True then
gtk_tree_view_set_headers_visible(GTK_TREE_VIEW (MainView), True);
end;