tMake keyboard focus work properly for GtkCLists again by disabling the default… | |
git clone git://src.adamsgaard.dk/vaccinewars | |
Log | |
Files | |
Refs | |
README | |
LICENSE | |
--- | |
commit 35f822749aa9f3d6331d8327f721d55d7f748eef | |
parent 9aa59786df088c7d733d193f89d860aae68b6290 | |
Author: Ben Webb <[email protected]> | |
Date: Mon, 2 Sep 2002 13:43:25 +0000 | |
Make keyboard focus work properly for GtkCLists again by disabling | |
tthe default behaviour for the WM_DRAWITEM message. | |
Diffstat: | |
M src/gtkport/clist.c | 29 +++++++++++++++-------------- | |
1 file changed, 15 insertions(+), 14 deletions(-) | |
--- | |
diff --git a/src/gtkport/clist.c b/src/gtkport/clist.c | |
t@@ -90,7 +90,8 @@ gboolean gtk_clist_wndproc(GtkWidget *widget, UINT msg, WPAR… | |
lpdis = (LPDRAWITEMSTRUCT)lParam; | |
if (lpdis) { | |
gtk_clist_draw_row(GTK_CLIST(widget), lpdis); | |
- return FALSE; | |
+ *dodef = FALSE; | |
+ return TRUE; | |
} | |
break; | |
case WM_NOTIFY: | |
t@@ -247,7 +248,8 @@ void gtk_clist_draw_row(GtkCList *clist, LPDRAWITEMSTRUCT … | |
HBRUSH bkgrnd; | |
COLORREF textcol, oldtextcol; | |
RECT rcCol; | |
- gint i, CurrentX; | |
+ int oldbkmode; | |
+ gint i, CurrentX, right; | |
GtkCListRow *row; | |
if (lpdis->itemState & ODS_SELECTED) { | |
t@@ -258,19 +260,17 @@ void gtk_clist_draw_row(GtkCList *clist, LPDRAWITEMSTRUC… | |
textcol = (COLORREF)GetSysColor(COLOR_WINDOWTEXT); | |
} | |
oldtextcol = SetTextColor(lpdis->hDC, textcol); | |
- SetBkMode(lpdis->hDC, TRANSPARENT); | |
+ oldbkmode = SetBkMode(lpdis->hDC, TRANSPARENT); | |
FillRect(lpdis->hDC, &lpdis->rcItem, bkgrnd); | |
if (lpdis->itemID >= 0 && lpdis->itemID < clist->rows) { | |
int width; | |
row = (GtkCListRow *)g_slist_nth_data(clist->rowdata, lpdis->itemID); | |
- lpdis->rcItem.left = 0; | |
- width = 0; | |
+ width = CurrentX = 0; | |
for (i = 0; i < clist->cols; i++) { | |
width += clist->coldata[i].width; | |
} | |
- lpdis->rcItem.right = MAX(lpdis->rcItem.right, width); | |
- CurrentX = lpdis->rcItem.left; | |
+ right = MAX(lpdis->rcItem.right, width); | |
rcCol.top = lpdis->rcItem.top; | |
rcCol.bottom = lpdis->rcItem.bottom; | |
if (row->text) | |
t@@ -278,12 +278,12 @@ void gtk_clist_draw_row(GtkCList *clist, LPDRAWITEMSTRUC… | |
rcCol.left = CurrentX + LISTITEMHPACK; | |
CurrentX += clist->coldata[i].width; | |
rcCol.right = CurrentX - LISTITEMHPACK; | |
- if (rcCol.left > lpdis->rcItem.right) | |
- rcCol.left = lpdis->rcItem.right; | |
- if (rcCol.right > lpdis->rcItem.right - LISTITEMHPACK) | |
- rcCol.right = lpdis->rcItem.right - LISTITEMHPACK; | |
+ if (rcCol.left > right) | |
+ rcCol.left = right; | |
+ if (rcCol.right > right - LISTITEMHPACK) | |
+ rcCol.right = right - LISTITEMHPACK; | |
if (i == clist->cols - 1) | |
- rcCol.right = lpdis->rcItem.right - LISTITEMHPACK; | |
+ rcCol.right = right - LISTITEMHPACK; | |
if (row->text[i]) { | |
UINT align; | |
switch(clist->coldata[i].justification) { | |
t@@ -304,9 +304,10 @@ void gtk_clist_draw_row(GtkCList *clist, LPDRAWITEMSTRUCT… | |
} | |
SetTextColor(lpdis->hDC, oldtextcol); | |
- SetBkMode(lpdis->hDC, OPAQUE); | |
- if (lpdis->itemState & ODS_FOCUS) | |
+ SetBkMode(lpdis->hDC, oldbkmode); | |
+ if (lpdis->itemState & ODS_FOCUS) { | |
DrawFocusRect(lpdis->hDC, &lpdis->rcItem); | |
+ } | |
} | |
static void gtk_clist_set_extent(GtkCList *clist) |