From 7077bce83c19cb0027d26ff9ea810bb7f266ddd1 Mon Sep 17 00:00:00 2001 From: zeljko Date: Sun, 27 Feb 2011 16:15:14 +0000 Subject: [PATCH] Gtk2: fixed vertical centering of text inside readonly combobox. issue #15367 git-svn-id: trunk@29686 - --- lcl/interfaces/gtk2/gtk2cellrenderer.pas | 21 ++++++++++++++++----- lcl/interfaces/gtk2/gtk2wsstdctrls.pp | 2 +- 2 files changed, 17 insertions(+), 6 deletions(-) diff --git a/lcl/interfaces/gtk2/gtk2cellrenderer.pas b/lcl/interfaces/gtk2/gtk2cellrenderer.pas index 8684c36dba..893370556b 100644 --- a/lcl/interfaces/gtk2/gtk2cellrenderer.pas +++ b/lcl/interfaces/gtk2/gtk2cellrenderer.pas @@ -360,18 +360,29 @@ var begin if G_IS_OBJECT(cell) = false then exit; - //DebugLn(['LCLIntfCellRenderer_CellDataFunc stamp=',iter^.stamp,' tree_model=',dbgs(tree_model),' cell=',dbgs(cell)]); + APath := gtk_tree_model_get_path(tree_model,iter); LCLCellRenderer^.Index := gtk_tree_path_get_indices(APath)^; LCLCellRenderer^.ColumnIndex := -1; gtk_tree_path_free(APath); - Value.g_type := G_TYPE_STRING; - - WidgetInfo := PWidgetInfo(data); + // DebugLn(['LCLIntfCellRenderer_CellDataFunc stamp=',iter^.stamp,' tree_model=',dbgs(tree_model),' cell=',dbgs(cell),' WidgetInfo=',WidgetInfo <> nil]); + + if (WidgetInfo <> nil) and + (WidgetInfo^.LCLObject is TCustomComboBox) and + (TCustomComboBox(WidgetInfo^.LCLObject).Style = csDropDownList) and + not (TCustomComboBox(WidgetInfo^.LCLObject).DroppedDown) then + begin + Value.g_type := G_TYPE_UINT; + Value.data[0].v_uint := 0; + g_object_get_property(PgObject(cell),'ypad',@Value); + Value.data[0].v_int := 0; + g_object_set_property(PGObject(cell), 'ypad', @Value); + end else if (WidgetInfo <> nil) and (WidgetInfo^.LCLObject.InheritsFrom(TCustomListView)) then begin + Value.g_type := G_TYPE_STRING; gtk_tree_model_get(tree_model, iter, [0, @ListItem, -1]); if (ListItem = nil) and TCustomListView(WidgetInfo^.LCLObject).OwnerData then ListItem := TCustomListView(WidgetInfo^.LCLObject).Items[LCLCellRenderer^.Index]; @@ -393,7 +404,7 @@ begin g_object_set_property(PGObject(cell), 'text', @Value); end; - //DebugLn(['LCLIntfCellRenderer_CellDataFunc ItemIndex=',LCLCellRenderer^.Index]); + // DebugLn(['LCLIntfCellRenderer_CellDataFunc ItemIndex=',LCLCellRenderer^.Index]); end; end. diff --git a/lcl/interfaces/gtk2/gtk2wsstdctrls.pp b/lcl/interfaces/gtk2/gtk2wsstdctrls.pp index e3edcc87a3..2a8bb4eb2d 100644 --- a/lcl/interfaces/gtk2/gtk2wsstdctrls.pp +++ b/lcl/interfaces/gtk2/gtk2wsstdctrls.pp @@ -1344,7 +1344,7 @@ begin gtk_cell_layout_pack_start(PGtkCellLayout(AWidget), renderer, True); gtk_cell_layout_set_attributes(PGtkCellLayout(AWidget), renderer, ['text', 0, nil]); gtk_cell_layout_set_cell_data_func(PGtkCellLayout(AWidget), renderer, - @LCLIntfCellRenderer_CellDataFunc, nil, nil); + @LCLIntfCellRenderer_CellDataFunc, AWidgetInfo, nil); end; procedure GtkPopupShowCB(AMenu: PGtkMenuShell; WidgetInfo: PWidgetInfo); cdecl;