Sorry if this is the wrong place to send this.  I tried sending to the
rxvt guys at sf, and got no response.

Anyway; in case whoever maintains the cygwin port is listening, here's
some diffs...

-- 
Jordan DeLong
[EMAIL PROTECTED]
changes:
 - libW11 support to change the cursor to a xterm cursor
 - don't go into the menu-state when someone presses and then releases Alt
 - don't close terminals when people hit the x button or alt+f4
 - fix NT_get_state:
    - allow using the VK_LWIN key as a meta key (people who use litestep
      may want this, because they can turn off the windows menu popup crap).
    - fix logic about control
 - small tweak that makes inherit pixmap a *lot* faster (i.e. actually
   usuable)
diff -ruN rxvt-dist/W11/w32/event.c rxvt/W11/w32/event.c
--- rxvt-dist/W11/w32/event.c   2005-04-04 20:24:49.000000000 -0500
+++ rxvt/W11/w32/event.c        2005-06-27 17:35:52.920411200 -0500
@@ -196,6 +196,18 @@
     mask = window->mask;
        
     switch (message) {
+        case WM_SYSKEYDOWN:
+           // Don't go into the menu mode for alt keys.
+           return 0L;
+       case WM_CLOSE:
+           // Never close when people hit the x button.
+           return 0L;
+       case WM_SETCURSOR:
+           if (window->cursor != INVALID_HANDLE) {
+               SetCursor(window->cursor);
+               return TRUE;
+           }
+           return NT_default(hWnd, message, wParam, lParam);
        /* we'll handle these, later */
        case WM_KILLFOCUS:
            QEvent(wineventq,window,message,wParam,lParam);
@@ -203,7 +215,6 @@
            break;
        case WM_SETFOCUS:
        case WM_QUIT:
-       case WM_CLOSE:
        case WM_DESTROY:
        case WM_SYSCHAR: /* alt-keys go here */
        case WM_CHAR:
@@ -352,13 +363,9 @@
 {
        unsigned int state = 0;
        if (GetKeyState(VK_SHIFT)   & 0x8000) state |= ShiftMask;
-       if (GetKeyState(VK_CONTROL) & 0x8000)
-       {
-               if (!(GetKeyState(VK_MENU) & 0x8000)) 
-                       state |= ControlMask;
-       }
-       else if (GetKeyState(VK_MENU)    & 0x8000)
-               state |= Mod1Mask;
+       if (GetKeyState(VK_CONTROL) & 0x8000) state |= ControlMask;
+       if (GetKeyState(VK_MENU)    & 0x8000) state |= Mod1Mask;
+       if (GetKeyState(VK_LWIN)    & 0x8000) state |= Mod1Mask;
        if (GetKeyState(VK_CAPITAL) & 0x0001) state |= LockMask;
        if (GetKeyState(VK_NUMLOCK) & 0x0001) state |= Mod5Mask;
        if (GetKeyState(VK_SCROLL)  & 0x0001) state |= Mod3Mask;
diff -ruN rxvt-dist/W11/w32/ntdef.h rxvt/W11/w32/ntdef.h
--- rxvt-dist/W11/w32/ntdef.h   2002-12-03 23:21:30.000000000 -0600
+++ rxvt/W11/w32/ntdef.h        2005-06-27 17:15:22.154786200 -0500
@@ -35,6 +35,7 @@
        HWND w;
        HBRUSH bg;
        int parentRelative;
+       HCURSOR cursor;                /* cursor for this window */
        struct NT_window *parent;      /* parent of this window */
        struct NT_window *next;        /* next window in list */
        struct NT_child *child;        /* points to list of children */
diff -ruN rxvt-dist/W11/w32/ntutil.c rxvt/W11/w32/ntutil.c
--- rxvt-dist/W11/w32/ntutil.c  2002-12-03 23:21:30.000000000 -0600
+++ rxvt/W11/w32/ntutil.c       2005-06-27 17:17:07.826661200 -0500
@@ -38,6 +38,7 @@
        new->parent= NULL;
        new->hBitmap = INVALID_HANDLE;
        new->hDC = INVALID_HANDLE;
+       new->cursor = INVALID_HANDLE;
        window_list = new;
        cjh_printf("NEW window %x\n",window_list);
        return(window_list);
diff -ruN rxvt-dist/W11/w32/xlib.c rxvt/W11/w32/xlib.c
--- rxvt-dist/W11/w32/xlib.c    2004-01-05 23:51:12.000000000 -0600
+++ rxvt/W11/w32/xlib.c 2005-06-27 17:32:46.217286200 -0500
@@ -2914,7 +2914,11 @@
 unsigned int shape;
 {
        xtrace("XCreateFontCursor\n");
-       return 0;
+       if (shape == XC_xterm ||
+                       shape == XC_left_ptr ||
+                       shape == 0)
+               return shape;
+       return -1;
 }
 
 
@@ -4239,9 +4243,23 @@
        xtrace("XSetWMProperties\n");
        XSetNormalHints(display,w,normal_hints);
 }
+
+int
 XDefineCursor(Display* display,Window w,Cursor cursor)
 {
+       NT_window *ntw=(NT_window *)w;
+       LPCTSTR csr;
+
        xtrace("XDefineCursor\n");
+
+       switch (cursor) {
+       case XC_xterm:          csr = IDC_IBEAM;        break;
+       case XC_left_ptr:       csr = IDC_ARROW;        break;
+       default:
+               return 0;
+       }
+
+       ntw->cursor = LoadCursor(NULL, csr);
        return 0;
 }
diff -ruN rxvt-dist/src/command.c rxvt/src/command.c
--- rxvt-dist/src/command.c     2005-06-29 15:49:56.066384100 -0500
+++ rxvt/src/command.c  2005-06-29 16:51:00.003884100 -0500
@@ -1921,6 +1921,14 @@
        } else {
            /* wait (an arbitrary period) for the WM to do its thing
             * needed for fvwm2.2.2 (and before?) */
+#ifndef __CYGWIN__
+            /*
+             * JRD:  this waits a whole second any time you move a
+             * window on cygwin (because it sends *lots* of a
+             * configure notifies, unlike a reparenting x11 window
+             * manager).  Needless to say, this *sucks*, so turn it
+             * off.
+             */
 # ifdef HAVE_NANOSLEEP
            struct timespec rqt;
 
@@ -1930,6 +1938,7 @@
 # else
            sleep(1);   
 # endif
+#endif
            D_X((stderr, "InheritPixmap Turning on (%d parents)", i - 1));
            for (n = 0; n < (unsigned int)i; n++)
                XSetWindowBackgroundPixmap(r->Xdisplay, r->TermWin.parent[n],

Attachment: signature.asc
Description: Digital signature

Reply via email to