gdk_event_copy (GdkEvent *event)
{
GdkEvent *new_event;
+ gchar *s;
g_return_val_if_fail (event != NULL, NULL);
{
case GDK_KEY_PRESS:
case GDK_KEY_RELEASE:
- new_event->key.string = g_strdup (event->key.string);
+ if (event->key.length > 0)
+ {
+ s = event->key.string;
+ new_event->key.string = g_malloc (event->key.length + 1);
+ memcpy (new_event->key.string, s, event->key.length + 1);
+ }
break;
case GDK_ENTER_NOTIFY:
{
/* Keyboard is grabbed with owner_events FALSE */
GDK_NOTE (EVENTS,
- g_print ("grabbed, owner_events FALSE, "
+ g_print ("...grabbed, owner_events FALSE, "
"sending to %#x\n", k_grab_window->xwindow));
event->key.window = (GdkWindow *) k_grab_window;
}
{
/* Keyboard is grabbed with owner_events TRUE */
GDK_NOTE (EVENTS,
- g_print ("grabbed, owner_events TRUE, doesn't want it, "
+ g_print ("...grabbed, owner_events TRUE, doesn't want it, "
"sending to %#x\n", k_grab_window->xwindow));
event->key.window = (GdkWindow *) k_grab_window;
}
window = window_private->parent;
gdk_window_ref (window);
window_private = (GdkWindowPrivate *) window;
- GDK_NOTE (EVENTS,
- g_print ("not wanted, not grabbed, "
- "sending to %#x\n", window_private->xwindow));
+ GDK_NOTE (EVENTS, g_print ("...propagating to %#x\n",
+ window_private->xwindow));
goto keyup_or_down;
}
}
event->key.keyval = GDK_F15; break;
case VK_F16:
event->key.keyval = GDK_F16; break;
+ case '0':
+ case '1':
+ case '2':
+ case '3':
+ case '4':
+ case '5':
+ case '6':
+ case '7':
+ case '8':
+ case '9':
+ if (GetKeyState (VK_CONTROL) < 0)
+ /* Control-digits won't come in as a WM_CHAR */
+ event->key.keyval = GDK_0 + (xevent->wParam - '0');
+ else
+ {
+ ignore_WM_CHAR = FALSE;
+ event->key.keyval = GDK_VoidSymbol;
+ }
+ break;
default:
if (xevent->message == WM_SYSKEYDOWN || xevent->message == WM_SYSKEYUP)
{
event->key.state |= GDK_CONTROL_MASK;
if (xevent->wParam != VK_MENU && GetKeyState (VK_MENU) < 0)
event->key.state |= GDK_MOD1_MASK;
- event->key.length = 0;
return_val = window_private && !window_private->destroyed;
event->key.string = NULL;
+ event->key.length = 0;
break;
case WM_CHAR:
{
/* Keyboard is grabbed with owner_events FALSE */
GDK_NOTE (EVENTS,
- g_print ("grabbed, owner_events FALSE, "
+ g_print ("...grabbed, owner_events FALSE, "
"sending to %#x\n", k_grab_window->xwindow));
event->key.window = (GdkWindow *) k_grab_window;
}
{
/* Keyboard is grabbed with owner_events TRUE */
GDK_NOTE (EVENTS,
- g_print ("grabbed, owner_events TRUE, doesn't want it, "
+ g_print ("...grabbed, owner_events TRUE, doesn't want it, "
"sending to %#x\n", k_grab_window->xwindow));
event->key.window = (GdkWindow *) k_grab_window;
}
window = window_private->parent;
gdk_window_ref (window);
window_private = (GdkWindowPrivate *) window;
- GDK_NOTE (EVENTS,
- g_print ("not wanted, not grabbed, sending to %#x\n",
- window_private->xwindow));
+ GDK_NOTE (EVENTS, g_print ("...propagating to %#x\n",
+ window_private->xwindow));
goto wm_char;
}
}
}
if (!is_AltGr_key && GetKeyState (VK_MENU) < 0)
event->key.state |= GDK_MOD1_MASK;
- event->key.string = g_strdup (" ");
+ event->key.string = g_malloc (2);
event->key.length = 1;
event->key.string[0] = xevent->wParam; /* ??? */
+ event->key.string[1] = 0;
if (window_private->event_mask & GDK_KEY_PRESS_MASK)
{
if (charcount > sizeof (buf)- 1)
charcount = sizeof (buf) - 1;
g_free (event2->key.string);
- event2->key.string = g_malloc (charcount);
+ event2->key.string = g_malloc (charcount + 1);
for (i = 0; i < charcount; i++)
event2->key.string[i] = event->key.keyval;
+ event2->key.string[charcount] = 0;
event2->key.length = charcount;
gdk_event_queue_append (event2);
}
if (!is_AltGr_key && GetKeyState (VK_MENU) < 0)
event->key.state |= GDK_MOD1_MASK;
- event->key.string = g_malloc (charcount);
+ event->key.string = g_malloc (charcount + 1);
for (i = 0; i < charcount; i++)
event->key.string[i] = event->key.keyval;
+ event->key.string[charcount] = 0;
event->key.length = charcount;
}
else
case WM_RBUTTONDOWN:
button = 3;
- /* Print debugging info.
- */
buttondown0:
GDK_NOTE (EVENTS,
g_print ("WM_%cBUTTONDOWN: %#x x,y: %d %d button: %d\n",
&& (window_private->extension_events != 0)
&& gdk_input_ignore_core)
{
- GDK_NOTE (EVENTS, g_print ("... ignored\n"));
+ GDK_NOTE (EVENTS, g_print ("...ignored\n"));
break;
}
- buttondown:
+ if (window != curWnd)
+ synthesize_crossing_events (window, xevent);
+
event->button.type = GDK_BUTTON_PRESS;
+ buttondown:
event->button.window = window;
if (window_private)
mask = window_private->event_mask;
&& !p_grab_owner_events)
{
/* Pointer is grabbed with owner_events FALSE */
- GDK_NOTE (EVENTS, g_print ("grabbed, owner_events FALSE\n"));
+ GDK_NOTE (EVENTS, g_print ("...grabbed, owner_events FALSE\n"));
mask = p_grab_event_mask;
if (!(mask & GDK_BUTTON_PRESS_MASK))
/* Grabber doesn't want it */
break;
else
event->button.window = (GdkWindow *) p_grab_window;
- GDK_NOTE (EVENTS, g_print ("sending to %#x\n",
+ GDK_NOTE (EVENTS, g_print ("...sending to %#x\n",
p_grab_window->xwindow));
}
else if (window_private
&& p_grab_owner_events)
{
/* Pointer is grabbed wíth owner_events TRUE */
- GDK_NOTE (EVENTS, g_print ("grabbed, owner_events TRUE, doesn't want it\n"));
+ GDK_NOTE (EVENTS, g_print ("...grabbed, owner_events TRUE, doesn't want it\n"));
mask = p_grab_event_mask;
if (!(mask & GDK_BUTTON_PRESS_MASK))
/* Grabber doesn't want it either */
break;
else
event->button.window = (GdkWindow *) p_grab_window;
- GDK_NOTE (EVENTS, g_print ("sending to %#x\n",
+ GDK_NOTE (EVENTS, g_print ("...sending to %#x\n",
p_grab_window->xwindow));
}
else
window_private = (GdkWindowPrivate *) window;
ScreenToClient (window_private->xwindow, &pt);
xevent->lParam = MAKELPARAM (pt.x, pt.y);
+ GDK_NOTE (EVENTS, g_print ("...propagating to %#x\n",
+ window_private->xwindow));
goto buttondown; /* What did Dijkstra say? */
}
}
if (!p_grab_window)
{
/* No explicit active grab, let's start one automatically */
- GDK_NOTE (EVENTS, g_print ("automatic grab started\n"));
+ GDK_NOTE (EVENTS, g_print ("...automatic grab started\n"));
gdk_pointer_grab (window, TRUE, window_private->event_mask,
NULL, NULL, 0);
p_grab_automatic = TRUE;
}
- if (window != curWnd)
- synthesize_crossing_events (window, xevent);
-
event->button.time = xevent->time;
event->button.x = LOWORD (xevent->lParam);
event->button.y = HIWORD (xevent->lParam);
ScreenToClient (p_grab_window->xwindow, &pt);
event->button.x = pt.x;
event->button.y = pt.y;
- GDK_NOTE (EVENTS, g_print ("New coords are +%d+%d\n", pt.x, pt.y));
+ GDK_NOTE (EVENTS, g_print ("...new coords are +%d+%d\n", pt.x, pt.y));
}
break;
case WM_RBUTTONUP:
button = 3;
- /* Print debugging info.
- */
buttonup0:
GDK_NOTE (EVENTS,
g_print ("WM_%cBUTTONUP: %#x x,y: %d %d button: %d\n",
&& (window_private->extension_events != 0)
&& gdk_input_ignore_core)
{
- GDK_NOTE (EVENTS, g_print ("... ignored\n"));
+ GDK_NOTE (EVENTS, g_print ("...ignored\n"));
break;
}
- buttonup:
+ if (window != curWnd)
+ synthesize_crossing_events (window, xevent);
+
event->button.type = GDK_BUTTON_RELEASE;
+ buttonup:
event->button.window = window;
if (window_private)
mask = window_private->event_mask;
&& !p_grab_owner_events)
{
/* Pointer is grabbed with owner_events FALSE */
- GDK_NOTE (EVENTS, g_print ("grabbed, owner_events FALSE\n"));
+ GDK_NOTE (EVENTS, g_print ("...grabbed, owner_events FALSE\n"));
mask = p_grab_event_mask;
if (!(mask & GDK_BUTTON_RELEASE_MASK))
/* Grabber doesn't want it */
break;
else
event->button.window = (GdkWindow *) p_grab_window;
- GDK_NOTE (EVENTS, g_print ("sending to %#x\n",
+ GDK_NOTE (EVENTS, g_print ("...sending to %#x\n",
p_grab_window->xwindow));
}
else if (window_private
&& p_grab_owner_events)
{
/* Pointer is grabbed wíth owner_events TRUE */
- GDK_NOTE (EVENTS, g_print ("grabbed, owner_events TRUE, doesn't want it\n"));
+ GDK_NOTE (EVENTS, g_print ("...grabbed, owner_events TRUE, doesn't want it\n"));
mask = p_grab_event_mask;
if (!(mask & GDK_BUTTON_RELEASE_MASK))
/* Grabber doesn't want it */
break;
else
event->button.window = (GdkWindow *) p_grab_window;
- GDK_NOTE (EVENTS, g_print ("sending to %#x\n",
+ GDK_NOTE (EVENTS, g_print ("...sending to %#x\n",
p_grab_window->xwindow));
}
else
window_private = (GdkWindowPrivate *) window;
ScreenToClient (window_private->xwindow, &pt);
xevent->lParam = MAKELPARAM (pt.x, pt.y);
+ GDK_NOTE (EVENTS, g_print ("...propagating to %#x\n",
+ window_private->xwindow));
goto buttonup;
}
}
- if (window != curWnd)
- synthesize_crossing_events (window, xevent);
-
event->button.time = xevent->time;
event->button.x = LOWORD (xevent->lParam);
event->button.y = HIWORD (xevent->lParam);
ScreenToClient (p_grab_window->xwindow, &pt);
event->button.x = pt.x;
event->button.y = pt.y;
- GDK_NOTE (EVENTS, g_print ("New coords are +%d+%d\n", pt.x, pt.y));
+ GDK_NOTE (EVENTS, g_print ("...new coords are +%d+%d\n", pt.x, pt.y));
}
if (p_grab_window != NULL
&& p_grab_automatic
break;
case WM_MOUSEMOVE:
- /* Print debugging info.
- */
GDK_NOTE (EVENTS,
g_print ("WM_MOUSEMOVE: %#x %#x +%d+%d\n",
xevent->hwnd, xevent->wParam,
&& (window_private->extension_events != 0)
&& gdk_input_ignore_core)
{
- GDK_NOTE (EVENTS, g_print ("... ignored\n"));
+ GDK_NOTE (EVENTS, g_print ("...ignored\n"));
break;
}
{
/* Pointer is grabbed with owner_events FALSE */
GDK_NOTE (EVENTS,
- g_print ("grabbed, owner_events FALSE\n"));
+ g_print ("...grabbed, owner_events FALSE\n"));
mask = p_grab_event_mask;
if (!((mask & GDK_POINTER_MOTION_MASK)
|| ((xevent->wParam & (MK_LBUTTON|MK_MBUTTON|MK_RBUTTON))
break;
else
event->motion.window = (GdkWindow *) p_grab_window;
- GDK_NOTE (EVENTS, g_print ("sending to %#x\n",
+ GDK_NOTE (EVENTS, g_print ("...sending to %#x\n",
p_grab_window->xwindow));
}
else if (window_private
&& p_grab_owner_events)
{
/* Pointer is grabbed wíth owner_events TRUE */
- GDK_NOTE (EVENTS, g_print ("grabbed, owner_events TRUE, doesn't want it\n"));
+ GDK_NOTE (EVENTS, g_print ("...grabbed, owner_events TRUE, doesn't want it\n"));
mask = p_grab_event_mask;
if (!((p_grab_event_mask & GDK_POINTER_MOTION_MASK)
|| ((xevent->wParam & (MK_LBUTTON|MK_MBUTTON|MK_RBUTTON))
break;
else
event->motion.window = (GdkWindow *) p_grab_window;
- GDK_NOTE (EVENTS, g_print ("sending to %#x\n",
+ GDK_NOTE (EVENTS, g_print ("...sending to %#x\n",
p_grab_window->xwindow));
}
else
window_private = (GdkWindowPrivate *) window;
ScreenToClient (window_private->xwindow, &pt);
xevent->lParam = MAKELPARAM (pt.x, pt.y);
- GDK_NOTE (EVENTS, g_print ("propagating to %#x\n",
+ GDK_NOTE (EVENTS, g_print ("...propagating to %#x\n",
window_private->xwindow));
goto mousemotion;
}
ScreenToClient (p_grab_window->xwindow, &pt);
event->motion.x = pt.x;
event->motion.y = pt.y;
- GDK_NOTE (EVENTS, g_print ("New coords are +%d+%d\n", pt.x, pt.y));
+ GDK_NOTE (EVENTS, g_print ("...new coords are +%d+%d\n", pt.x, pt.y));
}
break;
case WM_NCMOUSEMOVE:
- /* Print debugging info. */
GDK_NOTE (EVENTS,
g_print ("WM_NCMOUSEMOVE: %#x x,y: %d %d\n",
xevent->hwnd,
if (curWnd != NULL
&& (curWnd_private->event_mask & GDK_LEAVE_NOTIFY_MASK))
{
- GDK_NOTE (EVENTS, g_print ("synthesizing LEAVE_NOTIFY event\n"));
+ GDK_NOTE (EVENTS, g_print ("...synthesizing LEAVE_NOTIFY event\n"));
event->crossing.type = GDK_LEAVE_NOTIFY;
event->crossing.window = curWnd;
if (window_private->bg_type == GDK_WIN32_BG_PIXEL)
{
COLORREF bg;
- GDK_NOTE (EVENTS, g_print ("... BG_PIXEL %s\n",
- gdk_color_to_string (&window_private->bg_pixel)));
GetClipBox (hdc, &rect);
+ GDK_NOTE (EVENTS, g_print ("...%dx%d@+%d+%d BG_PIXEL %s\n",
+ rect.right - rect.left,
+ rect.bottom - rect.top,
+ rect.left, rect.top,
+ gdk_color_to_string (&window_private->bg_pixel)));
#ifdef MULTIPLE_WINDOW_CLASSES
bg = PALETTEINDEX (window_private->bg_pixel.pixel);
#else
#endif
hbr = CreateSolidBrush (bg);
#if 0
- g_print ("... CreateSolidBrush (%.08x) = %.08x\n", bg, hbr);
+ g_print ("...CreateSolidBrush (%.08x) = %.08x\n", bg, hbr);
#endif
if (!FillRect (hdc, &rect, hbr))
g_warning ("WM_ERASEBKGND: FillRect failed");
}
else
{
- GDK_NOTE (EVENTS, g_print ("... BLACK_BRUSH (?)\n"));
+ GDK_NOTE (EVENTS, g_print ("...BLACK_BRUSH (?)\n"));
#ifdef MULTIPLE_WINDOW_CLASSES
hbr = (HBRUSH) GetClassLong (window_private->xwindow,
GCL_HBRBACKGROUND);
break;
case WM_PAINT:
- GDK_NOTE (EVENTS, g_print ("WM_PAINT: %#x\n", xevent->hwnd));
hdc = BeginPaint (xevent->hwnd, &paintstruct);
- /* Print debugging info.
- */
GDK_NOTE (EVENTS,
- g_print ("...WM_PAINT: %#x %dx%d@+%d+%d %s dc %#x\n",
+ g_print ("WM_PAINT: %#x %dx%d@+%d+%d %s dc %#x\n",
xevent->hwnd,
paintstruct.rcPaint.right - paintstruct.rcPaint.left,
paintstruct.rcPaint.bottom - paintstruct.rcPaint.top,
if (LOWORD (xevent->lParam) != HTCLIENT)
break;
if (p_grab_window != NULL && p_grab_cursor != NULL)
- SetCursor (p_grab_cursor);
+ {
+ GDK_NOTE (EVENTS, g_print ("...SetCursor(%#x)\n", p_grab_cursor));
+ SetCursor (p_grab_cursor);
+ }
else if (window_private
&& !window_private->destroyed
&& window_private->xcursor)
- SetCursor (window_private->xcursor);
+ {
+ GDK_NOTE (EVENTS, g_print ("...SetCursor(%#x)\n",
+ window_private->xcursor));
+ SetCursor (window_private->xcursor);
+ }
*ret_val_flagp = TRUE;
*ret_valp = FALSE;
break;
#if 1
case WM_SHOWWINDOW:
- /* Print debugging info.
- */
GDK_NOTE (EVENTS, g_print ("WM_SHOWWINDOW: %#x %d\n",
xevent->hwnd,
xevent->wParam));
break;
#endif
case WM_SIZE:
- /* Print debugging info.
- */
GDK_NOTE (EVENTS,
g_print ("WM_SIZE: %#x %s %dx%d\n",
xevent->hwnd,