Mercurial > dwindows
changeset 107:cd0e5cf92f6a
Rewrote the Windows packing code so it is more like OS/2 to improve window
redrawing performance. Fixed problems with the tree widget on unix.
lastselect needs to be set on the root tree widget... not the
scrolled window!
author | bsmith@81767d24-ef19-dc11-ae90-00e081727c95 |
---|---|
date | Tue, 17 Sep 2002 17:33:06 +0000 |
parents | 4b6799f3dbbc |
children | 108674099806 |
files | gtk/dw.c win/dw.c |
diffstat | 2 files changed, 55 insertions(+), 47 deletions(-) [+] |
line wrap: on
line diff
--- a/gtk/dw.c Fri Sep 06 22:49:10 2002 +0000 +++ b/gtk/dw.c Tue Sep 17 17:33:06 2002 +0000 @@ -408,16 +408,21 @@ void _tree_select_event(GtkTree *tree, GtkWidget *child, gpointer data) { SignalHandler *work = (SignalHandler *)data; + GtkWidget *treeroot = (GtkWidget *)gtk_object_get_data(GTK_OBJECT(child), "tree"); + + if(treeroot && GTK_IS_TREE(treeroot)) + { + GtkWidget *lastselect = (GtkWidget *)gtk_object_get_data(GTK_OBJECT(treeroot), "lastselect"); + if(lastselect && GTK_IS_TREE_ITEM(lastselect)) + gtk_tree_item_deselect(GTK_TREE_ITEM(lastselect)); + gtk_object_set_data(GTK_OBJECT(treeroot), "lastselect", (gpointer)child); + } if(work) { void (*treeselectfunc)(HWND, HWND, char *, void *, void *) = work->func; char *text = (char *)gtk_object_get_data(GTK_OBJECT(child), "text"); void *itemdata = (char *)gtk_object_get_data(GTK_OBJECT(child), "itemdata"); - GtkWidget *treeroot = (GtkWidget *)gtk_object_get_data(GTK_OBJECT(child), "tree"); - - if(treeroot && GTK_IS_TREE(treeroot)) - gtk_object_set_data(GTK_OBJECT(treeroot), "lastselect", (gpointer)child); treeselectfunc(work->window, child, text, itemdata, work->data); } } @@ -2906,7 +2911,7 @@ GtkWidget *newitem, *tree, *subtree, *label, *hbox, *pixmap; GdkPixmap *gdkpix; GdkBitmap *gdkbmp = NULL; - int position = 0; + int position = -1; int _locked_by_me = FALSE; if(!handle) @@ -3136,18 +3141,19 @@ */ void dw_tree_item_select(HWND handle, HWND item) { - GtkWidget *lastselect; + GtkWidget *lastselect, *tree; int _locked_by_me = FALSE; if(!handle || !item) return; DW_MUTEX_LOCK; - lastselect = (GtkWidget *)gtk_object_get_data(GTK_OBJECT(handle), "lastselect"); + tree = (GtkWidget *)gtk_object_get_user_data(GTK_OBJECT(handle)); + lastselect = (GtkWidget *)gtk_object_get_data(GTK_OBJECT(tree), "lastselect"); if(lastselect && GTK_IS_TREE_ITEM(lastselect)) gtk_tree_item_deselect(GTK_TREE_ITEM(lastselect)); gtk_tree_item_select(GTK_TREE_ITEM(item)); - gtk_object_set_data(GTK_OBJECT(handle), "lastselect", (gpointer)item); + gtk_object_set_data(GTK_OBJECT(tree), "lastselect", (gpointer)item); DW_MUTEX_UNLOCK; } @@ -3171,6 +3177,7 @@ DW_MUTEX_UNLOCK; return; } + gtk_object_set_data(GTK_OBJECT(tree), "lastselect", NULL); gtk_tree_clear_items(GTK_TREE(tree), 0, 1000000); DW_MUTEX_UNLOCK; } @@ -3235,23 +3242,18 @@ return; } - lastselect = (GtkWidget *)gtk_object_get_data(GTK_OBJECT(handle), "lastselect"); + lastselect = (GtkWidget *)gtk_object_get_data(GTK_OBJECT(tree), "lastselect"); + + parenttree = (GtkWidget *)gtk_object_get_data(GTK_OBJECT(item), "parenttree"); if(lastselect == item) { - if(lastselect && GTK_IS_WIDGET(lastselect)) - { - parenttree = (GtkWidget *)gtk_object_get_data(GTK_OBJECT(lastselect), "parenttree"); - if(parenttree && GTK_IS_TREE(parenttree)) - gtk_tree_unselect_child(GTK_TREE(parenttree), lastselect); - } - gtk_object_set_data(GTK_OBJECT(handle), "lastselect", NULL); - } - - parenttree = (GtkWidget *)gtk_object_get_data(GTK_OBJECT(item), "parenttree"); + gtk_tree_item_deselect(GTK_TREE_ITEM(lastselect)); + gtk_object_set_data(GTK_OBJECT(tree), "lastselect", NULL); + } if(parenttree && GTK_IS_WIDGET(parenttree)) - gtk_tree_remove_item(GTK_TREE(parenttree), item); + gtk_container_remove(GTK_CONTAINER(parenttree), item); DW_MUTEX_UNLOCK; }
--- a/win/dw.c Fri Sep 06 22:49:10 2002 +0000 +++ b/win/dw.c Tue Sep 17 17:33:06 2002 +0000 @@ -3363,7 +3363,7 @@ hwndframe = CreateWindow(FRAMECLASSNAME, "", - WS_CHILD | WS_CLIPCHILDREN, + WS_VISIBLE | WS_CHILD | WS_CLIPCHILDREN, 0,0,2000,1000, DW_HWND_OBJECT, NULL, @@ -3396,7 +3396,7 @@ hwndframe = CreateWindow(FRAMECLASSNAME, "", - WS_CHILD, + WS_VISIBLE | WS_CHILD, 0,0,2000,1000, DW_HWND_OBJECT, NULL, @@ -3433,7 +3433,7 @@ hwndframe = CreateWindow("MDICLIENT", "", - WS_CHILD | WS_CLIPSIBLINGS, + WS_VISIBLE | WS_CHILD | WS_CLIPSIBLINGS, 0,0,2000,1000, DW_HWND_OBJECT, NULL, @@ -3451,7 +3451,8 @@ { return CreateWindow(STATICCLASSNAME, "", - SS_BITMAP | WS_CHILD | WS_CLIPCHILDREN, + SS_BITMAP | WS_VISIBLE | + WS_CHILD | WS_CLIPCHILDREN, 0,0,2000,1000, DW_HWND_OBJECT, NULL, @@ -3476,7 +3477,7 @@ tmp = CreateWindow(WC_TABCONTROL, "", - WS_CHILD | WS_CLIPCHILDREN, + WS_VISIBLE | WS_CHILD | WS_CLIPCHILDREN, 0,0,2000,1000, DW_HWND_OBJECT, NULL, @@ -3648,7 +3649,8 @@ { HWND tmp = CreateWindow(WC_LISTVIEW, "", - WS_CHILD | LVS_REPORT | LVS_SHOWSELALWAYS | + WS_VISIBLE | WS_CHILD | + LVS_REPORT | LVS_SHOWSELALWAYS | LVS_SHAREIMAGELISTS | WS_BORDER | WS_CLIPCHILDREN, 0,0,2000,1000, @@ -3682,7 +3684,8 @@ { HWND tmp = CreateWindow(WC_TREEVIEW, "", - WS_CHILD | TVS_HASLINES | TVS_SHOWSELALWAYS | + WS_VISIBLE | WS_CHILD | + TVS_HASLINES | TVS_SHOWSELALWAYS | TVS_HASBUTTONS | TVS_LINESATROOT | WS_BORDER | WS_CLIPCHILDREN, 0,0,2000,1000, @@ -3746,7 +3749,8 @@ { HWND tmp = CreateWindow(STATICCLASSNAME, text, - BS_TEXT | WS_CHILD | WS_CLIPCHILDREN, + BS_TEXT | WS_VISIBLE | + WS_CHILD | WS_CLIPCHILDREN, 0,0,2000,1000, DW_HWND_OBJECT, (HMENU)id, @@ -3766,7 +3770,8 @@ { HWND tmp = CreateWindow(STATICCLASSNAME, text, - BS_TEXT | WS_CHILD | WS_CLIPCHILDREN, + BS_TEXT | WS_VISIBLE | + WS_CHILD | WS_CLIPCHILDREN, 0,0,2000,1000, DW_HWND_OBJECT, (HMENU)id, @@ -3788,7 +3793,7 @@ HWND tmp = CreateWindowEx(WS_EX_CLIENTEDGE, EDITCLASSNAME, "", - WS_BORDER | + WS_VISIBLE | WS_BORDER | WS_VSCROLL | ES_MULTILINE | ES_WANTRETURN | WS_CHILD | WS_CLIPCHILDREN, @@ -3826,7 +3831,7 @@ text, ES_WANTRETURN | WS_CHILD | WS_BORDER | ES_AUTOHSCROLL | - WS_CLIPCHILDREN, + WS_VISIBLE | WS_CLIPCHILDREN, 0,0,2000,1000, DW_HWND_OBJECT, (HMENU)id, @@ -3855,7 +3860,7 @@ EDITCLASSNAME, text, ES_WANTRETURN | WS_CHILD | - ES_PASSWORD | WS_BORDER | + ES_PASSWORD | WS_BORDER | WS_VISIBLE | ES_AUTOHSCROLL | WS_CLIPCHILDREN, 0,0,2000,1000, DW_HWND_OBJECT, @@ -3897,7 +3902,7 @@ HWND tmp = CreateWindow(COMBOBOXCLASSNAME, text, WS_CHILD | CBS_DROPDOWN | WS_VSCROLL | - WS_CLIPCHILDREN, + WS_CLIPCHILDREN | WS_VISIBLE, 0,0,2000,1000, DW_HWND_OBJECT, (HMENU)id, @@ -3938,7 +3943,8 @@ HWND tmp = CreateWindow(BUTTONCLASSNAME, text, - WS_CHILD | BS_PUSHBUTTON | WS_CLIPCHILDREN, + WS_CHILD | BS_PUSHBUTTON | + WS_VISIBLE | WS_CLIPCHILDREN, 0,0,2000,1000, DW_HWND_OBJECT, (HMENU)id, @@ -3969,7 +3975,8 @@ tmp = CreateWindow(BUTTONCLASSNAME, "", WS_CHILD | BS_PUSHBUTTON | - BS_BITMAP | WS_CLIPCHILDREN, + BS_BITMAP | WS_CLIPCHILDREN | + WS_VISIBLE, 0,0,2000,1000, DW_HWND_OBJECT, (HMENU)id, @@ -4001,7 +4008,7 @@ HWND buddy = CreateWindowEx(WS_EX_CLIENTEDGE, EDITCLASSNAME, text, - WS_CHILD | WS_BORDER | + WS_CHILD | WS_BORDER | WS_VISIBLE | ES_NUMBER | WS_CLIPCHILDREN, 0,0,2000,1000, DW_HWND_OBJECT, @@ -4013,7 +4020,7 @@ NULL, WS_CHILD | UDS_ALIGNRIGHT | WS_BORDER | UDS_ARROWKEYS | UDS_SETBUDDYINT | - UDS_WRAP | UDS_NOTHOUSANDS, + UDS_WRAP | UDS_NOTHOUSANDS | WS_VISIBLE, 0,0,2000,1000, DW_HWND_OBJECT, (HMENU)id, @@ -4048,7 +4055,7 @@ HWND tmp = CreateWindow(BUTTONCLASSNAME, text, WS_CHILD | BS_AUTORADIOBUTTON | - WS_CLIPCHILDREN, + WS_CLIPCHILDREN | WS_VISIBLE, 0,0,2000,1000, DW_HWND_OBJECT, (HMENU)id, @@ -4076,7 +4083,7 @@ { HWND tmp = CreateWindow(TRACKBAR_CLASS, "", - WS_CHILD | WS_CLIPCHILDREN | + WS_CHILD | WS_CLIPCHILDREN | WS_VISIBLE | (vertical ? TBS_VERT : TBS_HORZ), 0,0,2000,1000, DW_HWND_OBJECT, @@ -4104,7 +4111,7 @@ { return CreateWindow(PROGRESS_CLASS, "", - WS_CHILD | WS_CLIPCHILDREN, + WS_VISIBLE | WS_CHILD | WS_CLIPCHILDREN, 0,0,2000,1000, DW_HWND_OBJECT, NULL, @@ -4124,7 +4131,7 @@ HWND tmp = CreateWindow(BUTTONCLASSNAME, text, WS_CHILD | BS_AUTOCHECKBOX | - BS_TEXT | WS_CLIPCHILDREN, + BS_TEXT | WS_CLIPCHILDREN | WS_VISIBLE, 0,0,2000,1000, DW_HWND_OBJECT, NULL, @@ -4150,7 +4157,8 @@ { HWND tmp = CreateWindow(LISTBOXCLASSNAME, "", - LBS_NOINTEGRALHEIGHT | WS_CHILD | LBS_HASSTRINGS | + WS_VISIBLE | LBS_NOINTEGRALHEIGHT | + WS_CHILD | LBS_HASSTRINGS | LBS_NOTIFY | WS_BORDER | WS_CLIPCHILDREN | WS_VSCROLL | (multi ? LBS_MULTIPLESEL : 0) , 0,0,2000,1000, @@ -4329,7 +4337,6 @@ thisbox->count++; SetParent(item, box); - ShowWindow(item, SW_SHOW); if(strncmp(tmpbuf, UPDOWN_CLASS, strlen(UPDOWN_CLASS))==0) { ColorInfo *cinfo = (ColorInfo *)GetWindowLong(item, GWL_USERDATA); @@ -6067,7 +6074,7 @@ Box *newbox = calloc(sizeof(Box), 1); HWND tmp = CreateWindow(ObjectClassName, "", - WS_CHILD | WS_CLIPCHILDREN, + WS_VISIBLE | WS_CHILD | WS_CLIPCHILDREN, 0,0,2000,1000, DW_HWND_OBJECT, NULL, @@ -6634,7 +6641,7 @@ { HWND tmp = CreateWindow(SplitbarClassName, "", - WS_CHILD | WS_CLIPCHILDREN, + WS_VISIBLE | WS_CHILD | WS_CLIPCHILDREN, 0,0,2000,1000, DW_HWND_OBJECT, NULL, @@ -6661,7 +6668,7 @@ { HWND tmp = CreateWindow(SplitbarClassName, "", - WS_CHILD | WS_CLIPCHILDREN, + WS_VISIBLE | WS_CHILD | WS_CLIPCHILDREN, 0,0,2000,1000, DW_HWND_OBJECT, NULL, @@ -6733,7 +6740,6 @@ thisbox->count++; SetParent(item, box); - ShowWindow(item, SW_SHOW); if(strncmp(tmpbuf, UPDOWN_CLASS, strlen(UPDOWN_CLASS))==0) { ColorInfo *cinfo = (ColorInfo *)GetWindowLong(item, GWL_USERDATA);