tMake keyboard focus work properly for GtkCLists again by disabling the default behaviour for the WM_DRAWITEM message. - vaccinewars - be a doctor and try to vaccinate the world
(HTM) git clone git://src.adamsgaard.dk/vaccinewars
(DIR) Log
(DIR) Files
(DIR) Refs
(DIR) README
(DIR) LICENSE
---
(DIR) commit 35f822749aa9f3d6331d8327f721d55d7f748eef
(DIR) parent 9aa59786df088c7d733d193f89d860aae68b6290
(HTM) Author: Ben Webb <ben@salilab.org>
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(-)
---
(DIR) 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, WPARAM wParam,
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 lpdis)
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, LPDRAWITEMSTRUCT lpdis)
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, LPDRAWITEMSTRUCT lpdis)
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 lpdis)
}
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)