Figured out the deal with item.mask on Windows Tables. Need to rewrite this...

This commit is contained in:
Pietro Gagliardi 2014-08-30 11:35:41 -04:00
parent fecf53827a
commit df383ada76
1 changed files with 16 additions and 1 deletions

View File

@ -81,6 +81,21 @@ func (t *table) OnSelected(f func()) {
t.selected.set(f) t.selected.set(f)
} }
func printMask(item *C.LVITEMW) {
fmt.Printf("%d %d ", item.iItem, item.iSubItem)
x := item.mask
if x&C.LVIF_COLUMNS != 0{ fmt.Print("LVIF_COLUMNS ") }
if x&C.LVIF_DI_SETITEM != 0{ fmt.Print("LVIF_DI_SETITEM ") }
if x&C.LVIF_GROUPID != 0{ fmt.Print("LVIF_GROUPID ") }
if x&C.LVIF_IMAGE != 0{ fmt.Print("LVIF_IMAGE ") }
if x&C.LVIF_INDENT != 0{ fmt.Print("LVIF_INDENT ") }
if x&C.LVIF_NORECOMPUTE != 0{ fmt.Print("LVIF_NORECOMPUTE ") }
if x&C.LVIF_PARAM != 0{ fmt.Print("LVIF_PARAM ") }
if x&C.LVIF_STATE != 0{ fmt.Print("LVIF_STATE ") }
if x&C.LVIF_TEXT != 0{ fmt.Print("LVIF_TEXT ") }
fmt.Print("\n")
}
//export tableGetCell //export tableGetCell
func tableGetCell(data unsafe.Pointer, item *C.LVITEMW) { func tableGetCell(data unsafe.Pointer, item *C.LVITEMW) {
t := (*table)(data) t := (*table)(data)
@ -88,7 +103,7 @@ func tableGetCell(data unsafe.Pointer, item *C.LVITEMW) {
defer t.RUnlock() defer t.RUnlock()
d := reflect.Indirect(reflect.ValueOf(t.data)) d := reflect.Indirect(reflect.ValueOf(t.data))
datum := d.Index(int(item.iItem)).Field(int(item.iSubItem)) datum := d.Index(int(item.iItem)).Field(int(item.iSubItem))
// TODO figure out why changing item.mask causes crashes or why "it just works" printMask(item)
switch { switch {
case datum.Type() == reflect.TypeOf(ImageIndex(0)): case datum.Type() == reflect.TypeOf(ImageIndex(0)):
item.iImage = C.int(datum.Interface().(ImageIndex)) item.iImage = C.int(datum.Interface().(ImageIndex))