Mercurial > dwindows
diff win/dw.c @ 1570:d6988022c5cf
Implemented listbox sizing on OS/2 and Windows.
Mac already works and GTK3 looks like it should from the code but have not tested.
Will need to check into GTK2.
author | bsmith@81767d24-ef19-dc11-ae90-00e081727c95 |
---|---|
date | Sun, 22 Jan 2012 10:05:16 +0000 |
parents | 035bc006afbe |
children | a80ec948c3eb |
line wrap: on
line diff
--- a/win/dw.c Sat Jan 21 04:42:49 2012 +0000 +++ b/win/dw.c Sun Jan 22 10:05:16 2012 +0000 @@ -4506,6 +4506,40 @@ thiswidth = 50; extraheight = 6; } + /* Listbox */ + else if(strnicmp(tmpbuf, LISTBOXCLASSNAME, strlen(LISTBOXCLASSNAME)+1) == 0) + { + char buf[1025] = {0}; + int x, count = dw_listbox_count(handle); + int basicwidth = thiswidth = GetSystemMetrics(SM_CXVSCROLL) + 8; + + thisheight = 8; + + for(x=0;x<count;x++) + { + int height, width = 0; + + dw_listbox_get_text(handle, x, buf, 1024); + + if(strlen(buf)) + dw_font_text_extents_get(handle, NULL, buf, &width, &height); + else + dw_font_text_extents_get(handle, NULL, testtext, NULL, &height); + + width += basicwidth; + + if(width > thiswidth) + thiswidth = width > _DW_SCROLLED_MAX_WIDTH ? _DW_SCROLLED_MAX_WIDTH : width; + thisheight += height; + } + + if(thiswidth < _DW_SCROLLED_MIN_WIDTH) + thiswidth = _DW_SCROLLED_MIN_WIDTH; + if(thisheight < _DW_SCROLLED_MIN_HEIGHT) + thisheight = _DW_SCROLLED_MIN_HEIGHT; + if(thisheight > _DW_SCROLLED_MAX_HEIGHT) + thisheight = _DW_SCROLLED_MAX_HEIGHT; + } /* Entryfields and MLE */ else if(strnicmp(tmpbuf, EDITCLASSNAME, strlen(EDITCLASSNAME)+1) == 0 || strnicmp(tmpbuf, RICHEDIT_CLASS, strlen(RICHEDIT_CLASS)+1) == 0)