📄 gdkmain-xynth.c
字号:
#include <config.h>#include "gdk.h"#include "gdkdisplay.h"#include "gdkinternals.h"#include "gdkintl.h"#include "gdkalias.h"#include "gdkxynth.h"#include "gdkprivate-xynth.h"static const guint type_masks[] = { GDK_STRUCTURE_MASK, /* GDK_DELETE = 0, */ GDK_STRUCTURE_MASK, /* GDK_DESTROY = 1, */ GDK_EXPOSURE_MASK, /* GDK_EXPOSE = 2, */ GDK_POINTER_MOTION_MASK, /* GDK_MOTION_NOTIFY = 3, */ GDK_BUTTON_PRESS_MASK, /* GDK_BUTTON_PRESS = 4, */ GDK_BUTTON_PRESS_MASK, /* GDK_2BUTTON_PRESS = 5, */ GDK_BUTTON_PRESS_MASK, /* GDK_3BUTTON_PRESS = 6, */ GDK_BUTTON_RELEASE_MASK, /* GDK_BUTTON_RELEASE = 7, */ GDK_KEY_PRESS_MASK, /* GDK_KEY_PRESS = 8, */ GDK_KEY_RELEASE_MASK, /* GDK_KEY_RELEASE = 9, */ GDK_ENTER_NOTIFY_MASK, /* GDK_ENTER_NOTIFY = 10, */ GDK_LEAVE_NOTIFY_MASK, /* GDK_LEAVE_NOTIFY = 11, */ GDK_FOCUS_CHANGE_MASK, /* GDK_FOCUS_CHANGE = 12, */ GDK_STRUCTURE_MASK, /* GDK_CONFIGURE = 13, */ GDK_VISIBILITY_NOTIFY_MASK,/* GDK_MAP = 14, */ GDK_VISIBILITY_NOTIFY_MASK,/* GDK_UNMAP = 15, */ GDK_PROPERTY_CHANGE_MASK, /* GDK_PROPERTY_NOTIFY = 16, */ GDK_PROPERTY_CHANGE_MASK, /* GDK_SELECTION_CLEAR = 17, */ GDK_PROPERTY_CHANGE_MASK, /* GDK_SELECTION_REQUEST = 18, */ GDK_PROPERTY_CHANGE_MASK, /* GDK_SELECTION_NOTIFY = 19, */ GDK_PROXIMITY_IN_MASK, /* GDK_PROXIMITY_IN = 20, */ GDK_PROXIMITY_OUT_MASK, /* GDK_PROXIMITY_OUT = 21, */ GDK_ALL_EVENTS_MASK, /* GDK_DRAG_ENTER = 22, */ GDK_ALL_EVENTS_MASK, /* GDK_DRAG_LEAVE = 23, */ GDK_ALL_EVENTS_MASK, /* GDK_DRAG_MOTION = 24, */ GDK_ALL_EVENTS_MASK, /* GDK_DRAG_STATUS = 25, */ GDK_ALL_EVENTS_MASK, /* GDK_DROP_START = 26, */ GDK_ALL_EVENTS_MASK, /* GDK_DROP_FINISHED = 27, */ GDK_ALL_EVENTS_MASK, /* GDK_CLIENT_EVENT = 28, */ GDK_VISIBILITY_NOTIFY_MASK,/* GDK_VISIBILITY_NOTIFY = 29, */ GDK_EXPOSURE_MASK, /* GDK_NO_EXPOSE = 30, */ GDK_SCROLL_MASK /* GDK_SCROLL = 31 */};GdkWindow * gdk_xynth_pointer_event_window (GdkWindow *window, GdkEventType type){ guint evmask; GdkModifierType mask; GdkWindow *w; ENTER(); gdk_xynth_mouse_get_info(NULL, NULL, &mask); if (_gdk_xynth_pointer_grab_window && !_gdk_xynth_pointer_grab_owner_events) { evmask = _gdk_xynth_pointer_grab_events; if (evmask & (GDK_BUTTON1_MOTION_MASK | GDK_BUTTON2_MOTION_MASK | GDK_BUTTON3_MOTION_MASK)) { if (((mask & GDK_BUTTON1_MASK) && (evmask & GDK_BUTTON1_MOTION_MASK)) || ((mask & GDK_BUTTON2_MASK) && (evmask & GDK_BUTTON2_MOTION_MASK)) || ((mask & GDK_BUTTON3_MASK) && (evmask & GDK_BUTTON3_MOTION_MASK))) { evmask |= GDK_POINTER_MOTION_MASK; } } if (evmask & type_masks[type]) { if (_gdk_xynth_pointer_grab_owner_events) { return _gdk_xynth_pointer_grab_window; } else { GdkWindowObject *obj= GDK_WINDOW_OBJECT(window); while (obj != NULL && obj != GDK_WINDOW_OBJECT(_gdk_xynth_pointer_grab_window)) { obj = (GdkWindowObject *) obj->parent; } if (obj == GDK_WINDOW_OBJECT(_gdk_xynth_pointer_grab_window)) { return window; } else { // was not child of the grab window so return the grab window return _gdk_xynth_pointer_grab_window; } } } } w = window; while (w != _gdk_parent_root) { /* Huge hack, so that we don't propagate events to GtkWindow->frame */ if ((w != window) && (GDK_WINDOW_OBJECT (w)->window_type != GDK_WINDOW_CHILD) && (g_object_get_data (G_OBJECT (w), "gdk-window-child-handler"))) { break; } evmask = GDK_WINDOW_OBJECT(w)->event_mask; if (evmask & (GDK_BUTTON1_MOTION_MASK | GDK_BUTTON2_MOTION_MASK | GDK_BUTTON3_MOTION_MASK)) { if (((mask & GDK_BUTTON1_MASK) && (evmask & GDK_BUTTON1_MOTION_MASK)) || ((mask & GDK_BUTTON2_MASK) && (evmask & GDK_BUTTON2_MOTION_MASK)) || ((mask & GDK_BUTTON3_MASK) && (evmask & GDK_BUTTON3_MOTION_MASK))) { evmask |= GDK_POINTER_MOTION_MASK; } } if (evmask & type_masks[type]) { return w; } w = gdk_window_get_parent(w); } return NULL;}GdkWindow * gdk_xynth_other_event_window (GdkWindow *window, GdkEventType type){ guint32 evmask; GdkWindow *w; ENTER(); w = window; while (w != _gdk_parent_root) { /* Huge hack, so that we don't propagate events to GtkWindow->frame */ if ((w != window) && (GDK_WINDOW_OBJECT(w)->window_type != GDK_WINDOW_CHILD) && (g_object_get_data(G_OBJECT(w), "gdk-window-child-handler"))) { break; } evmask = GDK_WINDOW_OBJECT(w)->event_mask; if (evmask & type_masks[type]) { LEAVE(); return w; } w = gdk_window_get_parent(w); } LEAVE(); return NULL;}GdkEvent * gdk_xynth_event_make (GdkWindow *window, GdkEventType type){ GdkEvent *event; guint32 the_time; ENTER(); the_time = gdk_xynth_get_time(); event = gdk_event_new(GDK_NOTHING); event->any.type = type; event->any.window = g_object_ref(window); event->any.send_event = FALSE; switch (type) { case GDK_MOTION_NOTIFY: event->motion.time = the_time; event->motion.axes = NULL; break; case GDK_BUTTON_PRESS: case GDK_2BUTTON_PRESS: case GDK_3BUTTON_PRESS: case GDK_BUTTON_RELEASE: event->button.time = the_time; event->button.axes = NULL; break; case GDK_KEY_PRESS: case GDK_KEY_RELEASE: event->key.time = the_time; break; case GDK_ENTER_NOTIFY: case GDK_LEAVE_NOTIFY: event->crossing.time = the_time; break; case GDK_PROPERTY_NOTIFY: event->property.time = the_time; break; case GDK_SELECTION_CLEAR: case GDK_SELECTION_REQUEST: case GDK_SELECTION_NOTIFY: event->selection.time = the_time; break; case GDK_PROXIMITY_IN: case GDK_PROXIMITY_OUT: event->proximity.time = the_time; break; case GDK_DRAG_ENTER: case GDK_DRAG_LEAVE: case GDK_DRAG_MOTION: case GDK_DRAG_STATUS: case GDK_DROP_START: case GDK_DROP_FINISHED: event->dnd.time = the_time; break; case GDK_SCROLL: event->scroll.time = the_time; break; case GDK_FOCUS_CHANGE: case GDK_CONFIGURE: case GDK_MAP: case GDK_UNMAP: case GDK_CLIENT_EVENT: case GDK_VISIBILITY_NOTIFY: case GDK_NO_EXPOSE: case GDK_DELETE: case GDK_DESTROY: case GDK_EXPOSE: default: break; } _gdk_event_queue_append(gdk_display_get_default(), event); LEAVE(); return event;}void _gdk_windowing_display_set_sm_client_id (GdkDisplay *display, const gchar *sm_client_id){ ENTER(); NIY(); ASSERT(); LEAVE();}void _gdk_windowing_init (void){ ENTER(); /* nothing to do */ LEAVE();}gint gdk_error_trap_pop (void){ ENTER(); NIY(); ASSERT(); LEAVE(); return 0;}void gdk_error_trap_push (void){ ENTER(); NIY(); ASSERT(); LEAVE();}GdkGrabStatus gdk_keyboard_grab (GdkWindow *window, gint owner_events, guint32 time) { ENTER(); NIY(); ASSERT(); LEAVE(); return 0;}gboolean gdk_keyboard_grab_info_libgtk_only (GdkDisplay *display, GdkWindow **grab_window, gboolean *owner_events){ ENTER(); NIY(); ASSERT(); LEAVE(); return 0;}GdkGrabStatus gdk_pointer_grab (GdkWindow *window, gint owner_events, GdkEventMask event_mask, GdkWindow *confine_to, GdkCursor *cursor, guint32 time){ ENTER(); NIY(); ASSERT(); LEAVE(); return 0;}gboolean gdk_pointer_grab_info_libgtk_only (GdkDisplay *display, GdkWindow **grab_window, gboolean *owner_events){ ENTER(); NIY(); ASSERT(); LEAVE(); return 0;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -