changeset 1370:e705051d841c

Test change on Windows to allow dw_container_cursor() to work on unsized containers. I also removed an old hack of initializing unpacked windows to a large size. There was a reason for this at one time, but I am hoping it isn't necessary anymore. My testing has not shown any issues so far.
author bsmith@81767d24-ef19-dc11-ae90-00e081727c95
date Sun, 20 Nov 2011 16:34:44 +0000
parents 960ea1ec245e
children 896347a9be19
files win/dw.c
diffstat 1 files changed, 44 insertions(+), 32 deletions(-) [+]
line wrap: on
line diff
--- a/win/dw.c	Sun Nov 20 06:45:55 2011 +0000
+++ b/win/dw.c	Sun Nov 20 16:34:44 2011 +0000
@@ -3,7 +3,7 @@
  *          A GTK like implementation of the Win32 GUI
  *
  * (C) 2000-2011 Brian Smith <brian@dbsoft.org>
- * (C) 2003-2005 Mark Hessling <m.hessling@qut.edu.au>
+ * (C) 2003-2011 Mark Hessling <m.hessling@qut.edu.au>
  *
  */
 #define _WIN32_IE 0x0500
@@ -1607,6 +1607,14 @@
                            rect.right - rect.left, rect.bottom-rect.top, FALSE);
                }
             }
+            /* So does the List View... handle delayed cursoring */
+            if(strnicmp(tmpbuf, WC_LISTVIEW, strlen(WC_LISTVIEW)+1)==0 && width + vectorx > 10 && height + vectory > 10)
+            {            
+                int index = DW_POINTER_TO_INT(dw_window_get_data(handle, "_dw_cursor"));
+                
+                if(index > 0)
+                    ListView_EnsureVisible(handle, index, TRUE);
+            }
 
             if(thisbox->type == DW_HORZ)
                currentx += width + vectorx + (pad * 2);
@@ -4564,7 +4572,7 @@
    hwndframe = CreateWindow(FRAMECLASSNAME,
                       "",
                       WS_VISIBLE | WS_CHILD | WS_CLIPCHILDREN,
-                      0,0,2000,1000,
+                      0,0,0,0,
                       DW_HWND_OBJECT,
                       NULL,
                       DWInstance,
@@ -4595,7 +4603,7 @@
     hwndframe = CreateWindow(ScrollClassName,
                       "",
                       WS_VISIBLE | WS_CHILD | WS_CLIPCHILDREN | WS_VSCROLL | WS_HSCROLL,
-                      0,0,2000,1000,
+                      0,0,0,0,
                       DW_HWND_OBJECT,
                       NULL,
                       DWInstance,
@@ -4681,7 +4689,7 @@
    hwndframe = CreateWindow(FRAMECLASSNAME,
                       "",
                       WS_VISIBLE | WS_CHILD,
-                      0,0,2000,1000,
+                      0,0,0,0,
                       DW_HWND_OBJECT,
                       NULL,
                       DWInstance,
@@ -4691,7 +4699,7 @@
                             title,
                             WS_CHILD | BS_GROUPBOX |
                             WS_VISIBLE | WS_CLIPCHILDREN,
-                            0,0,2000,1000,
+                            0,0,0,0,
                             hwndframe,
                             NULL,
                             DWInstance,
@@ -4718,7 +4726,7 @@
    hwndframe = CreateWindow("MDICLIENT",
                       "",
                       WS_VISIBLE | WS_CHILD | WS_CLIPSIBLINGS,
-                      0,0,2000,1000,
+                      0,0,0,0,
                       DW_HWND_OBJECT,
                       (HMENU)id,
                       DWInstance,
@@ -4737,7 +4745,7 @@
    return CreateWindow(BrowserClassName,
                   "",
                   WS_VISIBLE | WS_CHILD | WS_CLIPSIBLINGS,
-                  0,0,2000,1000,
+                  0,0,0,0,
                   DW_HWND_OBJECT,
                   (HMENU)id,
                   DWInstance,
@@ -4814,7 +4822,7 @@
                   "",
                   SS_BITMAP | SS_CENTERIMAGE | WS_VISIBLE |
                   WS_CHILD | WS_CLIPCHILDREN,
-                  0,0,2000,1000,
+                  0,0,0,0,
                   DW_HWND_OBJECT,
                   (HMENU)id,
                   DWInstance,
@@ -4839,7 +4847,7 @@
    tmp = CreateWindow(WC_TABCONTROL,
                   "",
                   WS_VISIBLE | WS_CHILD | WS_CLIPCHILDREN | flags,
-                  0,0,2000,1000,
+                  0,0,0,0,
                   DW_HWND_OBJECT,
                   (HMENU)id,
                   DWInstance,
@@ -5236,7 +5244,7 @@
                      LVS_REPORT | LVS_SHOWSELALWAYS |
                      LVS_SHAREIMAGELISTS | WS_BORDER |
                      WS_CLIPCHILDREN,
-                     0,0,2000,1000,
+                     0,0,0,0,
                      DW_HWND_OBJECT,
                      (HMENU)id,
                      DWInstance,
@@ -5278,7 +5286,7 @@
                      TVS_HASLINES | TVS_SHOWSELALWAYS |
                      TVS_HASBUTTONS | TVS_LINESATROOT |
                      WS_BORDER | WS_CLIPCHILDREN,
-                     0,0,2000,1000,
+                     0,0,0,0,
                      DW_HWND_OBJECT,
                      (HMENU)id,
                      DWInstance,
@@ -5343,7 +5351,7 @@
                      SS_NOPREFIX |
                      BS_TEXT | WS_VISIBLE |
                      WS_CHILD | WS_CLIPCHILDREN,
-                     0,0,2000,1000,
+                     0,0,0,0,
                      DW_HWND_OBJECT,
                      (HMENU)id,
                      DWInstance,
@@ -5364,7 +5372,7 @@
                      text,
                      BS_TEXT | WS_VISIBLE |
                      WS_CHILD | WS_CLIPCHILDREN,
-                     0,0,2000,1000,
+                     0,0,0,0,
                      DW_HWND_OBJECT,
                      (HMENU)id,
                      DWInstance,
@@ -5389,7 +5397,7 @@
                        WS_VSCROLL | ES_MULTILINE |
                        ES_WANTRETURN | WS_CHILD |
                        WS_CLIPCHILDREN,
-                       0,0,2000,1000,
+                       0,0,0,0,
                        DW_HWND_OBJECT,
                        (HMENU)id,
                        DWInstance,
@@ -5425,7 +5433,7 @@
                        ES_WANTRETURN | WS_CHILD |
                        WS_BORDER | ES_AUTOHSCROLL |
                        WS_VISIBLE | WS_CLIPCHILDREN,
-                       0,0,2000,1000,
+                       0,0,0,0,
                        DW_HWND_OBJECT,
                        (HMENU)id,
                        DWInstance,
@@ -5454,7 +5462,7 @@
                        ES_WANTRETURN | WS_CHILD |
                        ES_PASSWORD | WS_BORDER | WS_VISIBLE |
                        ES_AUTOHSCROLL | WS_CLIPCHILDREN,
-                       0,0,2000,1000,
+                       0,0,0,0,
                        DW_HWND_OBJECT,
                        (HMENU)id,
                        DWInstance,
@@ -5494,7 +5502,7 @@
                      text,
                      WS_CHILD | CBS_DROPDOWN | WS_VSCROLL |
                      WS_CLIPCHILDREN | CBS_AUTOHSCROLL | WS_VISIBLE,
-                     0,0,2000,1000,
+                     0,0,0,0,
                      DW_HWND_OBJECT,
                      (HMENU)id,
                      DWInstance,
@@ -5537,7 +5545,7 @@
                      text,
                      WS_CHILD | BS_PUSHBUTTON |
                      WS_VISIBLE | WS_CLIPCHILDREN,
-                     0,0,2000,1000,
+                     0,0,0,0,
                      DW_HWND_OBJECT,
                      (HMENU)id,
                      DWInstance,
@@ -5568,7 +5576,7 @@
                   WS_CHILD | BS_PUSHBUTTON |
                   WS_VISIBLE | WS_CLIPCHILDREN |
                   (icon ? BS_ICON : BS_BITMAP),
-                  0,0,2000,1000,
+                  0,0,0,0,
                   DW_HWND_OBJECT,
                   (HMENU)id,
                   DWInstance,
@@ -5627,7 +5635,7 @@
    tmp = CreateWindow( BUTTONCLASSNAME,
                        "",
                        windowtype | WS_CHILD | BS_PUSHBUTTON | WS_CLIPCHILDREN | WS_VISIBLE,
-                       0,0,2000,1000,
+                       0,0,0,0,
                        DW_HWND_OBJECT,
                        (HMENU)id,
                        DWInstance,
@@ -5710,7 +5718,7 @@
                        WS_CHILD | BS_PUSHBUTTON |
                        windowtype | WS_CLIPCHILDREN |
                        WS_VISIBLE,
-                       0,0,2000,1000,
+                       0,0,0,0,
                        DW_HWND_OBJECT,
                        (HMENU)id,
                        DWInstance,
@@ -5747,7 +5755,7 @@
                         text,
                         WS_CHILD | WS_BORDER | WS_VISIBLE |
                         ES_NUMBER | WS_CLIPCHILDREN,
-                        0,0,2000,1000,
+                        0,0,0,0,
                         DW_HWND_OBJECT,
                         NULL,
                         DWInstance,
@@ -5758,7 +5766,7 @@
                        WS_CHILD | UDS_ALIGNRIGHT | WS_BORDER |
                        UDS_ARROWKEYS | UDS_SETBUDDYINT |
                        UDS_WRAP | UDS_NOTHOUSANDS | WS_VISIBLE,
-                       0,0,2000,1000,
+                       0,0,0,0,
                        DW_HWND_OBJECT,
                        (HMENU)id,
                        DWInstance,
@@ -5801,7 +5809,7 @@
                      text,
                      WS_CHILD | BS_AUTORADIOBUTTON |
                      WS_CLIPCHILDREN | WS_VISIBLE,
-                     0,0,2000,1000,
+                     0,0,0,0,
                      DW_HWND_OBJECT,
                      (HMENU)id,
                      DWInstance,
@@ -5828,7 +5836,7 @@
                      "",
                      WS_CHILD | WS_CLIPCHILDREN | WS_VISIBLE |
                      (vertical ? TBS_VERT : TBS_HORZ),
-                     0,0,2000,1000,
+                     0,0,0,0,
                      DW_HWND_OBJECT,
                      (HMENU)id,
                      DWInstance,
@@ -5856,7 +5864,7 @@
                      "",
                      WS_CHILD | WS_CLIPCHILDREN | WS_VISIBLE |
                      (vertical ? SBS_VERT : SBS_HORZ),
-                     0,0,2000,1000,
+                     0,0,0,0,
                      DW_HWND_OBJECT,
                      (HMENU)id,
                      DWInstance,
@@ -5881,7 +5889,7 @@
    return CreateWindow(PROGRESS_CLASS,
                   "",
                   WS_VISIBLE | WS_CHILD | WS_CLIPCHILDREN,
-                  0,0,2000,1000,
+                  0,0,0,0,
                   DW_HWND_OBJECT,
                   (HMENU)id,
                   DWInstance,
@@ -5901,7 +5909,7 @@
                      text,
                      WS_CHILD | BS_AUTOCHECKBOX |
                      BS_TEXT | WS_CLIPCHILDREN | WS_VISIBLE,
-                     0,0,2000,1000,
+                     0,0,0,0,
                      DW_HWND_OBJECT,
                      (HMENU)id,
                      DWInstance,
@@ -5929,7 +5937,7 @@
                        WS_CHILD | LBS_HASSTRINGS |
                        LBS_NOTIFY | WS_BORDER  | WS_CLIPCHILDREN |
                        WS_VSCROLL | (multi ? LBS_MULTIPLESEL : 0) ,
-                       0,0,2000,1000,
+                       0,0,0,0,
                        DW_HWND_OBJECT,
                        (HMENU)id,
                        DWInstance,
@@ -8585,8 +8593,12 @@
 
       if ( (textcomp && lvi.lParam && strcmp( (char *)lvi.lParam, text ) == 0) || (!textcomp && (char *)lvi.lParam == text) )
       {
-
+         unsigned long width, height;
+         
          ListView_SetItemState( handle, index, LVIS_FOCUSED | LVIS_SELECTED, LVIS_FOCUSED | LVIS_SELECTED );
+         dw_window_get_pos_size( handle, NULL, NULL, &width, &height);
+         if(width < 10 || height < 10)
+            dw_window_set_data( handle, "_dw_cursor", DW_INT_TO_POINTER(index) );
          ListView_EnsureVisible( handle, index, TRUE );
          return;
       }
@@ -10033,7 +10045,7 @@
    HWND tmp = CreateWindow(SplitbarClassName,
                      "",
                      WS_VISIBLE | WS_CHILD | WS_CLIPCHILDREN,
-                     0,0,2000,1000,
+                     0,0,0,0,
                      DW_HWND_OBJECT,
                      (HMENU)id,
                      DWInstance,
@@ -10110,7 +10122,7 @@
                            MONTHCAL_CLASS,
                            "",
                            WS_VISIBLE | WS_CHILD | WS_CLIPCHILDREN | MCS_DAYSTATE,
-                           0,0,2000,1000, // resize it later
+                           0,0,0,0,
                            DW_HWND_OBJECT,
                            (HMENU)id,
                            DWInstance,