#: ./src/gui/controls/DropBox.ec:168
#: ./src/gui/controls/EditBox.ec:739
#: ./src/gui/controls/Label.ec:47
-#: ./src/gui/controls/ListBox.ec:946
-#: ./src/gui/controls/ListBox.ec:979
-#: ./src/gui/controls/ListBox.ec:980
+#: ./src/gui/controls/ListBox.ec:951
#: ./src/gui/controls/ListBox.ec:984
-#: ./src/gui/controls/ListBox.ec:1011
-#: ./src/gui/controls/ListBox.ec:1012
-#: ./src/gui/controls/ListBox.ec:1013
-#: ./src/gui/controls/ListBox.ec:1014
+#: ./src/gui/controls/ListBox.ec:985
+#: ./src/gui/controls/ListBox.ec:989
+#: ./src/gui/controls/ListBox.ec:1016
+#: ./src/gui/controls/ListBox.ec:1017
+#: ./src/gui/controls/ListBox.ec:1018
+#: ./src/gui/controls/ListBox.ec:1019
#: ./src/gui/controls/Picture.ec:19
#: ./src/gui/controls/Picture.ec:39
#: ./src/gui/controls/ScrollBar.ec:82
#: ./src/gui/controls/EditBox.ec:741
#: ./src/gui/controls/EditBox.ec:742
#: ./src/gui/controls/Label.ec:18
-#: ./src/gui/controls/ListBox.ec:928
-#: ./src/gui/controls/ListBox.ec:967
-#: ./src/gui/controls/ListBox.ec:975
-#: ./src/gui/controls/ListBox.ec:976
-#: ./src/gui/controls/ListBox.ec:977
-#: ./src/gui/controls/ListBox.ec:978
-#: ./src/gui/controls/ListBox.ec:1009
-#: ./src/gui/controls/ListBox.ec:1010
+#: ./src/gui/controls/ListBox.ec:933
+#: ./src/gui/controls/ListBox.ec:972
+#: ./src/gui/controls/ListBox.ec:980
+#: ./src/gui/controls/ListBox.ec:981
+#: ./src/gui/controls/ListBox.ec:982
+#: ./src/gui/controls/ListBox.ec:983
+#: ./src/gui/controls/ListBox.ec:1014
#: ./src/gui/controls/ListBox.ec:1015
-#: ./src/gui/controls/ListBox.ec:1016
#: ./src/gui/controls/ListBox.ec:1020
+#: ./src/gui/controls/ListBox.ec:1021
+#: ./src/gui/controls/ListBox.ec:1025
#: ./src/gui/controls/ScrollBar.ec:84
#: ./src/gui/controls/ScrollBar.ec:88
#: ./src/gui/controls/ScrollBar.ec:99
msgstr "Please enter a name."
#: ./src/gui/controls/DropBox.ec:98
-#: ./src/gui/controls/ListBox.ec:929
+#: ./src/gui/controls/ListBox.ec:934
msgid "Private"
msgstr "Private"
}
}
+ void AutoSize()
+ {
+ if(listBox && dataType)
+ {
+ Display display = listBox.display;
+ Font boldFont = listBox.boldFont.font;
+ Font font = listBox.fontObject;
+ DataRow row;
+ int width = 0;
+ for(row = listBox.firstRow; row; row = row.next)
+ {
+ ListBoxCell cell;
+ uint i;
+ for(i = 0, cell = row.cells.first; i != index; i++, cell = cell.next);
+ if(cell && cell.isSet && dataType)
+ {
+ static char tempString[4096];
+ String string;
+ int tw = 0;
+ if(dataType.type == normalClass || dataType.type == noHeadClass)
+ string = (char *)dataType._vTbl[__ecereVMethodID_class_OnGetString](dataType, cell.data[0], tempString, userData, null);
+ else
+ string = (char *)dataType._vTbl[__ecereVMethodID_class_OnGetString](dataType, cell.data, tempString, userData, null);
+ if(string)
+ display.FontExtent(row.header ? boldFont : font, string, strlen(string), &tw, null);
+ else
+ display.FontExtent(row.header ? boldFont : font, "", 0, &tw, null);
+ if(tw > width) width = tw;
+ }
+ }
+ if(width)
+ property::width = width;
+ }
+ }
+
private:
DataField()
{
size.h = rowHeight;
NotifyPushed = HeaderPushed;
NotifyClicked = HeaderClicked;
+ NotifyDoubleClick = HeaderDoubleClicked;
NotifyReleased = HeaderReleased;
NotifyMouseMove = HeaderMouseMove;
};
alignment = addedField.alignment;
NotifyPushed = HeaderPushed;
NotifyClicked = HeaderClicked;
+ NotifyDoubleClick = HeaderDoubleClicked;
NotifyReleased = HeaderReleased;
NotifyMouseMove = HeaderMouseMove;
};
return true;
}
+ bool HeaderDoubleClicked(Button control, int x, int y, Modifiers mods)
+ {
+ if(style.resizable)
+ {
+ DataField field = (DataField)control.id;
+ if(field)
+ {
+ if(x < RESIZE_BORDER && field.prev)
+ field = field.prev;
+ else if(x >= control.clientSize.w - RESIZE_BORDER);
+ else
+ field = null;
+ }
+ else
+ {
+ if(x < RESIZE_BORDER && fields.last)
+ field = fields.last;
+ else
+ field = null;
+ }
+ if(field)
+ field.AutoSize();
+ }
+ return false;
+ }
+
watch(visible)
{
if(style.freeSelect)
// Should always be as many cells in the row as fields in the listbox
if(cell && cell.isSet && field.dataType)
{
- Bitmap icon = null;
- char tempString[1024];
+ static char tempString[4096];
char * string;
int tw, th;
- if(field.dataType.type == 0 normalClass || field.dataType.type == noHeadClass)
+ if(field.dataType.type == normalClass || field.dataType.type == noHeadClass)
string = (char *)field.dataType._vTbl[__ecereVMethodID_class_OnGetString](field.dataType, cell.data[0], tempString, field.userData, null);
else
string = (char *)field.dataType._vTbl[__ecereVMethodID_class_OnGetString](field.dataType, cell.data, tempString, field.userData, null);