Switched the image list stuff to a static function/message pair.
This commit is contained in:
parent
fe01ebbbcd
commit
774e451967
|
@ -31,6 +31,19 @@ struct tableData {
|
|||
HIMAGELIST checkboxImageList;
|
||||
};
|
||||
|
||||
static void tableSetCheckboxImageList(HWND hwnd, struct tableData *t)
|
||||
{
|
||||
HIMAGELIST checkboxImageList;
|
||||
|
||||
checkboxImageList = makeCheckboxImageList(hwnd);
|
||||
if (SendMessageW(hwnd, LVM_SETIMAGELIST, LVSIL_STATE, (LPARAM) (checkboxImageList)) == (LRESULT) NULL)
|
||||
;//TODO xpanic("error setting image list", GetLastError());
|
||||
// TODO free old one here if any/different
|
||||
// thanks to Jonathan Potter (http://stackoverflow.com/questions/25354448/why-do-my-owner-data-list-view-state-images-come-up-as-blank-on-windows-xp)
|
||||
if (SendMessageW(hwnd, LVM_SETCALLBACKMASK, LVIS_STATEIMAGEMASK, 0) == FALSE)
|
||||
xpanic("error marking state image list as application-managed", GetLastError());
|
||||
}
|
||||
|
||||
static LRESULT CALLBACK tableSubProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam, UINT_PTR id, DWORD_PTR data)
|
||||
{
|
||||
NMHDR *nmhdr = (NMHDR *) lParam;
|
||||
|
@ -72,6 +85,9 @@ static LRESULT CALLBACK tableSubProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM
|
|||
tablePushed(t->gotable, -1, -1); // in case button held as drag out
|
||||
// and let the list view do its thing
|
||||
return (*fv_DefSubclassProc)(hwnd, uMsg, wParam, lParam);
|
||||
case msgTableMakeInitialImageList:
|
||||
tableSetCheckboxImageList(hwnd, t);
|
||||
return 0;
|
||||
// see table.autoresize() in table_windows.go for the column autosize policy
|
||||
case WM_NOTIFY: // from the contained header control
|
||||
if (nmhdr->code == HDN_BEGINTRACK)
|
||||
|
@ -137,19 +153,6 @@ void tableAutosizeColumns(HWND hwnd, int nColumns)
|
|||
xpanic("error resizing columns of results list view", GetLastError());
|
||||
}
|
||||
|
||||
void tableSetCheckboxImageList(HWND hwnd)
|
||||
{
|
||||
HIMAGELIST checkboxImageList;
|
||||
|
||||
checkboxImageList = makeCheckboxImageList(hwnd);
|
||||
if (SendMessageW(hwnd, LVM_SETIMAGELIST, LVSIL_STATE, (LPARAM) checkboxImageList) == (LRESULT) NULL)
|
||||
;//TODO xpanic("error setting image list", GetLastError());
|
||||
// TODO free old one here if any/different
|
||||
// thanks to Jonathan Potter (http://stackoverflow.com/questions/25354448/why-do-my-owner-data-list-view-state-images-come-up-as-blank-on-windows-xp)
|
||||
if (SendMessageW(hwnd, LVM_SETCALLBACKMASK, LVIS_STATEIMAGEMASK, 0) == FALSE)
|
||||
xpanic("error marking state image list as application-managed", GetLastError());
|
||||
}
|
||||
|
||||
// because Go won't let me do C.WPARAM(-1)
|
||||
intptr_t tableSelectedItem(HWND hwnd)
|
||||
{
|
||||
|
|
|
@ -39,7 +39,8 @@ func finishNewTable(b *tablebase, ty reflect.Type) Table {
|
|||
// LVS_EX_FULLROWSELECT gives us selection across the whole row, not just the leftmost column; this makes the list view work like on other platforms
|
||||
// LVS_EX_SUBITEMIMAGES gives us images in subitems, which will be important when both images and checkboxes are added
|
||||
C.tableAddExtendedStyles(t._hwnd, C.LVS_EX_FULLROWSELECT | C.LVS_EX_SUBITEMIMAGES)
|
||||
C.tableSetCheckboxImageList(t._hwnd)
|
||||
// this must come after the subclass because it uses one of our private messages
|
||||
C.SendMessageW(t._hwnd, C.msgTableMakeInitialImageList, 0, 0)
|
||||
for i := 0; i < ty.NumField(); i++ {
|
||||
C.tableAppendColumn(t._hwnd, C.int(i), toUTF16(ty.Field(i).Name))
|
||||
}
|
||||
|
|
|
@ -38,6 +38,7 @@ enum {
|
|||
msgEndModal,
|
||||
msgAreaKeyDown,
|
||||
msgAreaKeyUp,
|
||||
msgTableMakeInitialImageList,
|
||||
};
|
||||
|
||||
// uitask_windows.c
|
||||
|
@ -115,7 +116,6 @@ extern void tableAppendColumn(HWND, int, LPWSTR);
|
|||
extern void tableUpdate(HWND, int);
|
||||
extern void tableAddExtendedStyles(HWND, LPARAM);
|
||||
extern void tableAutosizeColumns(HWND, int);
|
||||
extern void tableSetCheckboxImageList(HWND);
|
||||
extern intptr_t tableSelectedItem(HWND);
|
||||
extern void tableSelectItem(HWND, intptr_t);
|
||||
|
||||
|
|
Loading…
Reference in New Issue