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:
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:
}
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
break;
}
+ if (window != curWnd)
+ synthesize_crossing_events (window, xevent);
+
event->button.type = GDK_BUTTON_PRESS;
buttondown:
event->button.window = window;
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);
break;
}
+ if (window != curWnd)
+ synthesize_crossing_events (window, xevent);
+
event->button.type = GDK_BUTTON_RELEASE;
buttonup:
event->button.window = window;
}
}
- 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);
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
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;