diff win/dw.c @ 1434:2cca36ec3da6

Fixed automatic redrawing not occurring on OS/2 and Windows when changes were made from a button press handler.
author bsmith@81767d24-ef19-dc11-ae90-00e081727c95
date Tue, 06 Dec 2011 22:36:55 +0000
parents 0676561865ac
children 18c1b999dd65
line wrap: on
line diff
--- a/win/dw.c	Mon Dec 05 05:22:06 2011 +0000
+++ b/win/dw.c	Tue Dec 06 22:36:55 2011 +0000
@@ -3407,6 +3407,7 @@
 {
    ColorInfo *cinfo = (ColorInfo *)GetWindowLongPtr(hwnd, GWLP_USERDATA);
    WNDPROC pOldProc;
+   int retval = -1;
 
    if ( !cinfo )
       return DefWindowProc(hwnd, msg, mp1, mp2);
@@ -3451,7 +3452,7 @@
                   if(checkbox)
                      in_checkbox_handler = 1;
 
-                  clickfunc(tmp->window, tmp->data);
+                  retval = clickfunc(tmp->window, tmp->data);
 
                   if(checkbox)
                      in_checkbox_handler = 0;
@@ -3482,7 +3483,7 @@
                   /* Make sure it's the right window, and the right ID */
                   if(tmp->window == hwnd)
                   {
-                     clickfunc(tmp->window, tmp->data);
+                     retval = clickfunc(tmp->window, tmp->data);
                      tmp = NULL;
                   }
                }
@@ -3508,6 +3509,9 @@
       break;
    }
 
+   /* Make sure windows are up-to-date */
+   if(retval != -1)
+      _dw_redraw(0, FALSE);
    if ( !pOldProc )
       return DefWindowProc(hwnd, msg, mp1, mp2);
    return CallWindowProc(pOldProc, hwnd, msg, mp1, mp2);