+/* GDK - The GIMP Drawing Kit
+ * Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+/*
+ * Modified by the GTK+ Team and others 1997-2000. See the AUTHORS
+ * file for a list of people on the GTK+ Team. See the ChangeLog
+ * files for a list of changes. These files are distributed with
+ * GTK+ at ftp://ftp.gtk.org/pub/gtk/.
+ */
+
+#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GDK_H_INSIDE__) && !defined (GDK_COMPILATION)
+#error "Only <gdk/gdk.h> can be included directly."
+#endif
+
#ifndef __GDK_EVENTS_H__
#define __GDK_EVENTS_H__
+#include <gdk/gdkcolor.h>
#include <gdk/gdktypes.h>
#include <gdk/gdkdnd.h>
#include <gdk/gdkinput.h>
-#ifdef __cplusplus
-extern "C" {
-#endif /* __cplusplus */
+G_BEGIN_DECLS
+
+#define GDK_TYPE_EVENT (gdk_event_get_type ())
#define GDK_PRIORITY_EVENTS (G_PRIORITY_DEFAULT)
#define GDK_PRIORITY_REDRAW (G_PRIORITY_HIGH_IDLE + 20)
typedef struct _GdkEventConfigure GdkEventConfigure;
typedef struct _GdkEventProperty GdkEventProperty;
typedef struct _GdkEventSelection GdkEventSelection;
+typedef struct _GdkEventOwnerChange GdkEventOwnerChange;
typedef struct _GdkEventProximity GdkEventProximity;
typedef struct _GdkEventClient GdkEventClient;
-
typedef struct _GdkEventDND GdkEventDND;
+typedef struct _GdkEventWindowState GdkEventWindowState;
+typedef struct _GdkEventSetting GdkEventSetting;
+typedef struct _GdkEventGrabBroken GdkEventGrabBroken;
typedef union _GdkEvent GdkEvent;
typedef enum {
GDK_FILTER_CONTINUE, /* Event not handled, continue processesing */
- GDK_FILTER_TRANSLATE, /* Translated event stored */
+ GDK_FILTER_TRANSLATE, /* Native event translated into a GDK event and
+ stored in the "event" structure that was
+ passed in */
GDK_FILTER_REMOVE /* Terminate processing, removing event */
} GdkFilterReturn;
GDK_CLIENT_EVENT = 28,
GDK_VISIBILITY_NOTIFY = 29,
GDK_NO_EXPOSE = 30,
- GDK_SCROLL = 31
+ GDK_SCROLL = 31,
+ GDK_WINDOW_STATE = 32,
+ GDK_SETTING = 33,
+ GDK_OWNER_CHANGE = 34,
+ GDK_GRAB_BROKEN = 35,
+ GDK_DAMAGE = 36,
+ GDK_EVENT_LAST /* helper variable for decls */
} GdkEventType;
/* Event masks. (Used to select what types of events a window
{
GDK_CROSSING_NORMAL,
GDK_CROSSING_GRAB,
- GDK_CROSSING_UNGRAB
+ GDK_CROSSING_UNGRAB,
+ GDK_CROSSING_GTK_GRAB,
+ GDK_CROSSING_GTK_UNGRAB,
+ GDK_CROSSING_STATE_CHANGED
} GdkCrossingMode;
typedef enum
GDK_PROPERTY_DELETE
} GdkPropertyState;
+typedef enum
+{
+ GDK_WINDOW_STATE_WITHDRAWN = 1 << 0,
+ GDK_WINDOW_STATE_ICONIFIED = 1 << 1,
+ GDK_WINDOW_STATE_MAXIMIZED = 1 << 2,
+ GDK_WINDOW_STATE_STICKY = 1 << 3,
+ GDK_WINDOW_STATE_FULLSCREEN = 1 << 4,
+ GDK_WINDOW_STATE_ABOVE = 1 << 5,
+ GDK_WINDOW_STATE_BELOW = 1 << 6
+} GdkWindowState;
+
+typedef enum
+{
+ GDK_SETTING_ACTION_NEW,
+ GDK_SETTING_ACTION_CHANGED,
+ GDK_SETTING_ACTION_DELETED
+} GdkSettingAction;
+
+typedef enum
+{
+ GDK_OWNER_CHANGE_NEW_OWNER,
+ GDK_OWNER_CHANGE_DESTROY,
+ GDK_OWNER_CHANGE_CLOSE
+} GdkOwnerChange;
+
struct _GdkEventAny
{
GdkEventType type;
GdkWindow *window;
gint8 send_event;
GdkRectangle area;
+ GdkRegion *region;
gint count; /* If non-zero, how many more events follow. */
};
GdkEventType type;
GdkWindow *window;
gint8 send_event;
- /* XXX: does anyone need the X major_code or minor_code fields? */
};
struct _GdkEventVisibility
guint keyval;
gint length;
gchar *string;
+ guint16 hardware_keycode;
+ guint8 group;
+ guint is_modifier : 1;
};
struct _GdkEventCrossing
GdkNativeWindow requestor;
};
+struct _GdkEventOwnerChange
+{
+ GdkEventType type;
+ GdkWindow *window;
+ gint8 send_event;
+ GdkNativeWindow owner;
+ GdkOwnerChange reason;
+ GdkAtom selection;
+ guint32 time;
+ guint32 selection_time;
+};
+
/* This event type will be used pretty rarely. It only is important
for XInput aware programs that are drawing their own cursor */
} data;
};
+struct _GdkEventSetting
+{
+ GdkEventType type;
+ GdkWindow *window;
+ gint8 send_event;
+ GdkSettingAction action;
+ char *name;
+};
+
+struct _GdkEventWindowState
+{
+ GdkEventType type;
+ GdkWindow *window;
+ gint8 send_event;
+ GdkWindowState changed_mask;
+ GdkWindowState new_window_state;
+};
+
+struct _GdkEventGrabBroken {
+ GdkEventType type;
+ GdkWindow *window;
+ gint8 send_event;
+ gboolean keyboard;
+ gboolean implicit;
+ GdkWindow *grab_window;
+};
+
/* Event types for DND */
struct _GdkEventDND {
GdkEventConfigure configure;
GdkEventProperty property;
GdkEventSelection selection;
+ GdkEventOwnerChange owner_change;
GdkEventProximity proximity;
GdkEventClient client;
GdkEventDND dnd;
+ GdkEventWindowState window_state;
+ GdkEventSetting setting;
+ GdkEventGrabBroken grab_broken;
};
+GType gdk_event_get_type (void) G_GNUC_CONST;
+
gboolean gdk_events_pending (void);
GdkEvent* gdk_event_get (void);
GdkEvent* gdk_event_peek (void);
GdkEvent* gdk_event_get_graphics_expose (GdkWindow *window);
-void gdk_event_put (GdkEvent *event);
+void gdk_event_put (const GdkEvent *event);
-GdkEvent* gdk_event_copy (GdkEvent *event);
+GdkEvent* gdk_event_new (GdkEventType type);
+GdkEvent* gdk_event_copy (const GdkEvent *event);
void gdk_event_free (GdkEvent *event);
-guint32 gdk_event_get_time (GdkEvent *event);
-gboolean gdk_event_get_axis (GdkEvent *event,
- GdkAxisUse axis_use,
- gdouble *value);
+guint32 gdk_event_get_time (const GdkEvent *event);
+gboolean gdk_event_get_state (const GdkEvent *event,
+ GdkModifierType *state);
+gboolean gdk_event_get_coords (const GdkEvent *event,
+ gdouble *x_win,
+ gdouble *y_win);
+gboolean gdk_event_get_root_coords (const GdkEvent *event,
+ gdouble *x_root,
+ gdouble *y_root);
+gboolean gdk_event_get_axis (const GdkEvent *event,
+ GdkAxisUse axis_use,
+ gdouble *value);
+void gdk_event_request_motions (const GdkEventMotion *event);
void gdk_event_handler_set (GdkEventFunc func,
gpointer data,
GDestroyNotify notify);
+void gdk_event_set_screen (GdkEvent *event,
+ GdkScreen *screen);
+GdkScreen *gdk_event_get_screen (const GdkEvent *event);
+
void gdk_set_show_events (gboolean show_events);
gboolean gdk_get_show_events (void);
-/*
- * The following function adds a global filter for all client
- * messages of type message_type
- */
+#ifndef GDK_MULTIHEAD_SAFE
void gdk_add_client_message_filter (GdkAtom message_type,
GdkFilterFunc func,
gpointer data);
+gboolean gdk_setting_get (const gchar *name,
+ GValue *value);
+#endif /* GDK_MULTIHEAD_SAFE */
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
+G_END_DECLS
#endif /* __GDK_EVENTS_H__ */