Blame gdk/gdkdisplay.h

Packit Service fb6fa5
/*
Packit Service fb6fa5
 * gdkdisplay.h
Packit Service fb6fa5
 * 
Packit Service fb6fa5
 * Copyright 2001 Sun Microsystems Inc. 
Packit Service fb6fa5
 *
Packit Service fb6fa5
 * Erwann Chenede <erwann.chenede@sun.com>
Packit Service fb6fa5
 *
Packit Service fb6fa5
 * This library is free software; you can redistribute it and/or
Packit Service fb6fa5
 * modify it under the terms of the GNU Library General Public
Packit Service fb6fa5
 * License as published by the Free Software Foundation; either
Packit Service fb6fa5
 * version 2 of the License, or (at your option) any later version.
Packit Service fb6fa5
 *
Packit Service fb6fa5
 * This library is distributed in the hope that it will be useful,
Packit Service fb6fa5
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
Packit Service fb6fa5
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
Packit Service fb6fa5
 * Library General Public License for more details.
Packit Service fb6fa5
 *
Packit Service fb6fa5
 * You should have received a copy of the GNU Library General Public
Packit Service fb6fa5
 * License along with this library; if not, write to the
Packit Service fb6fa5
 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Packit Service fb6fa5
 * Boston, MA 02111-1307, USA.
Packit Service fb6fa5
 */
Packit Service fb6fa5
Packit Service fb6fa5
#ifndef __GDK_DISPLAY_H__
Packit Service fb6fa5
#define __GDK_DISPLAY_H__
Packit Service fb6fa5
Packit Service fb6fa5
#if defined(GTK_DISABLE_SINGLE_INCLUDES) && !defined (__GDK_H_INSIDE__) && !defined (GDK_COMPILATION)
Packit Service fb6fa5
#error "Only <gdk/gdk.h> can be included directly."
Packit Service fb6fa5
#endif
Packit Service fb6fa5
Packit Service fb6fa5
#include <gdk/gdktypes.h>
Packit Service fb6fa5
#include <gdk/gdkevents.h>
Packit Service fb6fa5
Packit Service fb6fa5
G_BEGIN_DECLS
Packit Service fb6fa5
Packit Service fb6fa5
typedef struct _GdkDisplayClass GdkDisplayClass;
Packit Service fb6fa5
typedef struct _GdkDisplayPointerHooks GdkDisplayPointerHooks;
Packit Service fb6fa5
Packit Service fb6fa5
#define GDK_TYPE_DISPLAY              (gdk_display_get_type ())
Packit Service fb6fa5
#define GDK_DISPLAY_OBJECT(object)    (G_TYPE_CHECK_INSTANCE_CAST ((object), GDK_TYPE_DISPLAY, GdkDisplay))
Packit Service fb6fa5
#define GDK_DISPLAY_CLASS(klass)      (G_TYPE_CHECK_CLASS_CAST ((klass), GDK_TYPE_DISPLAY, GdkDisplayClass))
Packit Service fb6fa5
#define GDK_IS_DISPLAY(object)        (G_TYPE_CHECK_INSTANCE_TYPE ((object), GDK_TYPE_DISPLAY))
Packit Service fb6fa5
#define GDK_IS_DISPLAY_CLASS(klass)   (G_TYPE_CHECK_CLASS_TYPE ((klass), GDK_TYPE_DISPLAY))
Packit Service fb6fa5
#define GDK_DISPLAY_GET_CLASS(obj)    (G_TYPE_INSTANCE_GET_CLASS ((obj), GDK_TYPE_DISPLAY, GdkDisplayClass))
Packit Service fb6fa5
Packit Service fb6fa5
/* Tracks information about the keyboard grab on this display */
Packit Service fb6fa5
typedef struct
Packit Service fb6fa5
{
Packit Service fb6fa5
  GdkWindow *window;
Packit Service fb6fa5
  GdkWindow *native_window;
Packit Service fb6fa5
  gulong serial;
Packit Service fb6fa5
  gboolean owner_events;
Packit Service fb6fa5
  guint32 time;
Packit Service fb6fa5
} GdkKeyboardGrabInfo;
Packit Service fb6fa5
Packit Service fb6fa5
/* Tracks information about which window and position the pointer last was in.
Packit Service fb6fa5
 * This is useful when we need to synthesize events later.
Packit Service fb6fa5
 * Note that we track toplevel_under_pointer using enter/leave events,
Packit Service fb6fa5
 * so in the case of a grab, either with owner_events==FALSE or with the
Packit Service fb6fa5
 * pointer in no clients window the x/y coordinates may actually be outside
Packit Service fb6fa5
 * the window.
Packit Service fb6fa5
 */
Packit Service fb6fa5
typedef struct
Packit Service fb6fa5
{
Packit Service fb6fa5
  GdkWindow *toplevel_under_pointer; /* The toplevel window with mouse inside, tracked via native events */
Packit Service fb6fa5
  GdkWindow *window_under_pointer; /* The window that last got sent a normal enter event */
Packit Service fb6fa5
  gdouble toplevel_x, toplevel_y; 
Packit Service fb6fa5
  guint32 state;
Packit Service fb6fa5
  guint32 button;
Packit Service fb6fa5
  gulong motion_hint_serial; /* 0 == didn't deliver hinted motion event */
Packit Service fb6fa5
} GdkPointerWindowInfo;
Packit Service fb6fa5
Packit Service fb6fa5
struct _GdkDisplay
Packit Service fb6fa5
{
Packit Service fb6fa5
  GObject parent_instance;
Packit Service fb6fa5
Packit Service fb6fa5
  /*< private >*/
Packit Service fb6fa5
  GList *GSEAL (queued_events);
Packit Service fb6fa5
  GList *GSEAL (queued_tail);
Packit Service fb6fa5
Packit Service fb6fa5
  /* Information for determining if the latest button click
Packit Service fb6fa5
   * is part of a double-click or triple-click
Packit Service fb6fa5
   */
Packit Service fb6fa5
  guint32 GSEAL (button_click_time[2]);	/* The last 2 button click times. */
Packit Service fb6fa5
  GdkWindow *GSEAL (button_window[2]);  /* The last 2 windows to receive button presses. */
Packit Service fb6fa5
  gint GSEAL (button_number[2]);        /* The last 2 buttons to be pressed. */
Packit Service fb6fa5
Packit Service fb6fa5
  guint GSEAL (double_click_time);	/* Maximum time between clicks in msecs */
Packit Service fb6fa5
  GdkDevice *GSEAL (core_pointer);	/* Core pointer device */
Packit Service fb6fa5
Packit Service fb6fa5
  const GdkDisplayPointerHooks *GSEAL (pointer_hooks); /* Current hooks for querying pointer */
Packit Service fb6fa5
  
Packit Service fb6fa5
  guint GSEAL (closed) : 1;		/* Whether this display has been closed */
Packit Service fb6fa5
  guint GSEAL (ignore_core_events) : 1; /* Don't send core motion and button event */
Packit Service fb6fa5
Packit Service fb6fa5
  guint GSEAL (double_click_distance);	/* Maximum distance between clicks in pixels */
Packit Service fb6fa5
  gint GSEAL (button_x[2]);             /* The last 2 button click positions. */
Packit Service fb6fa5
  gint GSEAL (button_y[2]);
Packit Service fb6fa5
Packit Service fb6fa5
  GList *GSEAL (pointer_grabs);
Packit Service fb6fa5
  GdkKeyboardGrabInfo GSEAL (keyboard_grab);
Packit Service fb6fa5
  GdkPointerWindowInfo GSEAL (pointer_info);
Packit Service fb6fa5
Packit Service fb6fa5
  /* Last reported event time from server */
Packit Service fb6fa5
  guint32 GSEAL (last_event_time);
Packit Service fb6fa5
};
Packit Service fb6fa5
Packit Service fb6fa5
struct _GdkDisplayClass
Packit Service fb6fa5
{
Packit Service fb6fa5
  GObjectClass parent_class;
Packit Service fb6fa5
  
Packit Service fb6fa5
  const gchar *              (*get_display_name)   (GdkDisplay *display);
Packit Service fb6fa5
  gint			     (*get_n_screens)      (GdkDisplay *display);
Packit Service fb6fa5
  GdkScreen *		     (*get_screen)         (GdkDisplay *display,
Packit Service fb6fa5
						    gint        screen_num);
Packit Service fb6fa5
  GdkScreen *		     (*get_default_screen) (GdkDisplay *display);
Packit Service fb6fa5
Packit Service fb6fa5
  
Packit Service fb6fa5
  /* Signals */
Packit Service fb6fa5
  void (*closed) (GdkDisplay *display,
Packit Service fb6fa5
		  gboolean    is_error);
Packit Service fb6fa5
};
Packit Service fb6fa5
Packit Service fb6fa5
struct _GdkDisplayPointerHooks
Packit Service fb6fa5
{
Packit Service fb6fa5
  void (*get_pointer)              (GdkDisplay      *display,
Packit Service fb6fa5
				    GdkScreen      **screen,
Packit Service fb6fa5
				    gint            *x,
Packit Service fb6fa5
				    gint            *y,
Packit Service fb6fa5
				    GdkModifierType *mask);
Packit Service fb6fa5
  GdkWindow* (*window_get_pointer) (GdkDisplay      *display,
Packit Service fb6fa5
				    GdkWindow       *window,
Packit Service fb6fa5
				    gint            *x,
Packit Service fb6fa5
				    gint            *y,
Packit Service fb6fa5
				    GdkModifierType *mask);
Packit Service fb6fa5
  GdkWindow* (*window_at_pointer)  (GdkDisplay      *display,
Packit Service fb6fa5
				    gint            *win_x,
Packit Service fb6fa5
				    gint            *win_y);
Packit Service fb6fa5
};
Packit Service fb6fa5
Packit Service fb6fa5
GType       gdk_display_get_type (void) G_GNUC_CONST;
Packit Service fb6fa5
GdkDisplay *gdk_display_open                (const gchar *display_name);
Packit Service fb6fa5
Packit Service fb6fa5
const gchar * gdk_display_get_name         (GdkDisplay *display);
Packit Service fb6fa5
Packit Service fb6fa5
gint        gdk_display_get_n_screens      (GdkDisplay  *display);
Packit Service fb6fa5
GdkScreen * gdk_display_get_screen         (GdkDisplay  *display,
Packit Service fb6fa5
					    gint         screen_num);
Packit Service fb6fa5
GdkScreen * gdk_display_get_default_screen (GdkDisplay  *display);
Packit Service fb6fa5
void        gdk_display_pointer_ungrab     (GdkDisplay  *display,
Packit Service fb6fa5
					    guint32      time_);
Packit Service fb6fa5
void        gdk_display_keyboard_ungrab    (GdkDisplay  *display,
Packit Service fb6fa5
					    guint32      time_);
Packit Service fb6fa5
gboolean    gdk_display_pointer_is_grabbed (GdkDisplay  *display);
Packit Service fb6fa5
void        gdk_display_beep               (GdkDisplay  *display);
Packit Service fb6fa5
void        gdk_display_sync               (GdkDisplay  *display);
Packit Service fb6fa5
void        gdk_display_flush              (GdkDisplay  *display);
Packit Service fb6fa5
Packit Service fb6fa5
void	    gdk_display_close		       (GdkDisplay  *display);
Packit Service fb6fa5
gboolean    gdk_display_is_closed          (GdkDisplay  *display);
Packit Service fb6fa5
Packit Service fb6fa5
GList *     gdk_display_list_devices       (GdkDisplay  *display);
Packit Service fb6fa5
Packit Service fb6fa5
GdkEvent* gdk_display_get_event  (GdkDisplay     *display);
Packit Service fb6fa5
GdkEvent* gdk_display_peek_event (GdkDisplay     *display);
Packit Service fb6fa5
void      gdk_display_put_event  (GdkDisplay     *display,
Packit Service fb6fa5
				  const GdkEvent *event);
Packit Service fb6fa5
Packit Service fb6fa5
void gdk_display_add_client_message_filter (GdkDisplay   *display,
Packit Service fb6fa5
					    GdkAtom       message_type,
Packit Service fb6fa5
					    GdkFilterFunc func,
Packit Service fb6fa5
					    gpointer      data);
Packit Service fb6fa5
Packit Service fb6fa5
void gdk_display_set_double_click_time     (GdkDisplay   *display,
Packit Service fb6fa5
					    guint         msec);
Packit Service fb6fa5
void gdk_display_set_double_click_distance (GdkDisplay   *display,
Packit Service fb6fa5
					    guint         distance);
Packit Service fb6fa5
Packit Service fb6fa5
GdkDisplay *gdk_display_get_default (void);
Packit Service fb6fa5
Packit Service fb6fa5
GdkDevice  *gdk_display_get_core_pointer (GdkDisplay *display);
Packit Service fb6fa5
Packit Service fb6fa5
void             gdk_display_get_pointer           (GdkDisplay             *display,
Packit Service fb6fa5
						    GdkScreen             **screen,
Packit Service fb6fa5
						    gint                   *x,
Packit Service fb6fa5
						    gint                   *y,
Packit Service fb6fa5
						    GdkModifierType        *mask);
Packit Service fb6fa5
GdkWindow *      gdk_display_get_window_at_pointer (GdkDisplay             *display,
Packit Service fb6fa5
						    gint                   *win_x,
Packit Service fb6fa5
						    gint                   *win_y);
Packit Service fb6fa5
void             gdk_display_warp_pointer          (GdkDisplay             *display,
Packit Service fb6fa5
						    GdkScreen              *screen,
Packit Service fb6fa5
						    gint                   x,
Packit Service fb6fa5
						    gint                   y);
Packit Service fb6fa5
Packit Service fb6fa5
#ifndef GDK_DISABLE_DEPRECATED
Packit Service fb6fa5
GdkDisplayPointerHooks *gdk_display_set_pointer_hooks (GdkDisplay                   *display,
Packit Service fb6fa5
						       const GdkDisplayPointerHooks *new_hooks);
Packit Service fb6fa5
#endif
Packit Service fb6fa5
Packit Service fb6fa5
GdkDisplay *gdk_display_open_default_libgtk_only (void);
Packit Service fb6fa5
Packit Service fb6fa5
gboolean gdk_display_supports_cursor_alpha     (GdkDisplay    *display);
Packit Service fb6fa5
gboolean gdk_display_supports_cursor_color     (GdkDisplay    *display);
Packit Service fb6fa5
guint    gdk_display_get_default_cursor_size   (GdkDisplay    *display);
Packit Service fb6fa5
void     gdk_display_get_maximal_cursor_size   (GdkDisplay    *display,
Packit Service fb6fa5
						guint         *width,
Packit Service fb6fa5
						guint         *height);
Packit Service fb6fa5
Packit Service fb6fa5
GdkWindow *gdk_display_get_default_group       (GdkDisplay *display); 
Packit Service fb6fa5
Packit Service fb6fa5
gboolean gdk_display_supports_selection_notification (GdkDisplay *display);
Packit Service fb6fa5
gboolean gdk_display_request_selection_notification  (GdkDisplay *display,
Packit Service fb6fa5
						      GdkAtom     selection);
Packit Service fb6fa5
Packit Service fb6fa5
gboolean gdk_display_supports_clipboard_persistence (GdkDisplay    *display);
Packit Service fb6fa5
void     gdk_display_store_clipboard                (GdkDisplay    *display,
Packit Service fb6fa5
						     GdkWindow     *clipboard_window,
Packit Service fb6fa5
						     guint32        time_,
Packit Service fb6fa5
						     const GdkAtom *targets,
Packit Service fb6fa5
						     gint           n_targets);
Packit Service fb6fa5
Packit Service fb6fa5
gboolean gdk_display_supports_shapes           (GdkDisplay    *display);
Packit Service fb6fa5
gboolean gdk_display_supports_input_shapes     (GdkDisplay    *display);
Packit Service fb6fa5
gboolean gdk_display_supports_composite        (GdkDisplay    *display);
Packit Service fb6fa5
Packit Service fb6fa5
G_END_DECLS
Packit Service fb6fa5
Packit Service fb6fa5
#endif	/* __GDK_DISPLAY_H__ */