tMake gtk_clist_optimal_column_width work properly under Win32. - vaccinewars -… | |
git clone git://src.adamsgaard.dk/vaccinewars | |
Log | |
Files | |
Refs | |
README | |
LICENSE | |
--- | |
commit 4323ff1587a674f386772595ab5a536a0f5cedbc | |
parent 6780b52840675ea0a7894175e01f4b4b3524bed0 | |
Author: Ben Webb <[email protected]> | |
Date: Sun, 29 Sep 2002 18:36:45 +0000 | |
Make gtk_clist_optimal_column_width work properly under Win32. | |
Diffstat: | |
M src/gtkport/clist.c | 27 ++++++++++++++++----------- | |
M src/gtkport/clist.h | 1 + | |
2 files changed, 17 insertions(+), 11 deletions(-) | |
--- | |
diff --git a/src/gtkport/clist.c b/src/gtkport/clist.c | |
t@@ -212,6 +212,7 @@ GtkWidget *gtk_clist_new(gint columns) | |
clist->rowdata = NULL; | |
for (i = 0; i < columns; i++) { | |
clist->coldata[i].width = 0; | |
+ clist->coldata[i].optimal_width = 0; | |
clist->coldata[i].visible = TRUE; | |
clist->coldata[i].resizeable = TRUE; | |
clist->coldata[i].justification = GTK_JUSTIFY_LEFT; | |
t@@ -383,13 +384,13 @@ void gtk_clist_do_auto_resize(GtkCList *clist) | |
for (i = 0; i < clist->cols; i++) | |
if (clist->coldata[i].auto_resize) { | |
- gtk_clist_set_column_width(clist, i, clist->coldata[i].width); | |
+ gtk_clist_set_column_width(clist, i, clist->coldata[i].optimal_width); | |
} | |
} | |
gint gtk_clist_optimal_column_width(GtkCList *clist, gint column) | |
{ | |
- return clist->coldata[column].width; | |
+ return clist->coldata[column].optimal_width; | |
} | |
void gtk_clist_update_all_widths(GtkCList *clist) | |
t@@ -401,18 +402,22 @@ void gtk_clist_update_all_widths(GtkCList *clist) | |
gint i; | |
header = clist->header; | |
- if (header) | |
+ if (header) { | |
for (i = 0; i < clist->cols; i++) { | |
- if (GetTextSize(header, clist->coldata[i].title, &size, defFont) && | |
- clist->coldata[i].width < size.cx + 4 + 2 * LISTHEADERPACK) { | |
- clist->coldata[i].width = size.cx + 4 + 2 * LISTHEADERPACK; | |
+ if (GetTextSize(header, clist->coldata[i].title, &size, defFont)) { | |
+ int new_width = size.cx + 4 + 2 * LISTHEADERPACK; | |
+ clist->coldata[i].width = MAX(clist->coldata[i].width, new_width); | |
+ clist->coldata[i].optimal_width = MAX(clist->coldata[i].optimal_width, | |
+ new_width); | |
} | |
} | |
+ } | |
for (list = clist->rowdata; list; list = g_slist_next(list)) { | |
row = (GtkCListRow *)list->data; | |
- if (row && row->text) | |
+ if (row && row->text) { | |
gtk_clist_update_widths(clist, row->text); | |
+ } | |
} | |
gtk_clist_set_extent(clist); | |
t@@ -428,10 +433,10 @@ void gtk_clist_update_widths(GtkCList *clist, gchar *tex… | |
if (!hWnd) | |
return; | |
for (i = 0; i < clist->cols; i++) { | |
- if (clist->coldata[i].auto_resize | |
- && GetTextSize(hWnd, text[i], &size, defFont) | |
- && size.cx + 4 + 2 * LISTITEMHPACK > clist->coldata[i].width) { | |
- clist->coldata[i].width = size.cx + 4 + 2 * LISTITEMHPACK; | |
+ if (GetTextSize(hWnd, text[i], &size, defFont)) { | |
+ int new_width = size.cx + 4 + 2 * LISTITEMHPACK; | |
+ clist->coldata[i].optimal_width = MAX(clist->coldata[i].optimal_width, | |
+ new_width); | |
} | |
} | |
} | |
diff --git a/src/gtkport/clist.h b/src/gtkport/clist.h | |
t@@ -42,6 +42,7 @@ typedef gint (*GtkCListCompareFunc) (GtkCList *clist, gconst… | |
struct _GtkCListColumn { | |
gchar *title; | |
gint width; | |
+ gint optimal_width; | |
GtkJustification justification; | |
guint visible:1; | |
guint resizeable:1; |