this code is ok on purebasic 4.30 RHEL 5 (x86)
but on purebasic 5.10 RHEL 6.3 (x64)
[ERROR] line: 85 : g_object_set_double(g_list_nth_data_(*CellRenderers, i), "xalign", AlignmentFactor, #Null)
[ERROR] Invalid memory Access.
Code: Select all
EnableExplicit
CompilerSelect #PB_Compiler_OS
CompilerCase #PB_OS_Linux
ImportC ""
g_object_set_double(*Object, Property.P-ASCII, Value.D, Null) As "g_object_set"
EndImport
CompilerCase #PB_OS_MacOS
#kControlUseJustMask = $0040
#teCenter = 1
#teFlushRight = -1
#teFlushLeft = -2
ImportC ""
GetDataBrowserListViewHeaderDesc(DataBrowserRef, ColumnID, *HeaderDesc)
GetDataBrowserTableViewColumnProperty(DataBrowserRef, Column, *ColumnID)
HiliteControl(ControlRef, ControlPart)
SetControlVisibility(ControlRef, IsVisible, DoDraw)
SetDataBrowserListViewHeaderDesc(DataBrowserRef, ColumnID, *HeaderDesc)
EndImport
Structure RGBColor
Red.U
Green.U
Blue.U
EndStructure
Structure ControlFontStyleRec
Flags.W
Font.W
Size.W
Style.W
Mode.W
Just.W
ForeColor.RGBColor
BackColor.RGBColor
EndStructure
Structure DataBrowserListViewHeaderDesc
Version.L
MinimumColumnWidth.U
MaximumColumnWidth.U
TitleOffset.W
CFTitleString.L
InitialSortOrder.U
FontStyle.ControlFontStyleRec
IconInfo.L
EndStructure
CompilerEndSelect
Enumeration
#PB_ListIcon_JustifyColumnLeft
#PB_ListIcon_JustifyColumnCenter
#PB_ListIcon_JustifyColumnRight
EndEnumeration
Procedure SetListIconColumnJustification(ListIconID, Column, Alignment)
CompilerSelect #PB_Compiler_OS
CompilerCase #PB_OS_Linux
Protected AlignmentFactor.D
Protected *CellRenderers
Protected *Column
Protected Count
Protected i
Select Alignment
Case #PB_ListIcon_JustifyColumnLeft
AlignmentFactor = 0.0
Case #PB_ListIcon_JustifyColumnCenter
AlignmentFactor = 0.5
Case #PB_ListIcon_JustifyColumnRight
AlignmentFactor = 1.0
EndSelect
*Column = gtk_tree_view_get_column_(GadgetID(ListIconID), Column)
If *Column
gtk_tree_view_column_set_alignment_(*Column, AlignmentFactor)
*CellRenderers = gtk_tree_view_column_get_cell_renderers_(*Column)
If *CellRenderers
Count = g_list_length_(*CellRenderers)
For i = 0 To Count - 1
g_object_set_double(g_list_nth_data_(*CellRenderers, i), "xalign", AlignmentFactor, #Null)
Next i
g_list_free_(*CellRenderers)
EndIf
EndIf
CompilerCase #PB_OS_MacOS
Protected ColumnID.L
Protected HeaderDesc.DataBrowserListViewHeaderDesc
If GetDataBrowserTableViewColumnProperty(GadgetID(0), Column, @ColumnID) = 0
If GetDataBrowserListViewHeaderDesc(GadgetID(0), ColumnID, @HeaderDesc) = 0
HeaderDesc\FontStyle\Flags = #kControlUseJustMask
Select Alignment
Case #PB_ListIcon_JustifyColumnLeft
HeaderDesc\FontStyle\Just = #teFlushLeft
Case #PB_ListIcon_JustifyColumnCenter
HeaderDesc\FontStyle\Just = #teCenter
Case #PB_ListIcon_JustifyColumnRight
HeaderDesc\FontStyle\Just = #teFlushRight
EndSelect
SetDataBrowserListViewHeaderDesc(GadgetID(0), ColumnID, @HeaderDesc)
EndIf
EndIf
CompilerCase #PB_OS_Windows
Protected ListIconColumn.LV_COLUMN
ListIconColumn\mask = #LVCF_FMT
Select Alignment
Case #PB_ListIcon_JustifyColumnLeft
ListIconColumn\fmt = #LVCFMT_LEFT
Case #PB_ListIcon_JustifyColumnCenter
ListIconColumn\fmt = #LVCFMT_CENTER
Case #PB_ListIcon_JustifyColumnRight
ListIconColumn\fmt = #LVCFMT_RIGHT
EndSelect
SendMessage_(GadgetID(ListIconID), #LVM_SETCOLUMN, Column, @ListIconColumn)
CompilerEndSelect
EndProcedure
OpenWindow(0, 200, 100, 445, 90, "Right justify 1st column")
ListIconGadget(0, 5, 5, 435, 80, "Name", 110)
AddGadgetColumn(0, 1, "Address", 300)
AddGadgetItem(0, -1, "Harry Rannit" + #LF$ + "12 Parliament Way, Battle Street, By the Bay")
AddGadgetItem(0, -1, "Ginger Brokeit" + #LF$ + "130 PureBasic Road, BigTown, CodeCity")
SetListIconColumnJustification(0, 0, #PB_ListIcon_JustifyColumnRight)
Repeat
Until WaitWindowEvent() = #PB_Event_CloseWindow