2008-07-01 22:57:50 +00:00
|
|
|
/* GDK - The GIMP Drawing Kit
|
1998-12-15 13:54:20 +00:00
|
|
|
* Copyright (C) 1995-1997 Peter Mattis, Spencer Kimball and Josh MacDonald
|
|
|
|
*
|
|
|
|
* This library is free software; you can redistribute it and/or
|
2000-07-26 11:33:08 +00:00
|
|
|
* modify it under the terms of the GNU Lesser General Public
|
1998-12-15 13:54:20 +00:00
|
|
|
* 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
|
2000-07-26 11:33:08 +00:00
|
|
|
* Lesser General Public License for more details.
|
1998-12-15 13:54:20 +00:00
|
|
|
*
|
2000-07-26 11:33:08 +00:00
|
|
|
* You should have received a copy of the GNU Lesser General Public
|
2012-02-27 13:01:10 +00:00
|
|
|
* License along with this library. If not, see <http://www.gnu.org/licenses/>.
|
1998-12-15 13:54:20 +00:00
|
|
|
*/
|
|
|
|
|
1999-02-24 07:37:18 +00:00
|
|
|
/*
|
2000-07-26 11:33:08 +00:00
|
|
|
* Modified by the GTK+ Team and others 1997-2000. See the AUTHORS
|
1999-02-24 07:37:18 +00:00
|
|
|
* 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/.
|
|
|
|
*/
|
|
|
|
|
2008-06-22 14:28:52 +00:00
|
|
|
#include "config.h"
|
2002-10-03 20:53:30 +00:00
|
|
|
|
2000-03-28 01:24:44 +00:00
|
|
|
#include "gdkinternals.h"
|
2010-12-11 05:14:53 +00:00
|
|
|
#include "gdkdisplayprivate.h"
|
2010-07-09 00:34:45 +00:00
|
|
|
|
2010-10-15 02:05:51 +00:00
|
|
|
#include <string.h>
|
|
|
|
#include <math.h>
|
1998-12-24 19:39:00 +00:00
|
|
|
|
2010-11-15 18:15:00 +00:00
|
|
|
|
|
|
|
/**
|
|
|
|
* SECTION:events
|
|
|
|
* @Short_description: Functions for handling events from the window system
|
|
|
|
* @Title: Events
|
|
|
|
* @See_also: <link linkend="gdk-Event-Structures">Event Structures</link>
|
|
|
|
*
|
|
|
|
* This section describes functions dealing with events from the window
|
|
|
|
* system.
|
|
|
|
*
|
|
|
|
* In GTK+ applications the events are handled automatically in
|
|
|
|
* gtk_main_do_event() and passed on to the appropriate widgets, so these
|
|
|
|
* functions are rarely needed. Though some of the fields in the
|
|
|
|
* <link linkend="gdk-Event-Structures">Event Structures</link> are useful.
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
1998-12-15 13:54:20 +00:00
|
|
|
typedef struct _GdkIOClosure GdkIOClosure;
|
1999-01-12 23:27:30 +00:00
|
|
|
|
1999-02-10 08:06:30 +00:00
|
|
|
struct _GdkIOClosure
|
|
|
|
{
|
2008-06-18 09:39:24 +00:00
|
|
|
GDestroyNotify notify;
|
1998-12-15 13:54:20 +00:00
|
|
|
gpointer data;
|
|
|
|
};
|
|
|
|
|
|
|
|
/* Private variable declarations
|
|
|
|
*/
|
|
|
|
|
2010-12-02 09:59:37 +00:00
|
|
|
static GdkEventFunc _gdk_event_func = NULL; /* Callback for events */
|
|
|
|
static gpointer _gdk_event_data = NULL;
|
|
|
|
static GDestroyNotify _gdk_event_notify = NULL;
|
|
|
|
|
|
|
|
void
|
|
|
|
_gdk_event_emit (GdkEvent *event)
|
|
|
|
{
|
|
|
|
if (_gdk_event_func)
|
|
|
|
(*_gdk_event_func) (event, _gdk_event_data);
|
|
|
|
}
|
1998-12-15 13:54:20 +00:00
|
|
|
|
1999-01-12 23:27:30 +00:00
|
|
|
/*********************************************
|
|
|
|
* Functions for maintaining the event queue *
|
|
|
|
*********************************************/
|
|
|
|
|
2002-04-25 22:29:14 +00:00
|
|
|
/**
|
Make gdkx.h the only installed header from gdk/x11. All structures in
Fri Sep 7 11:51:44 2001 Owen Taylor <otaylor@redhat.com>
Make gdkx.h the only installed header from gdk/x11.
All structures in gdk/x11 are opaque.
* gdk/x11/Makefile.am gdk/x11/gdkx.h gdk/x11/gdkprivate-x11.h:
Don't install gdk{drawable,pixmap,window}-x11.h.
* gdk/x11/{gdkcolormap-x11.c, gdkfont-x11.c, gdkx.h, gdkvisual-x11.c:
Move GdkColormapPrivateX11, GdkFontPrivateX GdkImagePrivateX11,
GdkVisualClass into C files.
* gdk/gdkpixmap-x11.[ch]: Make gdk_pixmap_impl_get_type() static.
* gdk/x11/{gdkcolor-x11.c, gdkcursor-x11.c, gdkdrawable-x11.c,
gdkfont-x11.c, gdkgc-x11.c, gdkx.h, gdkimage-x11,gdkvisual-x11.c}
Add public functions to replace previously exported direct
structure access.
gdk_x11_colormap_get_{xdisplay,xcolormap}
gdk_x11_cursor_get_{xdisplay,xcursor},
gdk_x11_drawable_get_{xdisplay,xcursor,gdk_x11_visual_get_xvisual,
gdk_x11_font_get_{xdisplay,xfont}, gdk_x11_image_get_{xdisplay,ximage},
gdk_x11_gc_get_{xdisplay,ximage}
* gdk/gdkprivate.h gdk/gdkinternals.h: Move GdkColorInfo,
GdkEventFilter, GdkClientFilter, GdkFontPrivate to gdkinternals.
Fix a number of variables and functions that were exported
"accidentally" from GDK.
* gdk/**.[ch]: gdk => _gdk for gdk_visual_init,
gdk_events_init, gdk_input_init, gdk_dnd_init, gdk_image_exit,
gdk_input_exit, gdk_windowing_exit, gdk_event_func, gdk_event_data,
gdk_event_notify, gdk_queued_events, gdk_queued_tail,
gdk_event_new, gdk_events_queue, gdk_events_unqueue,
gdk_event_queue_find_first, gdk_event_queue_remove_link,
gdk_event_queue_append, gdk_event_button_generate,
gdk_debug_flags, gdk_default_filters, gdk_parent_root.
* gdk/x11/{gdkevents-x11.c, gdkglobals-x11.c, gdkimage-x11.c,
gdkmain-x11.c, gdkprivate-x11.h, gdk/x11/gdkwindow-x11.c}:
gdk => _gdk for gdk_event_mask_table, gkd_nevent_masks,
gdk_wm_window_protocols, gdk_leader_window, gdk_xgrab_window,
gdk_use_xshm, gdk_input_ignore_core.
* gdk/x11/xsettings-common.h (xsettings_list_insert): Add
#defines to namespace functions into the private _gdk_
namespace.
* gdk/gdkwindow.[ch] gdk/x11/gdkx.h: Add gdk_get_default_root_window ()
to replace gdk_parent_root exported variable. Adjust and
deprecate GDK_ROOT_PARENT().
* demos/{testpixbuf-drawable.c,testpixbuf-save.c}: Fix
GDK_ROOT_PARENT usage, remove includes of port-specific
headers.
* gdk/{win32,x11,fb}/gdkinput*.[ch]: s/gdk/_gdk/ for
_gdk_input_gxid_host, _gdk_input_gxid_port, _gdk_input_ignore_core,
gdk_input_devices, _gdk_input_windows, gdk_init_input_core.
* gdk/x11/{gdkevents-x11.,c gdkglobals-x11.c, gdkmain-x11.c}
docs/Changes-2.0.txt: Remove gdk_wm_protocols,
gdk_wm_delete_window functions, gdk_wm_take_focus,
use gdk_atom_intern() instead.
* gdk/linux-fb/{gdkselection-fb.c, gdkmain-fb.c, gdkprivatefb.h}
gdk/win32/{gdkselection-win32.c, gdkmgdkwin32.h, gdkprivate-win32.h}
gdk/x11/{gdkselection-x11.c gdkx.h, gtkprivate-x11.h}
gtk/gtkselection.c
Unexport gdk_selection_property, just use
gdk_atom_intern ("GDK_SELECTION").
* gdk/x11/{gdkprivate-x11.h,gdkdrawable-x11h,gdkgc-x11.c,gdkx.h}:
Unexport gdk_drawable_impl_x11_get_type, gdk_gc_x11_get_type,
GDK_GC_X11 cast macros, GdkGCX11 structures, GdkCursorPrivate,
GdkVisualprivate, gdk_x11_gc_flush.
Make a number of public exports of variables into functions
to increase encapsulation.
* gdk/gdkinternals.h gdk/gdkinput.h gdk/gdkevents.h
gdk/linux-fb/gdkmouse-fb.c: gdk_core_pointer => _gdk_core_pointer,
move to gdkinternals.h. Add gdk_device_get_core_pointer ().
* gdk/gdkprivate.h gdk/gdkpango.c gdk/gdkinternals.h
docs/Changes-2.0.txt: Unexport gdk_parent_root, gdk_error_code,
gdk_error_warnings.
* gdk/x11/{gdkcolormap-x11.c, gdkmain-x11.c, gdkx.h}
docs/Changes-2.0.txt:
s/gdk_screen/_gdk_screen/, add gdk_x11_get_default_screen()
s/gdk_root_window/_gdk_root_window/, add gdk_x11_get_default_root_xwindow()
Add gdk_x11_get_default_xdisplay().
* gdk/gdk.h gdk/gdk.c linux-fb/gdkfb.h linux-fb/gdkglobals-fb.c
win32/gdkwin32.h x11/gdkglobals-x11.c gdk/x11/gdkmain-x11.c
gdk/x11/gdkx.h: gdk/gdk.def: Add gdk_get/set_program_class,
Don't export gdk_progclass, move --class command line
option and handling to common portion of GDK.
Miscellaneous fixes:
* gdk/x11/gdkwindow-x11.c (gdk_window_set_icon_list): Fix
g_return_val_if_fail that should have been g_return_if_fail.
* gdk/gdkinternals.h gdk/gdkprivate.h: Move
gdk_synthesize_window_state() to the semi-public gdkprivate.h.
* gtk/gtkdnd.c (_gtk_drag_source_handle_event): Remove uneeded
X11 dependency.
* gdk/linux-fb/gdkmain-fb.c gdk/win32/gdkmain-win32.c gdk/TODO:
Remove unused gdk_key_repeat_disable/restore.
* linux-fb/gdkglobals-fb.c win32/gdkglobals-win32.c
x11/gdkglobals-x11.c x11/gdkprivate-x11.h gdk/gdk.def:
Remove unused gdk_null_window_warnings variable.
* gdk/Makefile.am (DIST_SUBDIRS) nanox/*: cvs remove nanox;
it can be retrieved from the repository; it is too far
from functional to be worth having people check out;
it would be easier to start from scratch, I suspect.
* gdk/x11/gdkpixmap-x11.c: Fix lvalue usage of GDK_PIXMAP_XID().
* gdk/x11/gdkkeys-x11.c gdk/gdkrgb.c gdk/gdkwindow.c
gdk/x11/gdkpango-x11.c gdk/x11/gdkselection-x11.c:
Fix some accidentally global variables and unused global variables.
* gdk/x11/gdkkeys-x11.c gdk/gdkrgb.c gdk/gdkwindow.c
gdk/x11/gdkpango-x11.c gdk/x11/gdkselection-x11.c:
Fix some accidentally global variables and unused global variables.
Add some space for future expansion to multihead.
* gdk/gdkdrawable.h: Add four reserved function pointers
for future expansion of GdkDrawableClass.
* gtk/gtkwindow.h gtk/gtkinvisible.h: Add reserved pointer
where we can put a GdkScreen * later.
2001-09-07 21:50:20 +00:00
|
|
|
* _gdk_event_queue_find_first:
|
2002-04-25 22:29:14 +00:00
|
|
|
* @display: a #GdkDisplay
|
|
|
|
*
|
|
|
|
* Find the first event on the queue that is not still
|
|
|
|
* being filled in.
|
|
|
|
*
|
|
|
|
* Return value: Pointer to the list node for that event, or NULL.
|
|
|
|
**/
|
1999-11-08 20:14:59 +00:00
|
|
|
GList*
|
2002-04-25 22:29:14 +00:00
|
|
|
_gdk_event_queue_find_first (GdkDisplay *display)
|
1999-01-12 23:27:30 +00:00
|
|
|
{
|
2012-09-26 14:28:06 +00:00
|
|
|
GList *tmp_list;
|
|
|
|
GList *pending_motion = NULL;
|
|
|
|
|
2013-11-11 23:04:34 +00:00
|
|
|
gboolean paused = display->event_pause_count > 0;
|
1999-01-12 23:27:30 +00:00
|
|
|
|
2012-09-26 14:28:06 +00:00
|
|
|
tmp_list = display->queued_events;
|
1999-01-12 23:27:30 +00:00
|
|
|
while (tmp_list)
|
|
|
|
{
|
1999-01-21 06:24:09 +00:00
|
|
|
GdkEventPrivate *event = tmp_list->data;
|
2012-09-26 14:28:06 +00:00
|
|
|
|
2013-11-11 23:04:34 +00:00
|
|
|
if ((event->flags & GDK_EVENT_PENDING) == 0 &&
|
|
|
|
(!paused || (event->flags & GDK_EVENT_FLUSHED) != 0))
|
2013-09-28 16:06:53 +00:00
|
|
|
{
|
|
|
|
if (pending_motion)
|
|
|
|
return pending_motion;
|
|
|
|
|
2013-11-11 23:04:34 +00:00
|
|
|
if (event->event.type == GDK_MOTION_NOTIFY && (event->flags & GDK_EVENT_FLUSHED) == 0)
|
2013-09-28 16:06:53 +00:00
|
|
|
pending_motion = tmp_list;
|
|
|
|
else
|
|
|
|
return tmp_list;
|
|
|
|
}
|
1999-01-21 06:24:09 +00:00
|
|
|
|
|
|
|
tmp_list = g_list_next (tmp_list);
|
1999-01-12 23:27:30 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
return NULL;
|
|
|
|
}
|
|
|
|
|
Bug 318807 – Offscreen windows and window redirection.
2008-03-18 10:49:20 Tim Janik <timj@imendio.com>
* Applied pixmap redirection patch by Alexander Larsson with
various updates from:
Bug 318807 – Offscreen windows and window redirection.
Updates:
* updated docs to mention "Since 2.16".
* tests/testgtk.c: fixed snapshooting pixmap leak.
convert pixmap to pixbuf after snapshooting, to compensate for different
bit depths (occurs when snapshooting ARGB visuals and displaying the
pixmap in an RGB visual).
* gdk/gdkwindow.[hc]: made GdkWindowRedirect private.
* gdk/gdkwindow.c: removed damage idle handler, there's no aparent
need for it. enqueue damage notification as GDK_DAMAGE events
for each painting redirection at the start of the event queue.
consider windows with a redirection fully visible when invalidating,
and when updating from backing store. cleaned up stale variables.
* gdk/gdkevents.c: added _gdk_event_queue_prepend().
* gtk/gtkwidget.c: fixed coordinates for !NO_WINDOW widgets in
gtk_widget_get_snapshot; this fixes garbage snap offsets for gammacurve,
tree, drawingarea, text, handlebox, etc.
clip the redirected window hierarchy to window sizes, the visible
rectangles don't need to be taken into account here.
extended snapshooting docs to recommend gdk_pixbuf_get_from_drawable()
in case pixmap visuals could mismatch.
* gdk/x11/gdkwindow-x11.c: removed _gdk_windowing_window_get_visible_rect().
Base patch:
* tests/testgtk.c: add a "Snapshot" test to demonstrate snapshooting
of possibly obscured widgets into an offscreen pixmap.
* gtk/gtkwidget.[hc]: add GtkWidget::damage-event signal, add
gtk_widget_get_snapshot() to render a widget's contents to a GdkPixmap.
* gtk/gtkmain.c: dispatch GDK_DAMAGE events.
* gdk/gdkwindow.c: moved outer gdk_window_new() and gdk_window_reparent()
implementations here, adapted them to propagate redirects to child windows.
gdk_window_end_paint(): copy repainted window contents to redirection pixmap,
clipped to visible region. queue GDK_DAMAGE event delivery.
gdk_window_redirect_to_drawable(): install window painting redirection.
gdk_window_remove_redirection(): remove previously installed redirection.
* gdk/x11/gdkwindow-x11.c: added _gdk_windowing_window_get_visible_rect(),
renamed _gdk_window_new() and _gdk_window_reparent().
* gdk/gdkwindow.h: added GdkWindowRedirect* to GdkWindowObject, export
gdk_window_redirect_to_drawable() and gdk_window_remove_redirection().
* gdk/gdkevents.h: added GDK_DAMAGE event type.
* gdk/gdkevents.c: extract time and state from GDK_DAMAGE events.
* gdk/gdkinternals.h: added internal prototypes.
svn path=/trunk/; revision=20122
2008-05-21 19:04:24 +00:00
|
|
|
/**
|
|
|
|
* _gdk_event_queue_prepend:
|
|
|
|
* @display: a #GdkDisplay
|
|
|
|
* @event: Event to prepend.
|
|
|
|
*
|
|
|
|
* Prepends an event before the head of the event queue.
|
|
|
|
*
|
|
|
|
* Returns: the newly prepended list node.
|
|
|
|
**/
|
|
|
|
GList*
|
|
|
|
_gdk_event_queue_prepend (GdkDisplay *display,
|
|
|
|
GdkEvent *event)
|
|
|
|
{
|
|
|
|
display->queued_events = g_list_prepend (display->queued_events, event);
|
|
|
|
if (!display->queued_tail)
|
|
|
|
display->queued_tail = display->queued_events;
|
|
|
|
return display->queued_events;
|
|
|
|
}
|
|
|
|
|
2002-04-25 22:29:14 +00:00
|
|
|
/**
|
|
|
|
* _gdk_event_queue_append:
|
|
|
|
* @display: a #GdkDisplay
|
|
|
|
* @event: Event to append.
|
|
|
|
*
|
|
|
|
* Appends an event onto the tail of the event queue.
|
|
|
|
*
|
|
|
|
* Returns: the newly appended list node.
|
|
|
|
**/
|
|
|
|
GList *
|
|
|
|
_gdk_event_queue_append (GdkDisplay *display,
|
|
|
|
GdkEvent *event)
|
|
|
|
{
|
|
|
|
display->queued_tail = g_list_append (display->queued_tail, event);
|
|
|
|
|
|
|
|
if (!display->queued_events)
|
|
|
|
display->queued_events = display->queued_tail;
|
|
|
|
else
|
|
|
|
display->queued_tail = display->queued_tail->next;
|
|
|
|
|
|
|
|
return display->queued_tail;
|
|
|
|
}
|
1999-01-12 23:27:30 +00:00
|
|
|
|
2008-07-18 13:03:42 +00:00
|
|
|
/**
|
|
|
|
* _gdk_event_queue_insert_after:
|
|
|
|
* @display: a #GdkDisplay
|
|
|
|
* @sibling: Append after this event.
|
|
|
|
* @event: Event to append.
|
|
|
|
*
|
|
|
|
* Appends an event after the specified event, or if it isn't in
|
|
|
|
* the queue, onto the tail of the event queue.
|
|
|
|
*
|
|
|
|
* Returns: the newly appended list node.
|
|
|
|
*
|
|
|
|
* Since: 2.16
|
|
|
|
*/
|
|
|
|
GList*
|
|
|
|
_gdk_event_queue_insert_after (GdkDisplay *display,
|
|
|
|
GdkEvent *sibling,
|
|
|
|
GdkEvent *event)
|
|
|
|
{
|
|
|
|
GList *prev = g_list_find (display->queued_events, sibling);
|
|
|
|
if (prev && prev->next)
|
|
|
|
{
|
|
|
|
display->queued_events = g_list_insert_before (display->queued_events, prev->next, event);
|
|
|
|
return prev->next;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
return _gdk_event_queue_append (display, event);
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
2012-04-13 00:07:28 +00:00
|
|
|
* _gdk_event_queue_insert_before:
|
2008-07-18 13:03:42 +00:00
|
|
|
* @display: a #GdkDisplay
|
2012-04-13 00:07:28 +00:00
|
|
|
* @sibling: Append before this event
|
|
|
|
* @event: Event to prepend
|
2008-07-18 13:03:42 +00:00
|
|
|
*
|
2012-04-13 00:07:28 +00:00
|
|
|
* Prepends an event before the specified event, or if it isn't in
|
|
|
|
* the queue, onto the head of the event queue.
|
2008-07-18 13:03:42 +00:00
|
|
|
*
|
2012-04-13 00:07:28 +00:00
|
|
|
* Returns: the newly prepended list node.
|
2008-07-18 13:03:42 +00:00
|
|
|
*
|
|
|
|
* Since: 2.16
|
|
|
|
*/
|
|
|
|
GList*
|
|
|
|
_gdk_event_queue_insert_before (GdkDisplay *display,
|
|
|
|
GdkEvent *sibling,
|
|
|
|
GdkEvent *event)
|
|
|
|
{
|
|
|
|
GList *next = g_list_find (display->queued_events, sibling);
|
|
|
|
if (next)
|
|
|
|
{
|
|
|
|
display->queued_events = g_list_insert_before (display->queued_events, next, event);
|
|
|
|
return next->prev;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
return _gdk_event_queue_append (display, event);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2002-04-25 22:29:14 +00:00
|
|
|
/**
|
|
|
|
* _gdk_event_queue_remove_link:
|
|
|
|
* @display: a #GdkDisplay
|
|
|
|
* @node: node to remove
|
|
|
|
*
|
|
|
|
* Removes a specified list node from the event queue.
|
|
|
|
**/
|
1999-11-08 20:14:59 +00:00
|
|
|
void
|
2002-04-25 22:29:14 +00:00
|
|
|
_gdk_event_queue_remove_link (GdkDisplay *display,
|
|
|
|
GList *node)
|
1999-01-12 23:27:30 +00:00
|
|
|
{
|
|
|
|
if (node->prev)
|
|
|
|
node->prev->next = node->next;
|
|
|
|
else
|
2002-04-25 22:29:14 +00:00
|
|
|
display->queued_events = node->next;
|
1999-01-12 23:27:30 +00:00
|
|
|
|
|
|
|
if (node->next)
|
|
|
|
node->next->prev = node->prev;
|
|
|
|
else
|
2002-04-25 22:29:14 +00:00
|
|
|
display->queued_tail = node->prev;
|
1999-01-12 23:27:30 +00:00
|
|
|
}
|
|
|
|
|
2002-04-25 22:29:14 +00:00
|
|
|
/**
|
|
|
|
* _gdk_event_unqueue:
|
|
|
|
* @display: a #GdkDisplay
|
|
|
|
*
|
|
|
|
* Removes and returns the first event from the event
|
|
|
|
* queue that is not still being filled in.
|
|
|
|
*
|
|
|
|
* Return value: the event, or %NULL. Ownership is transferred
|
|
|
|
* to the caller.
|
|
|
|
**/
|
|
|
|
GdkEvent*
|
|
|
|
_gdk_event_unqueue (GdkDisplay *display)
|
1999-01-12 23:27:30 +00:00
|
|
|
{
|
2002-04-25 22:29:14 +00:00
|
|
|
GdkEvent *event = NULL;
|
|
|
|
GList *tmp_list;
|
|
|
|
|
|
|
|
tmp_list = _gdk_event_queue_find_first (display);
|
|
|
|
|
|
|
|
if (tmp_list)
|
|
|
|
{
|
|
|
|
event = tmp_list->data;
|
|
|
|
_gdk_event_queue_remove_link (display, tmp_list);
|
|
|
|
g_list_free_1 (tmp_list);
|
|
|
|
}
|
|
|
|
|
|
|
|
return event;
|
1998-12-15 13:54:20 +00:00
|
|
|
}
|
|
|
|
|
2012-09-26 14:28:06 +00:00
|
|
|
void
|
|
|
|
_gdk_event_queue_handle_motion_compression (GdkDisplay *display)
|
|
|
|
{
|
|
|
|
GList *tmp_list;
|
|
|
|
GList *pending_motions = NULL;
|
|
|
|
GdkWindow *pending_motion_window = NULL;
|
2013-02-14 19:51:33 +00:00
|
|
|
GdkDevice *pending_motion_device = NULL;
|
2012-09-26 14:28:06 +00:00
|
|
|
|
|
|
|
/* If the last N events in the event queue are motion notify
|
|
|
|
* events for the same window, drop all but the last */
|
|
|
|
|
|
|
|
tmp_list = display->queued_tail;
|
|
|
|
|
|
|
|
while (tmp_list)
|
|
|
|
{
|
|
|
|
GdkEventPrivate *event = tmp_list->data;
|
|
|
|
|
|
|
|
if (event->flags & GDK_EVENT_PENDING)
|
|
|
|
break;
|
|
|
|
|
|
|
|
if (event->event.type != GDK_MOTION_NOTIFY)
|
|
|
|
break;
|
|
|
|
|
|
|
|
if (pending_motion_window != NULL &&
|
|
|
|
pending_motion_window != event->event.motion.window)
|
|
|
|
break;
|
|
|
|
|
2013-02-14 19:51:33 +00:00
|
|
|
if (pending_motion_device != NULL &&
|
|
|
|
pending_motion_device != event->event.motion.device)
|
|
|
|
break;
|
|
|
|
|
2013-10-29 21:43:05 +00:00
|
|
|
if (!event->event.motion.window->event_compression)
|
|
|
|
break;
|
|
|
|
|
2012-09-26 14:28:06 +00:00
|
|
|
pending_motion_window = event->event.motion.window;
|
2013-02-14 19:51:33 +00:00
|
|
|
pending_motion_device = event->event.motion.device;
|
2012-09-26 14:28:06 +00:00
|
|
|
pending_motions = tmp_list;
|
|
|
|
|
|
|
|
tmp_list = tmp_list->prev;
|
|
|
|
}
|
|
|
|
|
|
|
|
while (pending_motions && pending_motions->next != NULL)
|
|
|
|
{
|
|
|
|
GList *next = pending_motions->next;
|
|
|
|
display->queued_events = g_list_delete_link (display->queued_events,
|
|
|
|
pending_motions);
|
|
|
|
pending_motions = next;
|
|
|
|
}
|
|
|
|
|
|
|
|
if (pending_motions &&
|
|
|
|
pending_motions == display->queued_events &&
|
|
|
|
pending_motions == display->queued_tail)
|
|
|
|
{
|
|
|
|
GdkFrameClock *clock = gdk_window_get_frame_clock (pending_motion_window);
|
2013-11-11 23:17:38 +00:00
|
|
|
if (clock) /* might be NULL if window was destroyed */
|
|
|
|
gdk_frame_clock_request_phase (clock, GDK_FRAME_CLOCK_PHASE_FLUSH_EVENTS);
|
2012-09-26 14:28:06 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2013-11-11 23:04:34 +00:00
|
|
|
void
|
|
|
|
_gdk_event_queue_flush (GdkDisplay *display)
|
|
|
|
{
|
|
|
|
GList *tmp_list;
|
|
|
|
|
|
|
|
for (tmp_list = display->queued_events; tmp_list; tmp_list = tmp_list->next)
|
|
|
|
{
|
|
|
|
GdkEventPrivate *event = tmp_list->data;
|
|
|
|
event->flags |= GDK_EVENT_FLUSHED;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2002-04-25 22:29:14 +00:00
|
|
|
/**
|
1998-12-15 13:54:20 +00:00
|
|
|
* gdk_event_handler_set:
|
2002-04-25 22:29:14 +00:00
|
|
|
* @func: the function to call to handle events from GDK.
|
|
|
|
* @data: user data to pass to the function.
|
|
|
|
* @notify: the function to call when the handler function is removed, i.e. when
|
|
|
|
* gdk_event_handler_set() is called with another event handler.
|
1998-12-15 13:54:20 +00:00
|
|
|
*
|
2002-04-25 22:29:14 +00:00
|
|
|
* Sets the function to call to handle all events from GDK.
|
|
|
|
*
|
|
|
|
* Note that GTK+ uses this to install its own event handler, so it is
|
|
|
|
* usually not useful for GTK+ applications. (Although an application
|
|
|
|
* can call this function then call gtk_main_do_event() to pass
|
|
|
|
* events to GTK+.)
|
|
|
|
**/
|
1998-12-15 13:54:20 +00:00
|
|
|
void
|
|
|
|
gdk_event_handler_set (GdkEventFunc func,
|
|
|
|
gpointer data,
|
|
|
|
GDestroyNotify notify)
|
|
|
|
{
|
Make gdkx.h the only installed header from gdk/x11. All structures in
Fri Sep 7 11:51:44 2001 Owen Taylor <otaylor@redhat.com>
Make gdkx.h the only installed header from gdk/x11.
All structures in gdk/x11 are opaque.
* gdk/x11/Makefile.am gdk/x11/gdkx.h gdk/x11/gdkprivate-x11.h:
Don't install gdk{drawable,pixmap,window}-x11.h.
* gdk/x11/{gdkcolormap-x11.c, gdkfont-x11.c, gdkx.h, gdkvisual-x11.c:
Move GdkColormapPrivateX11, GdkFontPrivateX GdkImagePrivateX11,
GdkVisualClass into C files.
* gdk/gdkpixmap-x11.[ch]: Make gdk_pixmap_impl_get_type() static.
* gdk/x11/{gdkcolor-x11.c, gdkcursor-x11.c, gdkdrawable-x11.c,
gdkfont-x11.c, gdkgc-x11.c, gdkx.h, gdkimage-x11,gdkvisual-x11.c}
Add public functions to replace previously exported direct
structure access.
gdk_x11_colormap_get_{xdisplay,xcolormap}
gdk_x11_cursor_get_{xdisplay,xcursor},
gdk_x11_drawable_get_{xdisplay,xcursor,gdk_x11_visual_get_xvisual,
gdk_x11_font_get_{xdisplay,xfont}, gdk_x11_image_get_{xdisplay,ximage},
gdk_x11_gc_get_{xdisplay,ximage}
* gdk/gdkprivate.h gdk/gdkinternals.h: Move GdkColorInfo,
GdkEventFilter, GdkClientFilter, GdkFontPrivate to gdkinternals.
Fix a number of variables and functions that were exported
"accidentally" from GDK.
* gdk/**.[ch]: gdk => _gdk for gdk_visual_init,
gdk_events_init, gdk_input_init, gdk_dnd_init, gdk_image_exit,
gdk_input_exit, gdk_windowing_exit, gdk_event_func, gdk_event_data,
gdk_event_notify, gdk_queued_events, gdk_queued_tail,
gdk_event_new, gdk_events_queue, gdk_events_unqueue,
gdk_event_queue_find_first, gdk_event_queue_remove_link,
gdk_event_queue_append, gdk_event_button_generate,
gdk_debug_flags, gdk_default_filters, gdk_parent_root.
* gdk/x11/{gdkevents-x11.c, gdkglobals-x11.c, gdkimage-x11.c,
gdkmain-x11.c, gdkprivate-x11.h, gdk/x11/gdkwindow-x11.c}:
gdk => _gdk for gdk_event_mask_table, gkd_nevent_masks,
gdk_wm_window_protocols, gdk_leader_window, gdk_xgrab_window,
gdk_use_xshm, gdk_input_ignore_core.
* gdk/x11/xsettings-common.h (xsettings_list_insert): Add
#defines to namespace functions into the private _gdk_
namespace.
* gdk/gdkwindow.[ch] gdk/x11/gdkx.h: Add gdk_get_default_root_window ()
to replace gdk_parent_root exported variable. Adjust and
deprecate GDK_ROOT_PARENT().
* demos/{testpixbuf-drawable.c,testpixbuf-save.c}: Fix
GDK_ROOT_PARENT usage, remove includes of port-specific
headers.
* gdk/{win32,x11,fb}/gdkinput*.[ch]: s/gdk/_gdk/ for
_gdk_input_gxid_host, _gdk_input_gxid_port, _gdk_input_ignore_core,
gdk_input_devices, _gdk_input_windows, gdk_init_input_core.
* gdk/x11/{gdkevents-x11.,c gdkglobals-x11.c, gdkmain-x11.c}
docs/Changes-2.0.txt: Remove gdk_wm_protocols,
gdk_wm_delete_window functions, gdk_wm_take_focus,
use gdk_atom_intern() instead.
* gdk/linux-fb/{gdkselection-fb.c, gdkmain-fb.c, gdkprivatefb.h}
gdk/win32/{gdkselection-win32.c, gdkmgdkwin32.h, gdkprivate-win32.h}
gdk/x11/{gdkselection-x11.c gdkx.h, gtkprivate-x11.h}
gtk/gtkselection.c
Unexport gdk_selection_property, just use
gdk_atom_intern ("GDK_SELECTION").
* gdk/x11/{gdkprivate-x11.h,gdkdrawable-x11h,gdkgc-x11.c,gdkx.h}:
Unexport gdk_drawable_impl_x11_get_type, gdk_gc_x11_get_type,
GDK_GC_X11 cast macros, GdkGCX11 structures, GdkCursorPrivate,
GdkVisualprivate, gdk_x11_gc_flush.
Make a number of public exports of variables into functions
to increase encapsulation.
* gdk/gdkinternals.h gdk/gdkinput.h gdk/gdkevents.h
gdk/linux-fb/gdkmouse-fb.c: gdk_core_pointer => _gdk_core_pointer,
move to gdkinternals.h. Add gdk_device_get_core_pointer ().
* gdk/gdkprivate.h gdk/gdkpango.c gdk/gdkinternals.h
docs/Changes-2.0.txt: Unexport gdk_parent_root, gdk_error_code,
gdk_error_warnings.
* gdk/x11/{gdkcolormap-x11.c, gdkmain-x11.c, gdkx.h}
docs/Changes-2.0.txt:
s/gdk_screen/_gdk_screen/, add gdk_x11_get_default_screen()
s/gdk_root_window/_gdk_root_window/, add gdk_x11_get_default_root_xwindow()
Add gdk_x11_get_default_xdisplay().
* gdk/gdk.h gdk/gdk.c linux-fb/gdkfb.h linux-fb/gdkglobals-fb.c
win32/gdkwin32.h x11/gdkglobals-x11.c gdk/x11/gdkmain-x11.c
gdk/x11/gdkx.h: gdk/gdk.def: Add gdk_get/set_program_class,
Don't export gdk_progclass, move --class command line
option and handling to common portion of GDK.
Miscellaneous fixes:
* gdk/x11/gdkwindow-x11.c (gdk_window_set_icon_list): Fix
g_return_val_if_fail that should have been g_return_if_fail.
* gdk/gdkinternals.h gdk/gdkprivate.h: Move
gdk_synthesize_window_state() to the semi-public gdkprivate.h.
* gtk/gtkdnd.c (_gtk_drag_source_handle_event): Remove uneeded
X11 dependency.
* gdk/linux-fb/gdkmain-fb.c gdk/win32/gdkmain-win32.c gdk/TODO:
Remove unused gdk_key_repeat_disable/restore.
* linux-fb/gdkglobals-fb.c win32/gdkglobals-win32.c
x11/gdkglobals-x11.c x11/gdkprivate-x11.h gdk/gdk.def:
Remove unused gdk_null_window_warnings variable.
* gdk/Makefile.am (DIST_SUBDIRS) nanox/*: cvs remove nanox;
it can be retrieved from the repository; it is too far
from functional to be worth having people check out;
it would be easier to start from scratch, I suspect.
* gdk/x11/gdkpixmap-x11.c: Fix lvalue usage of GDK_PIXMAP_XID().
* gdk/x11/gdkkeys-x11.c gdk/gdkrgb.c gdk/gdkwindow.c
gdk/x11/gdkpango-x11.c gdk/x11/gdkselection-x11.c:
Fix some accidentally global variables and unused global variables.
* gdk/x11/gdkkeys-x11.c gdk/gdkrgb.c gdk/gdkwindow.c
gdk/x11/gdkpango-x11.c gdk/x11/gdkselection-x11.c:
Fix some accidentally global variables and unused global variables.
Add some space for future expansion to multihead.
* gdk/gdkdrawable.h: Add four reserved function pointers
for future expansion of GdkDrawableClass.
* gtk/gtkwindow.h gtk/gtkinvisible.h: Add reserved pointer
where we can put a GdkScreen * later.
2001-09-07 21:50:20 +00:00
|
|
|
if (_gdk_event_notify)
|
|
|
|
(*_gdk_event_notify) (_gdk_event_data);
|
1998-12-15 13:54:20 +00:00
|
|
|
|
Make gdkx.h the only installed header from gdk/x11. All structures in
Fri Sep 7 11:51:44 2001 Owen Taylor <otaylor@redhat.com>
Make gdkx.h the only installed header from gdk/x11.
All structures in gdk/x11 are opaque.
* gdk/x11/Makefile.am gdk/x11/gdkx.h gdk/x11/gdkprivate-x11.h:
Don't install gdk{drawable,pixmap,window}-x11.h.
* gdk/x11/{gdkcolormap-x11.c, gdkfont-x11.c, gdkx.h, gdkvisual-x11.c:
Move GdkColormapPrivateX11, GdkFontPrivateX GdkImagePrivateX11,
GdkVisualClass into C files.
* gdk/gdkpixmap-x11.[ch]: Make gdk_pixmap_impl_get_type() static.
* gdk/x11/{gdkcolor-x11.c, gdkcursor-x11.c, gdkdrawable-x11.c,
gdkfont-x11.c, gdkgc-x11.c, gdkx.h, gdkimage-x11,gdkvisual-x11.c}
Add public functions to replace previously exported direct
structure access.
gdk_x11_colormap_get_{xdisplay,xcolormap}
gdk_x11_cursor_get_{xdisplay,xcursor},
gdk_x11_drawable_get_{xdisplay,xcursor,gdk_x11_visual_get_xvisual,
gdk_x11_font_get_{xdisplay,xfont}, gdk_x11_image_get_{xdisplay,ximage},
gdk_x11_gc_get_{xdisplay,ximage}
* gdk/gdkprivate.h gdk/gdkinternals.h: Move GdkColorInfo,
GdkEventFilter, GdkClientFilter, GdkFontPrivate to gdkinternals.
Fix a number of variables and functions that were exported
"accidentally" from GDK.
* gdk/**.[ch]: gdk => _gdk for gdk_visual_init,
gdk_events_init, gdk_input_init, gdk_dnd_init, gdk_image_exit,
gdk_input_exit, gdk_windowing_exit, gdk_event_func, gdk_event_data,
gdk_event_notify, gdk_queued_events, gdk_queued_tail,
gdk_event_new, gdk_events_queue, gdk_events_unqueue,
gdk_event_queue_find_first, gdk_event_queue_remove_link,
gdk_event_queue_append, gdk_event_button_generate,
gdk_debug_flags, gdk_default_filters, gdk_parent_root.
* gdk/x11/{gdkevents-x11.c, gdkglobals-x11.c, gdkimage-x11.c,
gdkmain-x11.c, gdkprivate-x11.h, gdk/x11/gdkwindow-x11.c}:
gdk => _gdk for gdk_event_mask_table, gkd_nevent_masks,
gdk_wm_window_protocols, gdk_leader_window, gdk_xgrab_window,
gdk_use_xshm, gdk_input_ignore_core.
* gdk/x11/xsettings-common.h (xsettings_list_insert): Add
#defines to namespace functions into the private _gdk_
namespace.
* gdk/gdkwindow.[ch] gdk/x11/gdkx.h: Add gdk_get_default_root_window ()
to replace gdk_parent_root exported variable. Adjust and
deprecate GDK_ROOT_PARENT().
* demos/{testpixbuf-drawable.c,testpixbuf-save.c}: Fix
GDK_ROOT_PARENT usage, remove includes of port-specific
headers.
* gdk/{win32,x11,fb}/gdkinput*.[ch]: s/gdk/_gdk/ for
_gdk_input_gxid_host, _gdk_input_gxid_port, _gdk_input_ignore_core,
gdk_input_devices, _gdk_input_windows, gdk_init_input_core.
* gdk/x11/{gdkevents-x11.,c gdkglobals-x11.c, gdkmain-x11.c}
docs/Changes-2.0.txt: Remove gdk_wm_protocols,
gdk_wm_delete_window functions, gdk_wm_take_focus,
use gdk_atom_intern() instead.
* gdk/linux-fb/{gdkselection-fb.c, gdkmain-fb.c, gdkprivatefb.h}
gdk/win32/{gdkselection-win32.c, gdkmgdkwin32.h, gdkprivate-win32.h}
gdk/x11/{gdkselection-x11.c gdkx.h, gtkprivate-x11.h}
gtk/gtkselection.c
Unexport gdk_selection_property, just use
gdk_atom_intern ("GDK_SELECTION").
* gdk/x11/{gdkprivate-x11.h,gdkdrawable-x11h,gdkgc-x11.c,gdkx.h}:
Unexport gdk_drawable_impl_x11_get_type, gdk_gc_x11_get_type,
GDK_GC_X11 cast macros, GdkGCX11 structures, GdkCursorPrivate,
GdkVisualprivate, gdk_x11_gc_flush.
Make a number of public exports of variables into functions
to increase encapsulation.
* gdk/gdkinternals.h gdk/gdkinput.h gdk/gdkevents.h
gdk/linux-fb/gdkmouse-fb.c: gdk_core_pointer => _gdk_core_pointer,
move to gdkinternals.h. Add gdk_device_get_core_pointer ().
* gdk/gdkprivate.h gdk/gdkpango.c gdk/gdkinternals.h
docs/Changes-2.0.txt: Unexport gdk_parent_root, gdk_error_code,
gdk_error_warnings.
* gdk/x11/{gdkcolormap-x11.c, gdkmain-x11.c, gdkx.h}
docs/Changes-2.0.txt:
s/gdk_screen/_gdk_screen/, add gdk_x11_get_default_screen()
s/gdk_root_window/_gdk_root_window/, add gdk_x11_get_default_root_xwindow()
Add gdk_x11_get_default_xdisplay().
* gdk/gdk.h gdk/gdk.c linux-fb/gdkfb.h linux-fb/gdkglobals-fb.c
win32/gdkwin32.h x11/gdkglobals-x11.c gdk/x11/gdkmain-x11.c
gdk/x11/gdkx.h: gdk/gdk.def: Add gdk_get/set_program_class,
Don't export gdk_progclass, move --class command line
option and handling to common portion of GDK.
Miscellaneous fixes:
* gdk/x11/gdkwindow-x11.c (gdk_window_set_icon_list): Fix
g_return_val_if_fail that should have been g_return_if_fail.
* gdk/gdkinternals.h gdk/gdkprivate.h: Move
gdk_synthesize_window_state() to the semi-public gdkprivate.h.
* gtk/gtkdnd.c (_gtk_drag_source_handle_event): Remove uneeded
X11 dependency.
* gdk/linux-fb/gdkmain-fb.c gdk/win32/gdkmain-win32.c gdk/TODO:
Remove unused gdk_key_repeat_disable/restore.
* linux-fb/gdkglobals-fb.c win32/gdkglobals-win32.c
x11/gdkglobals-x11.c x11/gdkprivate-x11.h gdk/gdk.def:
Remove unused gdk_null_window_warnings variable.
* gdk/Makefile.am (DIST_SUBDIRS) nanox/*: cvs remove nanox;
it can be retrieved from the repository; it is too far
from functional to be worth having people check out;
it would be easier to start from scratch, I suspect.
* gdk/x11/gdkpixmap-x11.c: Fix lvalue usage of GDK_PIXMAP_XID().
* gdk/x11/gdkkeys-x11.c gdk/gdkrgb.c gdk/gdkwindow.c
gdk/x11/gdkpango-x11.c gdk/x11/gdkselection-x11.c:
Fix some accidentally global variables and unused global variables.
* gdk/x11/gdkkeys-x11.c gdk/gdkrgb.c gdk/gdkwindow.c
gdk/x11/gdkpango-x11.c gdk/x11/gdkselection-x11.c:
Fix some accidentally global variables and unused global variables.
Add some space for future expansion to multihead.
* gdk/gdkdrawable.h: Add four reserved function pointers
for future expansion of GdkDrawableClass.
* gtk/gtkwindow.h gtk/gtkinvisible.h: Add reserved pointer
where we can put a GdkScreen * later.
2001-09-07 21:50:20 +00:00
|
|
|
_gdk_event_func = func;
|
|
|
|
_gdk_event_data = data;
|
|
|
|
_gdk_event_notify = notify;
|
1998-12-15 13:54:20 +00:00
|
|
|
}
|
|
|
|
|
2010-12-11 00:42:09 +00:00
|
|
|
/**
|
|
|
|
* gdk_events_pending:
|
|
|
|
*
|
|
|
|
* Checks if any events are ready to be processed for any display.
|
|
|
|
*
|
|
|
|
* Return value: %TRUE if any events are pending.
|
|
|
|
*/
|
|
|
|
gboolean
|
|
|
|
gdk_events_pending (void)
|
|
|
|
{
|
|
|
|
GSList *list, *l;
|
|
|
|
gboolean pending;
|
|
|
|
|
|
|
|
pending = FALSE;
|
|
|
|
list = gdk_display_manager_list_displays (gdk_display_manager_get ());
|
|
|
|
for (l = list; l; l = l->next)
|
|
|
|
{
|
|
|
|
if (_gdk_event_queue_find_first (l->data))
|
|
|
|
{
|
|
|
|
pending = TRUE;
|
|
|
|
goto out;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
for (l = list; l; l = l->next)
|
|
|
|
{
|
|
|
|
if (gdk_display_has_pending (l->data))
|
|
|
|
{
|
|
|
|
pending = TRUE;
|
|
|
|
goto out;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
out:
|
|
|
|
g_slist_free (list);
|
|
|
|
|
|
|
|
return pending;
|
|
|
|
}
|
|
|
|
|
2002-04-25 22:29:14 +00:00
|
|
|
/**
|
|
|
|
* gdk_event_get:
|
|
|
|
*
|
|
|
|
* Checks all open displays for a #GdkEvent to process,to be processed
|
|
|
|
* on, fetching events from the windowing system if necessary.
|
|
|
|
* See gdk_display_get_event().
|
|
|
|
*
|
|
|
|
* Return value: the next #GdkEvent to be processed, or %NULL if no events
|
|
|
|
* are pending. The returned #GdkEvent should be freed with gdk_event_free().
|
|
|
|
**/
|
1999-02-10 08:06:30 +00:00
|
|
|
GdkEvent*
|
1998-12-15 13:54:20 +00:00
|
|
|
gdk_event_get (void)
|
|
|
|
{
|
2010-12-11 00:42:09 +00:00
|
|
|
GSList *list, *l;
|
|
|
|
GdkEvent *event;
|
1998-12-15 13:54:20 +00:00
|
|
|
|
2010-12-11 00:42:09 +00:00
|
|
|
event = NULL;
|
|
|
|
list = gdk_display_manager_list_displays (gdk_display_manager_get ());
|
|
|
|
for (l = list; l; l = l->next)
|
2002-04-25 22:29:14 +00:00
|
|
|
{
|
2010-12-11 00:42:09 +00:00
|
|
|
event = gdk_display_get_event (l->data);
|
2002-04-25 22:29:14 +00:00
|
|
|
if (event)
|
2010-12-11 00:42:09 +00:00
|
|
|
break;
|
2002-04-25 22:29:14 +00:00
|
|
|
}
|
|
|
|
|
2010-12-11 00:42:09 +00:00
|
|
|
g_slist_free (list);
|
|
|
|
|
|
|
|
return event;
|
1998-12-15 13:54:20 +00:00
|
|
|
}
|
|
|
|
|
2002-04-25 22:29:14 +00:00
|
|
|
/**
|
|
|
|
* gdk_event_peek:
|
1999-01-12 23:27:30 +00:00
|
|
|
*
|
2002-04-25 22:29:14 +00:00
|
|
|
* If there is an event waiting in the event queue of some open
|
|
|
|
* display, returns a copy of it. See gdk_display_peek_event().
|
|
|
|
*
|
|
|
|
* Return value: a copy of the first #GdkEvent on some event queue, or %NULL if no
|
|
|
|
* events are in any queues. The returned #GdkEvent should be freed with
|
|
|
|
* gdk_event_free().
|
|
|
|
**/
|
1999-02-10 08:06:30 +00:00
|
|
|
GdkEvent*
|
1999-01-12 23:27:30 +00:00
|
|
|
gdk_event_peek (void)
|
|
|
|
{
|
2010-12-11 00:42:09 +00:00
|
|
|
GSList *list, *l;
|
|
|
|
GdkEvent *event;
|
1999-01-12 23:27:30 +00:00
|
|
|
|
2010-12-11 00:42:09 +00:00
|
|
|
event = NULL;
|
|
|
|
list = gdk_display_manager_list_displays (gdk_display_manager_get ());
|
|
|
|
for (l = list; l; l = l->next)
|
2002-04-25 22:29:14 +00:00
|
|
|
{
|
2010-12-11 00:42:09 +00:00
|
|
|
event = gdk_display_peek_event (l->data);
|
2002-04-25 22:29:14 +00:00
|
|
|
if (event)
|
2010-12-11 00:42:09 +00:00
|
|
|
break;
|
2002-04-25 22:29:14 +00:00
|
|
|
}
|
|
|
|
|
2010-12-11 00:42:09 +00:00
|
|
|
g_slist_free (list);
|
|
|
|
|
|
|
|
return event;
|
1999-01-12 23:27:30 +00:00
|
|
|
}
|
|
|
|
|
2002-04-25 22:29:14 +00:00
|
|
|
/**
|
|
|
|
* gdk_event_put:
|
|
|
|
* @event: a #GdkEvent.
|
|
|
|
*
|
|
|
|
* Appends a copy of the given event onto the front of the event
|
|
|
|
* queue for event->any.window's display, or the default event
|
|
|
|
* queue if event->any.window is %NULL. See gdk_display_put_event().
|
|
|
|
**/
|
1998-12-15 13:54:20 +00:00
|
|
|
void
|
2008-01-15 15:32:37 +00:00
|
|
|
gdk_event_put (const GdkEvent *event)
|
1998-12-15 13:54:20 +00:00
|
|
|
{
|
2002-04-25 22:29:14 +00:00
|
|
|
GdkDisplay *display;
|
1998-12-15 13:54:20 +00:00
|
|
|
|
|
|
|
g_return_if_fail (event != NULL);
|
1998-12-15 15:32:49 +00:00
|
|
|
|
2002-04-25 22:29:14 +00:00
|
|
|
if (event->any.window)
|
2010-08-29 00:08:47 +00:00
|
|
|
display = gdk_window_get_display (event->any.window);
|
2002-04-25 22:29:14 +00:00
|
|
|
else
|
|
|
|
{
|
|
|
|
GDK_NOTE (MULTIHEAD,
|
|
|
|
g_message ("Falling back to default display for gdk_event_put()"));
|
2002-06-20 23:59:27 +00:00
|
|
|
display = gdk_display_get_default ();
|
2002-04-25 22:29:14 +00:00
|
|
|
}
|
1998-12-15 13:54:20 +00:00
|
|
|
|
2002-04-25 22:29:14 +00:00
|
|
|
gdk_display_put_event (display, event);
|
|
|
|
}
|
1998-12-15 13:54:20 +00:00
|
|
|
|
2002-10-02 21:39:09 +00:00
|
|
|
static GHashTable *event_hash = NULL;
|
1998-12-15 13:54:20 +00:00
|
|
|
|
2002-10-22 22:11:22 +00:00
|
|
|
/**
|
|
|
|
* gdk_event_new:
|
|
|
|
* @type: a #GdkEventType
|
|
|
|
*
|
|
|
|
* Creates a new event of the given type. All fields are set to 0.
|
|
|
|
*
|
|
|
|
* Return value: a newly-allocated #GdkEvent. The returned #GdkEvent
|
|
|
|
* should be freed with gdk_event_free().
|
2002-11-28 00:33:17 +00:00
|
|
|
*
|
|
|
|
* Since: 2.2
|
2002-10-22 22:11:22 +00:00
|
|
|
**/
|
1999-11-08 20:14:59 +00:00
|
|
|
GdkEvent*
|
2002-10-03 20:53:30 +00:00
|
|
|
gdk_event_new (GdkEventType type)
|
1998-12-15 13:54:20 +00:00
|
|
|
{
|
2002-10-03 20:53:30 +00:00
|
|
|
GdkEventPrivate *new_private;
|
|
|
|
GdkEvent *new_event;
|
1998-12-15 13:54:20 +00:00
|
|
|
|
2005-12-06 10:40:09 +00:00
|
|
|
if (!event_hash)
|
|
|
|
event_hash = g_hash_table_new (g_direct_hash, NULL);
|
|
|
|
|
2005-12-05 20:51:18 +00:00
|
|
|
new_private = g_slice_new0 (GdkEventPrivate);
|
2002-10-03 20:53:30 +00:00
|
|
|
|
|
|
|
new_private->flags = 0;
|
|
|
|
new_private->screen = NULL;
|
|
|
|
|
|
|
|
g_hash_table_insert (event_hash, new_private, GUINT_TO_POINTER (1));
|
|
|
|
|
|
|
|
new_event = (GdkEvent *) new_private;
|
|
|
|
|
|
|
|
new_event->any.type = type;
|
2002-10-02 21:39:09 +00:00
|
|
|
|
2002-10-03 20:53:30 +00:00
|
|
|
/*
|
|
|
|
* Bytewise 0 initialization is reasonable for most of the
|
|
|
|
* current event types. Explicitely initialize double fields
|
|
|
|
* since I trust bytewise 0 == 0. less than for integers
|
|
|
|
* or pointers.
|
|
|
|
*/
|
|
|
|
switch (type)
|
|
|
|
{
|
|
|
|
case GDK_MOTION_NOTIFY:
|
|
|
|
new_event->motion.x = 0.;
|
|
|
|
new_event->motion.y = 0.;
|
|
|
|
new_event->motion.x_root = 0.;
|
|
|
|
new_event->motion.y_root = 0.;
|
|
|
|
break;
|
|
|
|
case GDK_BUTTON_PRESS:
|
|
|
|
case GDK_2BUTTON_PRESS:
|
|
|
|
case GDK_3BUTTON_PRESS:
|
|
|
|
case GDK_BUTTON_RELEASE:
|
|
|
|
new_event->button.x = 0.;
|
|
|
|
new_event->button.y = 0.;
|
|
|
|
new_event->button.x_root = 0.;
|
|
|
|
new_event->button.y_root = 0.;
|
|
|
|
break;
|
2011-02-28 19:53:42 +00:00
|
|
|
case GDK_TOUCH_BEGIN:
|
|
|
|
case GDK_TOUCH_UPDATE:
|
|
|
|
case GDK_TOUCH_END:
|
|
|
|
case GDK_TOUCH_CANCEL:
|
|
|
|
new_event->touch.x = 0.;
|
|
|
|
new_event->touch.y = 0.;
|
|
|
|
new_event->touch.x_root = 0.;
|
|
|
|
new_event->touch.y_root = 0.;
|
|
|
|
break;
|
2002-10-03 20:53:30 +00:00
|
|
|
case GDK_SCROLL:
|
|
|
|
new_event->scroll.x = 0.;
|
|
|
|
new_event->scroll.y = 0.;
|
|
|
|
new_event->scroll.x_root = 0.;
|
|
|
|
new_event->scroll.y_root = 0.;
|
2012-01-23 22:37:44 +00:00
|
|
|
new_event->scroll.delta_x = 0.;
|
|
|
|
new_event->scroll.delta_y = 0.;
|
2002-10-03 20:53:30 +00:00
|
|
|
break;
|
|
|
|
case GDK_ENTER_NOTIFY:
|
|
|
|
case GDK_LEAVE_NOTIFY:
|
|
|
|
new_event->crossing.x = 0.;
|
|
|
|
new_event->crossing.y = 0.;
|
|
|
|
new_event->crossing.x_root = 0.;
|
|
|
|
new_event->crossing.y_root = 0.;
|
|
|
|
break;
|
|
|
|
default:
|
|
|
|
break;
|
|
|
|
}
|
1998-12-15 13:54:20 +00:00
|
|
|
|
2002-10-03 20:53:30 +00:00
|
|
|
return new_event;
|
1998-12-15 13:54:20 +00:00
|
|
|
}
|
|
|
|
|
2002-10-02 21:39:09 +00:00
|
|
|
static gboolean
|
2008-01-15 15:32:37 +00:00
|
|
|
gdk_event_is_allocated (const GdkEvent *event)
|
2002-10-02 21:39:09 +00:00
|
|
|
{
|
|
|
|
if (event_hash)
|
|
|
|
return g_hash_table_lookup (event_hash, event) != NULL;
|
2002-10-02 22:30:37 +00:00
|
|
|
|
|
|
|
return FALSE;
|
2002-10-02 21:39:09 +00:00
|
|
|
}
|
2011-12-28 00:37:01 +00:00
|
|
|
|
|
|
|
void
|
|
|
|
_gdk_event_set_pointer_emulated (GdkEvent *event,
|
|
|
|
gboolean emulated)
|
|
|
|
{
|
|
|
|
if (gdk_event_is_allocated (event))
|
|
|
|
{
|
|
|
|
GdkEventPrivate *private = (GdkEventPrivate *) event;
|
|
|
|
|
|
|
|
if (emulated)
|
|
|
|
private->flags |= GDK_EVENT_POINTER_EMULATED;
|
|
|
|
else
|
|
|
|
private->flags &= ~(GDK_EVENT_POINTER_EMULATED);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
gboolean
|
|
|
|
_gdk_event_get_pointer_emulated (GdkEvent *event)
|
|
|
|
{
|
|
|
|
if (gdk_event_is_allocated (event))
|
|
|
|
return (((GdkEventPrivate *) event)->flags & GDK_EVENT_POINTER_EMULATED) != 0;
|
|
|
|
|
|
|
|
return FALSE;
|
|
|
|
}
|
|
|
|
|
2002-04-25 22:29:14 +00:00
|
|
|
/**
|
|
|
|
* gdk_event_copy:
|
|
|
|
* @event: a #GdkEvent
|
|
|
|
*
|
|
|
|
* Copies a #GdkEvent, copying or incrementing the reference count of the
|
|
|
|
* resources associated with it (e.g. #GdkWindow's and strings).
|
|
|
|
*
|
|
|
|
* Return value: a copy of @event. The returned #GdkEvent should be freed with
|
|
|
|
* gdk_event_free().
|
|
|
|
**/
|
1998-12-15 13:54:20 +00:00
|
|
|
GdkEvent*
|
2008-01-15 15:32:37 +00:00
|
|
|
gdk_event_copy (const GdkEvent *event)
|
1998-12-15 13:54:20 +00:00
|
|
|
{
|
2002-10-03 20:53:30 +00:00
|
|
|
GdkEventPrivate *new_private;
|
1998-12-15 13:54:20 +00:00
|
|
|
GdkEvent *new_event;
|
2011-01-20 03:52:55 +00:00
|
|
|
|
1998-12-15 13:54:20 +00:00
|
|
|
g_return_val_if_fail (event != NULL, NULL);
|
2011-01-20 03:52:55 +00:00
|
|
|
|
2002-10-03 20:53:30 +00:00
|
|
|
new_event = gdk_event_new (GDK_NOTHING);
|
|
|
|
new_private = (GdkEventPrivate *)new_event;
|
|
|
|
|
1998-12-15 13:54:20 +00:00
|
|
|
*new_event = *event;
|
2000-11-01 15:55:48 +00:00
|
|
|
if (new_event->any.window)
|
2002-09-25 07:23:55 +00:00
|
|
|
g_object_ref (new_event->any.window);
|
2002-10-03 20:53:30 +00:00
|
|
|
|
2003-04-18 21:24:43 +00:00
|
|
|
if (gdk_event_is_allocated (event))
|
|
|
|
{
|
|
|
|
GdkEventPrivate *private = (GdkEventPrivate *)event;
|
|
|
|
|
|
|
|
new_private->screen = private->screen;
|
2010-05-25 22:38:44 +00:00
|
|
|
new_private->device = private->device;
|
2011-01-20 03:52:55 +00:00
|
|
|
new_private->source_device = private->source_device;
|
2003-04-18 21:24:43 +00:00
|
|
|
}
|
2011-01-20 03:52:55 +00:00
|
|
|
|
1998-12-15 13:54:20 +00:00
|
|
|
switch (event->any.type)
|
|
|
|
{
|
|
|
|
case GDK_KEY_PRESS:
|
|
|
|
case GDK_KEY_RELEASE:
|
|
|
|
new_event->key.string = g_strdup (event->key.string);
|
|
|
|
break;
|
2011-01-20 03:52:55 +00:00
|
|
|
|
1998-12-15 13:54:20 +00:00
|
|
|
case GDK_ENTER_NOTIFY:
|
|
|
|
case GDK_LEAVE_NOTIFY:
|
|
|
|
if (event->crossing.subwindow != NULL)
|
2011-01-20 03:52:55 +00:00
|
|
|
g_object_ref (event->crossing.subwindow);
|
1998-12-15 13:54:20 +00:00
|
|
|
break;
|
2011-01-20 03:52:55 +00:00
|
|
|
|
1998-12-15 13:54:20 +00:00
|
|
|
case GDK_DRAG_ENTER:
|
|
|
|
case GDK_DRAG_LEAVE:
|
|
|
|
case GDK_DRAG_MOTION:
|
|
|
|
case GDK_DRAG_STATUS:
|
|
|
|
case GDK_DROP_START:
|
|
|
|
case GDK_DROP_FINISHED:
|
2002-09-25 07:23:55 +00:00
|
|
|
g_object_ref (event->dnd.context);
|
1998-12-15 13:54:20 +00:00
|
|
|
break;
|
2011-01-20 03:52:55 +00:00
|
|
|
|
2001-03-09 13:28:26 +00:00
|
|
|
case GDK_EXPOSE:
|
2009-12-19 18:51:12 +00:00
|
|
|
case GDK_DAMAGE:
|
2001-03-09 13:28:26 +00:00
|
|
|
if (event->expose.region)
|
2011-01-20 03:52:55 +00:00
|
|
|
new_event->expose.region = cairo_region_copy (event->expose.region);
|
2001-03-09 13:28:26 +00:00
|
|
|
break;
|
2011-01-20 03:52:55 +00:00
|
|
|
|
2001-04-02 23:33:47 +00:00
|
|
|
case GDK_SETTING:
|
|
|
|
new_event->setting.name = g_strdup (new_event->setting.name);
|
|
|
|
break;
|
2003-02-18 20:14:56 +00:00
|
|
|
|
|
|
|
case GDK_BUTTON_PRESS:
|
2011-02-24 16:38:40 +00:00
|
|
|
case GDK_2BUTTON_PRESS:
|
|
|
|
case GDK_3BUTTON_PRESS:
|
2003-02-18 20:14:56 +00:00
|
|
|
case GDK_BUTTON_RELEASE:
|
2011-01-20 03:52:55 +00:00
|
|
|
if (event->button.axes)
|
|
|
|
new_event->button.axes = g_memdup (event->button.axes,
|
2010-11-23 19:25:13 +00:00
|
|
|
sizeof (gdouble) * gdk_device_get_n_axes (event->button.device));
|
2003-02-18 20:14:56 +00:00
|
|
|
break;
|
|
|
|
|
2011-02-28 19:53:42 +00:00
|
|
|
case GDK_TOUCH_BEGIN:
|
|
|
|
case GDK_TOUCH_UPDATE:
|
|
|
|
case GDK_TOUCH_END:
|
|
|
|
case GDK_TOUCH_CANCEL:
|
|
|
|
if (event->touch.axes)
|
|
|
|
new_event->touch.axes = g_memdup (event->touch.axes,
|
|
|
|
sizeof (gdouble) * gdk_device_get_n_axes (event->touch.device));
|
|
|
|
break;
|
|
|
|
|
2003-02-18 20:14:56 +00:00
|
|
|
case GDK_MOTION_NOTIFY:
|
2011-01-20 03:52:55 +00:00
|
|
|
if (event->motion.axes)
|
|
|
|
new_event->motion.axes = g_memdup (event->motion.axes,
|
|
|
|
sizeof (gdouble) * gdk_device_get_n_axes (event->motion.device));
|
2003-02-18 20:14:56 +00:00
|
|
|
break;
|
2010-11-23 19:25:13 +00:00
|
|
|
|
2011-01-31 05:43:18 +00:00
|
|
|
case GDK_OWNER_CHANGE:
|
2011-02-01 00:35:51 +00:00
|
|
|
new_event->owner_change.owner = event->owner_change.owner;
|
|
|
|
if (new_event->owner_change.owner)
|
|
|
|
g_object_ref (new_event->owner_change.owner);
|
2011-01-31 05:43:18 +00:00
|
|
|
break;
|
|
|
|
|
2011-02-01 16:22:04 +00:00
|
|
|
case GDK_SELECTION_CLEAR:
|
|
|
|
case GDK_SELECTION_NOTIFY:
|
|
|
|
case GDK_SELECTION_REQUEST:
|
|
|
|
new_event->selection.requestor = event->selection.requestor;
|
|
|
|
if (new_event->selection.requestor)
|
2011-11-17 10:59:27 +00:00
|
|
|
g_object_ref (new_event->selection.requestor);
|
2011-02-01 16:22:04 +00:00
|
|
|
break;
|
|
|
|
|
2001-04-02 23:33:47 +00:00
|
|
|
default:
|
1998-12-15 13:54:20 +00:00
|
|
|
break;
|
|
|
|
}
|
2008-05-06 21:00:06 +00:00
|
|
|
|
|
|
|
if (gdk_event_is_allocated (event))
|
2010-12-15 07:37:52 +00:00
|
|
|
_gdk_display_event_data_copy (gdk_display_get_default (), event, new_event);
|
2010-12-15 05:37:40 +00:00
|
|
|
|
1998-12-15 13:54:20 +00:00
|
|
|
return new_event;
|
|
|
|
}
|
|
|
|
|
2002-04-25 22:29:14 +00:00
|
|
|
/**
|
|
|
|
* gdk_event_free:
|
|
|
|
* @event: a #GdkEvent.
|
|
|
|
*
|
|
|
|
* Frees a #GdkEvent, freeing or decrementing any resources associated with it.
|
|
|
|
* Note that this function should only be called with events returned from
|
2010-06-30 19:42:05 +00:00
|
|
|
* functions such as gdk_event_peek(), gdk_event_get(), gdk_event_copy()
|
|
|
|
* and gdk_event_new().
|
2002-04-25 22:29:14 +00:00
|
|
|
**/
|
1998-12-15 13:54:20 +00:00
|
|
|
void
|
|
|
|
gdk_event_free (GdkEvent *event)
|
|
|
|
{
|
2011-04-09 01:20:26 +00:00
|
|
|
GdkDisplay *display;
|
|
|
|
|
1998-12-15 13:54:20 +00:00
|
|
|
g_return_if_fail (event != NULL);
|
1999-02-10 08:06:30 +00:00
|
|
|
|
1998-12-15 13:54:20 +00:00
|
|
|
if (event->any.window)
|
2002-09-25 07:23:55 +00:00
|
|
|
g_object_unref (event->any.window);
|
1998-12-15 13:54:20 +00:00
|
|
|
|
|
|
|
switch (event->any.type)
|
|
|
|
{
|
|
|
|
case GDK_KEY_PRESS:
|
|
|
|
case GDK_KEY_RELEASE:
|
|
|
|
g_free (event->key.string);
|
|
|
|
break;
|
|
|
|
|
|
|
|
case GDK_ENTER_NOTIFY:
|
|
|
|
case GDK_LEAVE_NOTIFY:
|
|
|
|
if (event->crossing.subwindow != NULL)
|
2002-09-25 07:23:55 +00:00
|
|
|
g_object_unref (event->crossing.subwindow);
|
1998-12-15 13:54:20 +00:00
|
|
|
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:
|
2010-09-24 14:30:07 +00:00
|
|
|
if (event->dnd.context != NULL)
|
|
|
|
g_object_unref (event->dnd.context);
|
1998-12-15 13:54:20 +00:00
|
|
|
break;
|
2000-07-03 19:00:23 +00:00
|
|
|
|
|
|
|
case GDK_BUTTON_PRESS:
|
2011-02-17 19:43:31 +00:00
|
|
|
case GDK_2BUTTON_PRESS:
|
|
|
|
case GDK_3BUTTON_PRESS:
|
2000-07-03 19:00:23 +00:00
|
|
|
case GDK_BUTTON_RELEASE:
|
2007-03-09 21:57:37 +00:00
|
|
|
g_free (event->button.axes);
|
2000-07-03 19:00:23 +00:00
|
|
|
break;
|
2011-02-28 19:53:42 +00:00
|
|
|
|
|
|
|
case GDK_TOUCH_BEGIN:
|
|
|
|
case GDK_TOUCH_UPDATE:
|
|
|
|
case GDK_TOUCH_END:
|
|
|
|
case GDK_TOUCH_CANCEL:
|
|
|
|
g_free (event->touch.axes);
|
|
|
|
break;
|
|
|
|
|
2001-03-09 13:28:26 +00:00
|
|
|
case GDK_EXPOSE:
|
2009-12-19 18:51:12 +00:00
|
|
|
case GDK_DAMAGE:
|
2001-03-09 13:28:26 +00:00
|
|
|
if (event->expose.region)
|
2010-06-28 12:44:12 +00:00
|
|
|
cairo_region_destroy (event->expose.region);
|
2001-03-09 13:28:26 +00:00
|
|
|
break;
|
|
|
|
|
2000-07-03 19:00:23 +00:00
|
|
|
case GDK_MOTION_NOTIFY:
|
2007-03-09 21:57:37 +00:00
|
|
|
g_free (event->motion.axes);
|
2000-07-03 19:00:23 +00:00
|
|
|
break;
|
1998-12-15 13:54:20 +00:00
|
|
|
|
2001-04-02 23:33:47 +00:00
|
|
|
case GDK_SETTING:
|
|
|
|
g_free (event->setting.name);
|
|
|
|
break;
|
|
|
|
|
2011-01-31 05:43:18 +00:00
|
|
|
case GDK_OWNER_CHANGE:
|
2011-02-01 00:35:51 +00:00
|
|
|
if (event->owner_change.owner)
|
|
|
|
g_object_unref (event->owner_change.owner);
|
2011-01-31 05:43:18 +00:00
|
|
|
break;
|
|
|
|
|
2011-02-01 16:22:04 +00:00
|
|
|
case GDK_SELECTION_CLEAR:
|
|
|
|
case GDK_SELECTION_NOTIFY:
|
|
|
|
case GDK_SELECTION_REQUEST:
|
|
|
|
if (event->selection.requestor)
|
|
|
|
g_object_unref (event->selection.requestor);
|
|
|
|
break;
|
|
|
|
|
1998-12-15 13:54:20 +00:00
|
|
|
default:
|
|
|
|
break;
|
|
|
|
}
|
2002-10-02 21:39:09 +00:00
|
|
|
|
2011-04-09 01:20:26 +00:00
|
|
|
display = gdk_display_get_default ();
|
|
|
|
if (display)
|
|
|
|
_gdk_display_event_data_free (display, event);
|
2008-05-06 21:00:06 +00:00
|
|
|
|
2002-10-02 22:30:37 +00:00
|
|
|
g_hash_table_remove (event_hash, event);
|
2005-12-06 10:40:09 +00:00
|
|
|
g_slice_free (GdkEventPrivate, (GdkEventPrivate*) event);
|
1998-12-15 13:54:20 +00:00
|
|
|
}
|
|
|
|
|
2013-09-10 10:20:28 +00:00
|
|
|
/**
|
|
|
|
* gdk_event_get_window:
|
|
|
|
* @event: a #GdkEvent
|
|
|
|
*
|
|
|
|
* Extracts the #GdkWindow associated with an event.
|
|
|
|
*
|
|
|
|
* Return value: (transfer none): The #GdkWindow associated with the event
|
|
|
|
*
|
|
|
|
* Since: 3.10
|
|
|
|
*/
|
|
|
|
GdkWindow *
|
|
|
|
gdk_event_get_window (const GdkEvent *event)
|
|
|
|
{
|
|
|
|
g_return_val_if_fail (event != NULL, NULL);
|
|
|
|
|
|
|
|
return event->any.window;
|
|
|
|
}
|
|
|
|
|
2000-12-18 19:12:35 +00:00
|
|
|
/**
|
1998-12-15 13:54:20 +00:00
|
|
|
* gdk_event_get_time:
|
2000-12-18 19:12:35 +00:00
|
|
|
* @event: a #GdkEvent
|
|
|
|
*
|
|
|
|
* Returns the time stamp from @event, if there is one; otherwise
|
|
|
|
* returns #GDK_CURRENT_TIME. If @event is %NULL, returns #GDK_CURRENT_TIME.
|
|
|
|
*
|
|
|
|
* Return value: time stamp field from @event
|
|
|
|
**/
|
1998-12-15 13:54:20 +00:00
|
|
|
guint32
|
2008-01-15 15:32:37 +00:00
|
|
|
gdk_event_get_time (const GdkEvent *event)
|
1998-12-15 13:54:20 +00:00
|
|
|
{
|
|
|
|
if (event)
|
|
|
|
switch (event->type)
|
|
|
|
{
|
|
|
|
case GDK_MOTION_NOTIFY:
|
|
|
|
return event->motion.time;
|
|
|
|
case GDK_BUTTON_PRESS:
|
|
|
|
case GDK_2BUTTON_PRESS:
|
|
|
|
case GDK_3BUTTON_PRESS:
|
|
|
|
case GDK_BUTTON_RELEASE:
|
|
|
|
return event->button.time;
|
2011-02-28 19:53:42 +00:00
|
|
|
case GDK_TOUCH_BEGIN:
|
|
|
|
case GDK_TOUCH_UPDATE:
|
|
|
|
case GDK_TOUCH_END:
|
|
|
|
case GDK_TOUCH_CANCEL:
|
|
|
|
return event->touch.time;
|
Port to GObject, can go back in gdk-pixbuf after setting up a
2000-12-16 Havoc Pennington <hp@pobox.com>
* gtk/gdk-pixbuf-loader.h, gtk/gdk-pixbuf-loader.c:
Port to GObject, can go back in gdk-pixbuf after setting up
a gdk-pixbuf-marshal.h header over there.
* gtk/gtktreeview.c: s/SEPERATOR/SEPARATOR/g;
(gtk_tree_view_class_init): specify GTK_TYPE_ADJUSTMENT for signal
args
(gtk_tree_view_init): don't unset GTK_NO_WINDOW, it shouldn't be
set
(gtk_tree_view_realize_buttons): don't gtk_widget_show() buttons
here, do it when we create the buttons later
(gtk_tree_view_realize_buttons): add some g_return_if_fail
(gtk_tree_view_map): paranoia checks that column->button is shown
and unmapped
(gtk_tree_view_size_request): only request visible children.
Move header size calculation in here, for cleanliness, and
to maintain invariants for child widgets if we eventually
let users set different children inside the buttons
(gtk_tree_view_map_buttons): factor out code to map buttons,
since it was being called several times
(gtk_tree_view_size_allocate_buttons): move_resize the drag
windows instead of just moving them; their height may change
if we allow random widgets in there, or the theme changes.
(gtk_tree_view_size_allocate): move button size allocation
above emitting the scroll signals, to ensure a sane state when we
hit user code
(gtk_tree_view_button_release): remove queue_resize after
tree_view_set_size(), set_size() will handle any resize queuing
that's needed
(gtk_tree_view_focus_in): just queue a draw, don't fool with
draw_focus goo
(gtk_tree_view_focus): use gtk_get_current_event() and
gdk_event_get_state()
(gtk_tree_view_deleted): don't queue_resize() after calling set_size()
(gtk_tree_view_build_tree): fix a "if (foo); {}" bug - i.e. remove
semicolon
(gtk_tree_view_create_button): show the button here
(gtk_tree_view_button_clicked): actually emit the clicked signal
on the column
(_gtk_tree_view_set_size): return right away if the size is
unchanged, as a cheesy optimization
(gtk_tree_view_setup_model): rename set_model_realized to
setup_model to match the flag that indicates whether we've
called it
(gtk_tree_view_get_hadjustment): create adjustment if it doesn't
exist, because set_scroll_adjustment does that and it shouldn't
matter what order you call these in
(gtk_tree_view_get_vadjustment): ditto
(gtk_tree_view_set_headers_visible): canonicalize the bool,
for paranoia
(gtk_tree_view_set_headers_visible): call
gtk_tree_view_map_buttons() instead of using cut-and-paste code
(gtk_tree_view_append_column): clarify whether the return value
is the count of columns before or after, and do the increment
separately from the return statement so you can tell from the code.
(gtk_tree_view_remove_column): ditto
(gtk_tree_view_insert_column): ditto
(gtk_tree_view_get_column): remove g_return_if_fail for columns
outside the existing range, the docs say that outside-range
columns are allowed, so we handle them as documented. (Presumably
this allows a nice loop with column != NULL as test.)
(gtk_tree_view_move_to): document what 0.0, 0.5, 1.0 alignments
mean (left/right/center etc.).
(gtk_tree_view_collapse_all): only queue a draw if we're mapped
(gtk_tree_view_expand_row): add docs
(gtk_tree_view_collapse_row): add docs
* gtk/gtktreeviewcolumn.c (gtk_tree_view_column_clicked): new
function to emit the clicked signal on a column
* gdk/gdkevents.c (gdk_event_get_state): new function, to get the
state of an event
(gdk_event_get_time): don't treat GDK_SCROLL
as a button event, remove default case from switch so gcc
will whine if we don't explicitly handle all event types
* gtk/gtktreeselection.h: added some FIXME
* gtk/gtktreeprivate.h (struct _GtkTreeViewPrivate): rename
"columns" to "n_columns" and "column" to "columns" for clarity
2000-12-17 23:50:00 +00:00
|
|
|
case GDK_SCROLL:
|
|
|
|
return event->scroll.time;
|
1998-12-15 13:54:20 +00:00
|
|
|
case GDK_KEY_PRESS:
|
|
|
|
case GDK_KEY_RELEASE:
|
|
|
|
return event->key.time;
|
|
|
|
case GDK_ENTER_NOTIFY:
|
|
|
|
case GDK_LEAVE_NOTIFY:
|
|
|
|
return event->crossing.time;
|
|
|
|
case GDK_PROPERTY_NOTIFY:
|
|
|
|
return event->property.time;
|
|
|
|
case GDK_SELECTION_CLEAR:
|
|
|
|
case GDK_SELECTION_REQUEST:
|
|
|
|
case GDK_SELECTION_NOTIFY:
|
|
|
|
return event->selection.time;
|
|
|
|
case GDK_PROXIMITY_IN:
|
|
|
|
case GDK_PROXIMITY_OUT:
|
|
|
|
return event->proximity.time;
|
|
|
|
case GDK_DRAG_ENTER:
|
|
|
|
case GDK_DRAG_LEAVE:
|
|
|
|
case GDK_DRAG_MOTION:
|
|
|
|
case GDK_DRAG_STATUS:
|
|
|
|
case GDK_DROP_START:
|
|
|
|
case GDK_DROP_FINISHED:
|
|
|
|
return event->dnd.time;
|
Port to GObject, can go back in gdk-pixbuf after setting up a
2000-12-16 Havoc Pennington <hp@pobox.com>
* gtk/gdk-pixbuf-loader.h, gtk/gdk-pixbuf-loader.c:
Port to GObject, can go back in gdk-pixbuf after setting up
a gdk-pixbuf-marshal.h header over there.
* gtk/gtktreeview.c: s/SEPERATOR/SEPARATOR/g;
(gtk_tree_view_class_init): specify GTK_TYPE_ADJUSTMENT for signal
args
(gtk_tree_view_init): don't unset GTK_NO_WINDOW, it shouldn't be
set
(gtk_tree_view_realize_buttons): don't gtk_widget_show() buttons
here, do it when we create the buttons later
(gtk_tree_view_realize_buttons): add some g_return_if_fail
(gtk_tree_view_map): paranoia checks that column->button is shown
and unmapped
(gtk_tree_view_size_request): only request visible children.
Move header size calculation in here, for cleanliness, and
to maintain invariants for child widgets if we eventually
let users set different children inside the buttons
(gtk_tree_view_map_buttons): factor out code to map buttons,
since it was being called several times
(gtk_tree_view_size_allocate_buttons): move_resize the drag
windows instead of just moving them; their height may change
if we allow random widgets in there, or the theme changes.
(gtk_tree_view_size_allocate): move button size allocation
above emitting the scroll signals, to ensure a sane state when we
hit user code
(gtk_tree_view_button_release): remove queue_resize after
tree_view_set_size(), set_size() will handle any resize queuing
that's needed
(gtk_tree_view_focus_in): just queue a draw, don't fool with
draw_focus goo
(gtk_tree_view_focus): use gtk_get_current_event() and
gdk_event_get_state()
(gtk_tree_view_deleted): don't queue_resize() after calling set_size()
(gtk_tree_view_build_tree): fix a "if (foo); {}" bug - i.e. remove
semicolon
(gtk_tree_view_create_button): show the button here
(gtk_tree_view_button_clicked): actually emit the clicked signal
on the column
(_gtk_tree_view_set_size): return right away if the size is
unchanged, as a cheesy optimization
(gtk_tree_view_setup_model): rename set_model_realized to
setup_model to match the flag that indicates whether we've
called it
(gtk_tree_view_get_hadjustment): create adjustment if it doesn't
exist, because set_scroll_adjustment does that and it shouldn't
matter what order you call these in
(gtk_tree_view_get_vadjustment): ditto
(gtk_tree_view_set_headers_visible): canonicalize the bool,
for paranoia
(gtk_tree_view_set_headers_visible): call
gtk_tree_view_map_buttons() instead of using cut-and-paste code
(gtk_tree_view_append_column): clarify whether the return value
is the count of columns before or after, and do the increment
separately from the return statement so you can tell from the code.
(gtk_tree_view_remove_column): ditto
(gtk_tree_view_insert_column): ditto
(gtk_tree_view_get_column): remove g_return_if_fail for columns
outside the existing range, the docs say that outside-range
columns are allowed, so we handle them as documented. (Presumably
this allows a nice loop with column != NULL as test.)
(gtk_tree_view_move_to): document what 0.0, 0.5, 1.0 alignments
mean (left/right/center etc.).
(gtk_tree_view_collapse_all): only queue a draw if we're mapped
(gtk_tree_view_expand_row): add docs
(gtk_tree_view_collapse_row): add docs
* gtk/gtktreeviewcolumn.c (gtk_tree_view_column_clicked): new
function to emit the clicked signal on a column
* gdk/gdkevents.c (gdk_event_get_state): new function, to get the
state of an event
(gdk_event_get_time): don't treat GDK_SCROLL
as a button event, remove default case from switch so gcc
will whine if we don't explicitly handle all event types
* gtk/gtktreeselection.h: added some FIXME
* gtk/gtktreeprivate.h (struct _GtkTreeViewPrivate): rename
"columns" to "n_columns" and "column" to "columns" for clarity
2000-12-17 23:50:00 +00:00
|
|
|
case GDK_CLIENT_EVENT:
|
|
|
|
case GDK_VISIBILITY_NOTIFY:
|
|
|
|
case GDK_CONFIGURE:
|
|
|
|
case GDK_FOCUS_CHANGE:
|
|
|
|
case GDK_NOTHING:
|
Bug 318807 – Offscreen windows and window redirection.
2008-03-18 10:49:20 Tim Janik <timj@imendio.com>
* Applied pixmap redirection patch by Alexander Larsson with
various updates from:
Bug 318807 – Offscreen windows and window redirection.
Updates:
* updated docs to mention "Since 2.16".
* tests/testgtk.c: fixed snapshooting pixmap leak.
convert pixmap to pixbuf after snapshooting, to compensate for different
bit depths (occurs when snapshooting ARGB visuals and displaying the
pixmap in an RGB visual).
* gdk/gdkwindow.[hc]: made GdkWindowRedirect private.
* gdk/gdkwindow.c: removed damage idle handler, there's no aparent
need for it. enqueue damage notification as GDK_DAMAGE events
for each painting redirection at the start of the event queue.
consider windows with a redirection fully visible when invalidating,
and when updating from backing store. cleaned up stale variables.
* gdk/gdkevents.c: added _gdk_event_queue_prepend().
* gtk/gtkwidget.c: fixed coordinates for !NO_WINDOW widgets in
gtk_widget_get_snapshot; this fixes garbage snap offsets for gammacurve,
tree, drawingarea, text, handlebox, etc.
clip the redirected window hierarchy to window sizes, the visible
rectangles don't need to be taken into account here.
extended snapshooting docs to recommend gdk_pixbuf_get_from_drawable()
in case pixmap visuals could mismatch.
* gdk/x11/gdkwindow-x11.c: removed _gdk_windowing_window_get_visible_rect().
Base patch:
* tests/testgtk.c: add a "Snapshot" test to demonstrate snapshooting
of possibly obscured widgets into an offscreen pixmap.
* gtk/gtkwidget.[hc]: add GtkWidget::damage-event signal, add
gtk_widget_get_snapshot() to render a widget's contents to a GdkPixmap.
* gtk/gtkmain.c: dispatch GDK_DAMAGE events.
* gdk/gdkwindow.c: moved outer gdk_window_new() and gdk_window_reparent()
implementations here, adapted them to propagate redirects to child windows.
gdk_window_end_paint(): copy repainted window contents to redirection pixmap,
clipped to visible region. queue GDK_DAMAGE event delivery.
gdk_window_redirect_to_drawable(): install window painting redirection.
gdk_window_remove_redirection(): remove previously installed redirection.
* gdk/x11/gdkwindow-x11.c: added _gdk_windowing_window_get_visible_rect(),
renamed _gdk_window_new() and _gdk_window_reparent().
* gdk/gdkwindow.h: added GdkWindowRedirect* to GdkWindowObject, export
gdk_window_redirect_to_drawable() and gdk_window_remove_redirection().
* gdk/gdkevents.h: added GDK_DAMAGE event type.
* gdk/gdkevents.c: extract time and state from GDK_DAMAGE events.
* gdk/gdkinternals.h: added internal prototypes.
svn path=/trunk/; revision=20122
2008-05-21 19:04:24 +00:00
|
|
|
case GDK_DAMAGE:
|
Port to GObject, can go back in gdk-pixbuf after setting up a
2000-12-16 Havoc Pennington <hp@pobox.com>
* gtk/gdk-pixbuf-loader.h, gtk/gdk-pixbuf-loader.c:
Port to GObject, can go back in gdk-pixbuf after setting up
a gdk-pixbuf-marshal.h header over there.
* gtk/gtktreeview.c: s/SEPERATOR/SEPARATOR/g;
(gtk_tree_view_class_init): specify GTK_TYPE_ADJUSTMENT for signal
args
(gtk_tree_view_init): don't unset GTK_NO_WINDOW, it shouldn't be
set
(gtk_tree_view_realize_buttons): don't gtk_widget_show() buttons
here, do it when we create the buttons later
(gtk_tree_view_realize_buttons): add some g_return_if_fail
(gtk_tree_view_map): paranoia checks that column->button is shown
and unmapped
(gtk_tree_view_size_request): only request visible children.
Move header size calculation in here, for cleanliness, and
to maintain invariants for child widgets if we eventually
let users set different children inside the buttons
(gtk_tree_view_map_buttons): factor out code to map buttons,
since it was being called several times
(gtk_tree_view_size_allocate_buttons): move_resize the drag
windows instead of just moving them; their height may change
if we allow random widgets in there, or the theme changes.
(gtk_tree_view_size_allocate): move button size allocation
above emitting the scroll signals, to ensure a sane state when we
hit user code
(gtk_tree_view_button_release): remove queue_resize after
tree_view_set_size(), set_size() will handle any resize queuing
that's needed
(gtk_tree_view_focus_in): just queue a draw, don't fool with
draw_focus goo
(gtk_tree_view_focus): use gtk_get_current_event() and
gdk_event_get_state()
(gtk_tree_view_deleted): don't queue_resize() after calling set_size()
(gtk_tree_view_build_tree): fix a "if (foo); {}" bug - i.e. remove
semicolon
(gtk_tree_view_create_button): show the button here
(gtk_tree_view_button_clicked): actually emit the clicked signal
on the column
(_gtk_tree_view_set_size): return right away if the size is
unchanged, as a cheesy optimization
(gtk_tree_view_setup_model): rename set_model_realized to
setup_model to match the flag that indicates whether we've
called it
(gtk_tree_view_get_hadjustment): create adjustment if it doesn't
exist, because set_scroll_adjustment does that and it shouldn't
matter what order you call these in
(gtk_tree_view_get_vadjustment): ditto
(gtk_tree_view_set_headers_visible): canonicalize the bool,
for paranoia
(gtk_tree_view_set_headers_visible): call
gtk_tree_view_map_buttons() instead of using cut-and-paste code
(gtk_tree_view_append_column): clarify whether the return value
is the count of columns before or after, and do the increment
separately from the return statement so you can tell from the code.
(gtk_tree_view_remove_column): ditto
(gtk_tree_view_insert_column): ditto
(gtk_tree_view_get_column): remove g_return_if_fail for columns
outside the existing range, the docs say that outside-range
columns are allowed, so we handle them as documented. (Presumably
this allows a nice loop with column != NULL as test.)
(gtk_tree_view_move_to): document what 0.0, 0.5, 1.0 alignments
mean (left/right/center etc.).
(gtk_tree_view_collapse_all): only queue a draw if we're mapped
(gtk_tree_view_expand_row): add docs
(gtk_tree_view_collapse_row): add docs
* gtk/gtktreeviewcolumn.c (gtk_tree_view_column_clicked): new
function to emit the clicked signal on a column
* gdk/gdkevents.c (gdk_event_get_state): new function, to get the
state of an event
(gdk_event_get_time): don't treat GDK_SCROLL
as a button event, remove default case from switch so gcc
will whine if we don't explicitly handle all event types
* gtk/gtktreeselection.h: added some FIXME
* gtk/gtktreeprivate.h (struct _GtkTreeViewPrivate): rename
"columns" to "n_columns" and "column" to "columns" for clarity
2000-12-17 23:50:00 +00:00
|
|
|
case GDK_DELETE:
|
|
|
|
case GDK_DESTROY:
|
|
|
|
case GDK_EXPOSE:
|
|
|
|
case GDK_MAP:
|
|
|
|
case GDK_UNMAP:
|
2001-02-27 20:40:15 +00:00
|
|
|
case GDK_WINDOW_STATE:
|
2001-04-02 23:33:47 +00:00
|
|
|
case GDK_SETTING:
|
2004-07-09 22:42:19 +00:00
|
|
|
case GDK_OWNER_CHANGE:
|
2005-06-26 07:06:13 +00:00
|
|
|
case GDK_GRAB_BROKEN:
|
2009-01-27 14:10:45 +00:00
|
|
|
case GDK_EVENT_LAST:
|
Port to GObject, can go back in gdk-pixbuf after setting up a
2000-12-16 Havoc Pennington <hp@pobox.com>
* gtk/gdk-pixbuf-loader.h, gtk/gdk-pixbuf-loader.c:
Port to GObject, can go back in gdk-pixbuf after setting up
a gdk-pixbuf-marshal.h header over there.
* gtk/gtktreeview.c: s/SEPERATOR/SEPARATOR/g;
(gtk_tree_view_class_init): specify GTK_TYPE_ADJUSTMENT for signal
args
(gtk_tree_view_init): don't unset GTK_NO_WINDOW, it shouldn't be
set
(gtk_tree_view_realize_buttons): don't gtk_widget_show() buttons
here, do it when we create the buttons later
(gtk_tree_view_realize_buttons): add some g_return_if_fail
(gtk_tree_view_map): paranoia checks that column->button is shown
and unmapped
(gtk_tree_view_size_request): only request visible children.
Move header size calculation in here, for cleanliness, and
to maintain invariants for child widgets if we eventually
let users set different children inside the buttons
(gtk_tree_view_map_buttons): factor out code to map buttons,
since it was being called several times
(gtk_tree_view_size_allocate_buttons): move_resize the drag
windows instead of just moving them; their height may change
if we allow random widgets in there, or the theme changes.
(gtk_tree_view_size_allocate): move button size allocation
above emitting the scroll signals, to ensure a sane state when we
hit user code
(gtk_tree_view_button_release): remove queue_resize after
tree_view_set_size(), set_size() will handle any resize queuing
that's needed
(gtk_tree_view_focus_in): just queue a draw, don't fool with
draw_focus goo
(gtk_tree_view_focus): use gtk_get_current_event() and
gdk_event_get_state()
(gtk_tree_view_deleted): don't queue_resize() after calling set_size()
(gtk_tree_view_build_tree): fix a "if (foo); {}" bug - i.e. remove
semicolon
(gtk_tree_view_create_button): show the button here
(gtk_tree_view_button_clicked): actually emit the clicked signal
on the column
(_gtk_tree_view_set_size): return right away if the size is
unchanged, as a cheesy optimization
(gtk_tree_view_setup_model): rename set_model_realized to
setup_model to match the flag that indicates whether we've
called it
(gtk_tree_view_get_hadjustment): create adjustment if it doesn't
exist, because set_scroll_adjustment does that and it shouldn't
matter what order you call these in
(gtk_tree_view_get_vadjustment): ditto
(gtk_tree_view_set_headers_visible): canonicalize the bool,
for paranoia
(gtk_tree_view_set_headers_visible): call
gtk_tree_view_map_buttons() instead of using cut-and-paste code
(gtk_tree_view_append_column): clarify whether the return value
is the count of columns before or after, and do the increment
separately from the return statement so you can tell from the code.
(gtk_tree_view_remove_column): ditto
(gtk_tree_view_insert_column): ditto
(gtk_tree_view_get_column): remove g_return_if_fail for columns
outside the existing range, the docs say that outside-range
columns are allowed, so we handle them as documented. (Presumably
this allows a nice loop with column != NULL as test.)
(gtk_tree_view_move_to): document what 0.0, 0.5, 1.0 alignments
mean (left/right/center etc.).
(gtk_tree_view_collapse_all): only queue a draw if we're mapped
(gtk_tree_view_expand_row): add docs
(gtk_tree_view_collapse_row): add docs
* gtk/gtktreeviewcolumn.c (gtk_tree_view_column_clicked): new
function to emit the clicked signal on a column
* gdk/gdkevents.c (gdk_event_get_state): new function, to get the
state of an event
(gdk_event_get_time): don't treat GDK_SCROLL
as a button event, remove default case from switch so gcc
will whine if we don't explicitly handle all event types
* gtk/gtktreeselection.h: added some FIXME
* gtk/gtktreeprivate.h (struct _GtkTreeViewPrivate): rename
"columns" to "n_columns" and "column" to "columns" for clarity
2000-12-17 23:50:00 +00:00
|
|
|
/* return current time */
|
|
|
|
break;
|
1998-12-15 13:54:20 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
return GDK_CURRENT_TIME;
|
|
|
|
}
|
|
|
|
|
Port to GObject, can go back in gdk-pixbuf after setting up a
2000-12-16 Havoc Pennington <hp@pobox.com>
* gtk/gdk-pixbuf-loader.h, gtk/gdk-pixbuf-loader.c:
Port to GObject, can go back in gdk-pixbuf after setting up
a gdk-pixbuf-marshal.h header over there.
* gtk/gtktreeview.c: s/SEPERATOR/SEPARATOR/g;
(gtk_tree_view_class_init): specify GTK_TYPE_ADJUSTMENT for signal
args
(gtk_tree_view_init): don't unset GTK_NO_WINDOW, it shouldn't be
set
(gtk_tree_view_realize_buttons): don't gtk_widget_show() buttons
here, do it when we create the buttons later
(gtk_tree_view_realize_buttons): add some g_return_if_fail
(gtk_tree_view_map): paranoia checks that column->button is shown
and unmapped
(gtk_tree_view_size_request): only request visible children.
Move header size calculation in here, for cleanliness, and
to maintain invariants for child widgets if we eventually
let users set different children inside the buttons
(gtk_tree_view_map_buttons): factor out code to map buttons,
since it was being called several times
(gtk_tree_view_size_allocate_buttons): move_resize the drag
windows instead of just moving them; their height may change
if we allow random widgets in there, or the theme changes.
(gtk_tree_view_size_allocate): move button size allocation
above emitting the scroll signals, to ensure a sane state when we
hit user code
(gtk_tree_view_button_release): remove queue_resize after
tree_view_set_size(), set_size() will handle any resize queuing
that's needed
(gtk_tree_view_focus_in): just queue a draw, don't fool with
draw_focus goo
(gtk_tree_view_focus): use gtk_get_current_event() and
gdk_event_get_state()
(gtk_tree_view_deleted): don't queue_resize() after calling set_size()
(gtk_tree_view_build_tree): fix a "if (foo); {}" bug - i.e. remove
semicolon
(gtk_tree_view_create_button): show the button here
(gtk_tree_view_button_clicked): actually emit the clicked signal
on the column
(_gtk_tree_view_set_size): return right away if the size is
unchanged, as a cheesy optimization
(gtk_tree_view_setup_model): rename set_model_realized to
setup_model to match the flag that indicates whether we've
called it
(gtk_tree_view_get_hadjustment): create adjustment if it doesn't
exist, because set_scroll_adjustment does that and it shouldn't
matter what order you call these in
(gtk_tree_view_get_vadjustment): ditto
(gtk_tree_view_set_headers_visible): canonicalize the bool,
for paranoia
(gtk_tree_view_set_headers_visible): call
gtk_tree_view_map_buttons() instead of using cut-and-paste code
(gtk_tree_view_append_column): clarify whether the return value
is the count of columns before or after, and do the increment
separately from the return statement so you can tell from the code.
(gtk_tree_view_remove_column): ditto
(gtk_tree_view_insert_column): ditto
(gtk_tree_view_get_column): remove g_return_if_fail for columns
outside the existing range, the docs say that outside-range
columns are allowed, so we handle them as documented. (Presumably
this allows a nice loop with column != NULL as test.)
(gtk_tree_view_move_to): document what 0.0, 0.5, 1.0 alignments
mean (left/right/center etc.).
(gtk_tree_view_collapse_all): only queue a draw if we're mapped
(gtk_tree_view_expand_row): add docs
(gtk_tree_view_collapse_row): add docs
* gtk/gtktreeviewcolumn.c (gtk_tree_view_column_clicked): new
function to emit the clicked signal on a column
* gdk/gdkevents.c (gdk_event_get_state): new function, to get the
state of an event
(gdk_event_get_time): don't treat GDK_SCROLL
as a button event, remove default case from switch so gcc
will whine if we don't explicitly handle all event types
* gtk/gtktreeselection.h: added some FIXME
* gtk/gtktreeprivate.h (struct _GtkTreeViewPrivate): rename
"columns" to "n_columns" and "column" to "columns" for clarity
2000-12-17 23:50:00 +00:00
|
|
|
/**
|
|
|
|
* gdk_event_get_state:
|
|
|
|
* @event: a #GdkEvent or NULL
|
2010-06-07 21:47:14 +00:00
|
|
|
* @state: (out): return location for state
|
Port to GObject, can go back in gdk-pixbuf after setting up a
2000-12-16 Havoc Pennington <hp@pobox.com>
* gtk/gdk-pixbuf-loader.h, gtk/gdk-pixbuf-loader.c:
Port to GObject, can go back in gdk-pixbuf after setting up
a gdk-pixbuf-marshal.h header over there.
* gtk/gtktreeview.c: s/SEPERATOR/SEPARATOR/g;
(gtk_tree_view_class_init): specify GTK_TYPE_ADJUSTMENT for signal
args
(gtk_tree_view_init): don't unset GTK_NO_WINDOW, it shouldn't be
set
(gtk_tree_view_realize_buttons): don't gtk_widget_show() buttons
here, do it when we create the buttons later
(gtk_tree_view_realize_buttons): add some g_return_if_fail
(gtk_tree_view_map): paranoia checks that column->button is shown
and unmapped
(gtk_tree_view_size_request): only request visible children.
Move header size calculation in here, for cleanliness, and
to maintain invariants for child widgets if we eventually
let users set different children inside the buttons
(gtk_tree_view_map_buttons): factor out code to map buttons,
since it was being called several times
(gtk_tree_view_size_allocate_buttons): move_resize the drag
windows instead of just moving them; their height may change
if we allow random widgets in there, or the theme changes.
(gtk_tree_view_size_allocate): move button size allocation
above emitting the scroll signals, to ensure a sane state when we
hit user code
(gtk_tree_view_button_release): remove queue_resize after
tree_view_set_size(), set_size() will handle any resize queuing
that's needed
(gtk_tree_view_focus_in): just queue a draw, don't fool with
draw_focus goo
(gtk_tree_view_focus): use gtk_get_current_event() and
gdk_event_get_state()
(gtk_tree_view_deleted): don't queue_resize() after calling set_size()
(gtk_tree_view_build_tree): fix a "if (foo); {}" bug - i.e. remove
semicolon
(gtk_tree_view_create_button): show the button here
(gtk_tree_view_button_clicked): actually emit the clicked signal
on the column
(_gtk_tree_view_set_size): return right away if the size is
unchanged, as a cheesy optimization
(gtk_tree_view_setup_model): rename set_model_realized to
setup_model to match the flag that indicates whether we've
called it
(gtk_tree_view_get_hadjustment): create adjustment if it doesn't
exist, because set_scroll_adjustment does that and it shouldn't
matter what order you call these in
(gtk_tree_view_get_vadjustment): ditto
(gtk_tree_view_set_headers_visible): canonicalize the bool,
for paranoia
(gtk_tree_view_set_headers_visible): call
gtk_tree_view_map_buttons() instead of using cut-and-paste code
(gtk_tree_view_append_column): clarify whether the return value
is the count of columns before or after, and do the increment
separately from the return statement so you can tell from the code.
(gtk_tree_view_remove_column): ditto
(gtk_tree_view_insert_column): ditto
(gtk_tree_view_get_column): remove g_return_if_fail for columns
outside the existing range, the docs say that outside-range
columns are allowed, so we handle them as documented. (Presumably
this allows a nice loop with column != NULL as test.)
(gtk_tree_view_move_to): document what 0.0, 0.5, 1.0 alignments
mean (left/right/center etc.).
(gtk_tree_view_collapse_all): only queue a draw if we're mapped
(gtk_tree_view_expand_row): add docs
(gtk_tree_view_collapse_row): add docs
* gtk/gtktreeviewcolumn.c (gtk_tree_view_column_clicked): new
function to emit the clicked signal on a column
* gdk/gdkevents.c (gdk_event_get_state): new function, to get the
state of an event
(gdk_event_get_time): don't treat GDK_SCROLL
as a button event, remove default case from switch so gcc
will whine if we don't explicitly handle all event types
* gtk/gtktreeselection.h: added some FIXME
* gtk/gtktreeprivate.h (struct _GtkTreeViewPrivate): rename
"columns" to "n_columns" and "column" to "columns" for clarity
2000-12-17 23:50:00 +00:00
|
|
|
*
|
|
|
|
* If the event contains a "state" field, puts that field in @state. Otherwise
|
|
|
|
* stores an empty state (0). Returns %TRUE if there was a state field
|
2000-12-18 19:12:35 +00:00
|
|
|
* in the event. @event may be %NULL, in which case it's treated
|
|
|
|
* as if the event had no state field.
|
Port to GObject, can go back in gdk-pixbuf after setting up a
2000-12-16 Havoc Pennington <hp@pobox.com>
* gtk/gdk-pixbuf-loader.h, gtk/gdk-pixbuf-loader.c:
Port to GObject, can go back in gdk-pixbuf after setting up
a gdk-pixbuf-marshal.h header over there.
* gtk/gtktreeview.c: s/SEPERATOR/SEPARATOR/g;
(gtk_tree_view_class_init): specify GTK_TYPE_ADJUSTMENT for signal
args
(gtk_tree_view_init): don't unset GTK_NO_WINDOW, it shouldn't be
set
(gtk_tree_view_realize_buttons): don't gtk_widget_show() buttons
here, do it when we create the buttons later
(gtk_tree_view_realize_buttons): add some g_return_if_fail
(gtk_tree_view_map): paranoia checks that column->button is shown
and unmapped
(gtk_tree_view_size_request): only request visible children.
Move header size calculation in here, for cleanliness, and
to maintain invariants for child widgets if we eventually
let users set different children inside the buttons
(gtk_tree_view_map_buttons): factor out code to map buttons,
since it was being called several times
(gtk_tree_view_size_allocate_buttons): move_resize the drag
windows instead of just moving them; their height may change
if we allow random widgets in there, or the theme changes.
(gtk_tree_view_size_allocate): move button size allocation
above emitting the scroll signals, to ensure a sane state when we
hit user code
(gtk_tree_view_button_release): remove queue_resize after
tree_view_set_size(), set_size() will handle any resize queuing
that's needed
(gtk_tree_view_focus_in): just queue a draw, don't fool with
draw_focus goo
(gtk_tree_view_focus): use gtk_get_current_event() and
gdk_event_get_state()
(gtk_tree_view_deleted): don't queue_resize() after calling set_size()
(gtk_tree_view_build_tree): fix a "if (foo); {}" bug - i.e. remove
semicolon
(gtk_tree_view_create_button): show the button here
(gtk_tree_view_button_clicked): actually emit the clicked signal
on the column
(_gtk_tree_view_set_size): return right away if the size is
unchanged, as a cheesy optimization
(gtk_tree_view_setup_model): rename set_model_realized to
setup_model to match the flag that indicates whether we've
called it
(gtk_tree_view_get_hadjustment): create adjustment if it doesn't
exist, because set_scroll_adjustment does that and it shouldn't
matter what order you call these in
(gtk_tree_view_get_vadjustment): ditto
(gtk_tree_view_set_headers_visible): canonicalize the bool,
for paranoia
(gtk_tree_view_set_headers_visible): call
gtk_tree_view_map_buttons() instead of using cut-and-paste code
(gtk_tree_view_append_column): clarify whether the return value
is the count of columns before or after, and do the increment
separately from the return statement so you can tell from the code.
(gtk_tree_view_remove_column): ditto
(gtk_tree_view_insert_column): ditto
(gtk_tree_view_get_column): remove g_return_if_fail for columns
outside the existing range, the docs say that outside-range
columns are allowed, so we handle them as documented. (Presumably
this allows a nice loop with column != NULL as test.)
(gtk_tree_view_move_to): document what 0.0, 0.5, 1.0 alignments
mean (left/right/center etc.).
(gtk_tree_view_collapse_all): only queue a draw if we're mapped
(gtk_tree_view_expand_row): add docs
(gtk_tree_view_collapse_row): add docs
* gtk/gtktreeviewcolumn.c (gtk_tree_view_column_clicked): new
function to emit the clicked signal on a column
* gdk/gdkevents.c (gdk_event_get_state): new function, to get the
state of an event
(gdk_event_get_time): don't treat GDK_SCROLL
as a button event, remove default case from switch so gcc
will whine if we don't explicitly handle all event types
* gtk/gtktreeselection.h: added some FIXME
* gtk/gtktreeprivate.h (struct _GtkTreeViewPrivate): rename
"columns" to "n_columns" and "column" to "columns" for clarity
2000-12-17 23:50:00 +00:00
|
|
|
*
|
|
|
|
* Return value: %TRUE if there was a state field in the event
|
|
|
|
**/
|
|
|
|
gboolean
|
2008-01-15 15:32:37 +00:00
|
|
|
gdk_event_get_state (const GdkEvent *event,
|
|
|
|
GdkModifierType *state)
|
Port to GObject, can go back in gdk-pixbuf after setting up a
2000-12-16 Havoc Pennington <hp@pobox.com>
* gtk/gdk-pixbuf-loader.h, gtk/gdk-pixbuf-loader.c:
Port to GObject, can go back in gdk-pixbuf after setting up
a gdk-pixbuf-marshal.h header over there.
* gtk/gtktreeview.c: s/SEPERATOR/SEPARATOR/g;
(gtk_tree_view_class_init): specify GTK_TYPE_ADJUSTMENT for signal
args
(gtk_tree_view_init): don't unset GTK_NO_WINDOW, it shouldn't be
set
(gtk_tree_view_realize_buttons): don't gtk_widget_show() buttons
here, do it when we create the buttons later
(gtk_tree_view_realize_buttons): add some g_return_if_fail
(gtk_tree_view_map): paranoia checks that column->button is shown
and unmapped
(gtk_tree_view_size_request): only request visible children.
Move header size calculation in here, for cleanliness, and
to maintain invariants for child widgets if we eventually
let users set different children inside the buttons
(gtk_tree_view_map_buttons): factor out code to map buttons,
since it was being called several times
(gtk_tree_view_size_allocate_buttons): move_resize the drag
windows instead of just moving them; their height may change
if we allow random widgets in there, or the theme changes.
(gtk_tree_view_size_allocate): move button size allocation
above emitting the scroll signals, to ensure a sane state when we
hit user code
(gtk_tree_view_button_release): remove queue_resize after
tree_view_set_size(), set_size() will handle any resize queuing
that's needed
(gtk_tree_view_focus_in): just queue a draw, don't fool with
draw_focus goo
(gtk_tree_view_focus): use gtk_get_current_event() and
gdk_event_get_state()
(gtk_tree_view_deleted): don't queue_resize() after calling set_size()
(gtk_tree_view_build_tree): fix a "if (foo); {}" bug - i.e. remove
semicolon
(gtk_tree_view_create_button): show the button here
(gtk_tree_view_button_clicked): actually emit the clicked signal
on the column
(_gtk_tree_view_set_size): return right away if the size is
unchanged, as a cheesy optimization
(gtk_tree_view_setup_model): rename set_model_realized to
setup_model to match the flag that indicates whether we've
called it
(gtk_tree_view_get_hadjustment): create adjustment if it doesn't
exist, because set_scroll_adjustment does that and it shouldn't
matter what order you call these in
(gtk_tree_view_get_vadjustment): ditto
(gtk_tree_view_set_headers_visible): canonicalize the bool,
for paranoia
(gtk_tree_view_set_headers_visible): call
gtk_tree_view_map_buttons() instead of using cut-and-paste code
(gtk_tree_view_append_column): clarify whether the return value
is the count of columns before or after, and do the increment
separately from the return statement so you can tell from the code.
(gtk_tree_view_remove_column): ditto
(gtk_tree_view_insert_column): ditto
(gtk_tree_view_get_column): remove g_return_if_fail for columns
outside the existing range, the docs say that outside-range
columns are allowed, so we handle them as documented. (Presumably
this allows a nice loop with column != NULL as test.)
(gtk_tree_view_move_to): document what 0.0, 0.5, 1.0 alignments
mean (left/right/center etc.).
(gtk_tree_view_collapse_all): only queue a draw if we're mapped
(gtk_tree_view_expand_row): add docs
(gtk_tree_view_collapse_row): add docs
* gtk/gtktreeviewcolumn.c (gtk_tree_view_column_clicked): new
function to emit the clicked signal on a column
* gdk/gdkevents.c (gdk_event_get_state): new function, to get the
state of an event
(gdk_event_get_time): don't treat GDK_SCROLL
as a button event, remove default case from switch so gcc
will whine if we don't explicitly handle all event types
* gtk/gtktreeselection.h: added some FIXME
* gtk/gtktreeprivate.h (struct _GtkTreeViewPrivate): rename
"columns" to "n_columns" and "column" to "columns" for clarity
2000-12-17 23:50:00 +00:00
|
|
|
{
|
2000-12-18 19:12:35 +00:00
|
|
|
g_return_val_if_fail (state != NULL, FALSE);
|
|
|
|
|
Port to GObject, can go back in gdk-pixbuf after setting up a
2000-12-16 Havoc Pennington <hp@pobox.com>
* gtk/gdk-pixbuf-loader.h, gtk/gdk-pixbuf-loader.c:
Port to GObject, can go back in gdk-pixbuf after setting up
a gdk-pixbuf-marshal.h header over there.
* gtk/gtktreeview.c: s/SEPERATOR/SEPARATOR/g;
(gtk_tree_view_class_init): specify GTK_TYPE_ADJUSTMENT for signal
args
(gtk_tree_view_init): don't unset GTK_NO_WINDOW, it shouldn't be
set
(gtk_tree_view_realize_buttons): don't gtk_widget_show() buttons
here, do it when we create the buttons later
(gtk_tree_view_realize_buttons): add some g_return_if_fail
(gtk_tree_view_map): paranoia checks that column->button is shown
and unmapped
(gtk_tree_view_size_request): only request visible children.
Move header size calculation in here, for cleanliness, and
to maintain invariants for child widgets if we eventually
let users set different children inside the buttons
(gtk_tree_view_map_buttons): factor out code to map buttons,
since it was being called several times
(gtk_tree_view_size_allocate_buttons): move_resize the drag
windows instead of just moving them; their height may change
if we allow random widgets in there, or the theme changes.
(gtk_tree_view_size_allocate): move button size allocation
above emitting the scroll signals, to ensure a sane state when we
hit user code
(gtk_tree_view_button_release): remove queue_resize after
tree_view_set_size(), set_size() will handle any resize queuing
that's needed
(gtk_tree_view_focus_in): just queue a draw, don't fool with
draw_focus goo
(gtk_tree_view_focus): use gtk_get_current_event() and
gdk_event_get_state()
(gtk_tree_view_deleted): don't queue_resize() after calling set_size()
(gtk_tree_view_build_tree): fix a "if (foo); {}" bug - i.e. remove
semicolon
(gtk_tree_view_create_button): show the button here
(gtk_tree_view_button_clicked): actually emit the clicked signal
on the column
(_gtk_tree_view_set_size): return right away if the size is
unchanged, as a cheesy optimization
(gtk_tree_view_setup_model): rename set_model_realized to
setup_model to match the flag that indicates whether we've
called it
(gtk_tree_view_get_hadjustment): create adjustment if it doesn't
exist, because set_scroll_adjustment does that and it shouldn't
matter what order you call these in
(gtk_tree_view_get_vadjustment): ditto
(gtk_tree_view_set_headers_visible): canonicalize the bool,
for paranoia
(gtk_tree_view_set_headers_visible): call
gtk_tree_view_map_buttons() instead of using cut-and-paste code
(gtk_tree_view_append_column): clarify whether the return value
is the count of columns before or after, and do the increment
separately from the return statement so you can tell from the code.
(gtk_tree_view_remove_column): ditto
(gtk_tree_view_insert_column): ditto
(gtk_tree_view_get_column): remove g_return_if_fail for columns
outside the existing range, the docs say that outside-range
columns are allowed, so we handle them as documented. (Presumably
this allows a nice loop with column != NULL as test.)
(gtk_tree_view_move_to): document what 0.0, 0.5, 1.0 alignments
mean (left/right/center etc.).
(gtk_tree_view_collapse_all): only queue a draw if we're mapped
(gtk_tree_view_expand_row): add docs
(gtk_tree_view_collapse_row): add docs
* gtk/gtktreeviewcolumn.c (gtk_tree_view_column_clicked): new
function to emit the clicked signal on a column
* gdk/gdkevents.c (gdk_event_get_state): new function, to get the
state of an event
(gdk_event_get_time): don't treat GDK_SCROLL
as a button event, remove default case from switch so gcc
will whine if we don't explicitly handle all event types
* gtk/gtktreeselection.h: added some FIXME
* gtk/gtktreeprivate.h (struct _GtkTreeViewPrivate): rename
"columns" to "n_columns" and "column" to "columns" for clarity
2000-12-17 23:50:00 +00:00
|
|
|
if (event)
|
|
|
|
switch (event->type)
|
|
|
|
{
|
|
|
|
case GDK_MOTION_NOTIFY:
|
2000-12-18 19:12:35 +00:00
|
|
|
*state = event->motion.state;
|
|
|
|
return TRUE;
|
Port to GObject, can go back in gdk-pixbuf after setting up a
2000-12-16 Havoc Pennington <hp@pobox.com>
* gtk/gdk-pixbuf-loader.h, gtk/gdk-pixbuf-loader.c:
Port to GObject, can go back in gdk-pixbuf after setting up
a gdk-pixbuf-marshal.h header over there.
* gtk/gtktreeview.c: s/SEPERATOR/SEPARATOR/g;
(gtk_tree_view_class_init): specify GTK_TYPE_ADJUSTMENT for signal
args
(gtk_tree_view_init): don't unset GTK_NO_WINDOW, it shouldn't be
set
(gtk_tree_view_realize_buttons): don't gtk_widget_show() buttons
here, do it when we create the buttons later
(gtk_tree_view_realize_buttons): add some g_return_if_fail
(gtk_tree_view_map): paranoia checks that column->button is shown
and unmapped
(gtk_tree_view_size_request): only request visible children.
Move header size calculation in here, for cleanliness, and
to maintain invariants for child widgets if we eventually
let users set different children inside the buttons
(gtk_tree_view_map_buttons): factor out code to map buttons,
since it was being called several times
(gtk_tree_view_size_allocate_buttons): move_resize the drag
windows instead of just moving them; their height may change
if we allow random widgets in there, or the theme changes.
(gtk_tree_view_size_allocate): move button size allocation
above emitting the scroll signals, to ensure a sane state when we
hit user code
(gtk_tree_view_button_release): remove queue_resize after
tree_view_set_size(), set_size() will handle any resize queuing
that's needed
(gtk_tree_view_focus_in): just queue a draw, don't fool with
draw_focus goo
(gtk_tree_view_focus): use gtk_get_current_event() and
gdk_event_get_state()
(gtk_tree_view_deleted): don't queue_resize() after calling set_size()
(gtk_tree_view_build_tree): fix a "if (foo); {}" bug - i.e. remove
semicolon
(gtk_tree_view_create_button): show the button here
(gtk_tree_view_button_clicked): actually emit the clicked signal
on the column
(_gtk_tree_view_set_size): return right away if the size is
unchanged, as a cheesy optimization
(gtk_tree_view_setup_model): rename set_model_realized to
setup_model to match the flag that indicates whether we've
called it
(gtk_tree_view_get_hadjustment): create adjustment if it doesn't
exist, because set_scroll_adjustment does that and it shouldn't
matter what order you call these in
(gtk_tree_view_get_vadjustment): ditto
(gtk_tree_view_set_headers_visible): canonicalize the bool,
for paranoia
(gtk_tree_view_set_headers_visible): call
gtk_tree_view_map_buttons() instead of using cut-and-paste code
(gtk_tree_view_append_column): clarify whether the return value
is the count of columns before or after, and do the increment
separately from the return statement so you can tell from the code.
(gtk_tree_view_remove_column): ditto
(gtk_tree_view_insert_column): ditto
(gtk_tree_view_get_column): remove g_return_if_fail for columns
outside the existing range, the docs say that outside-range
columns are allowed, so we handle them as documented. (Presumably
this allows a nice loop with column != NULL as test.)
(gtk_tree_view_move_to): document what 0.0, 0.5, 1.0 alignments
mean (left/right/center etc.).
(gtk_tree_view_collapse_all): only queue a draw if we're mapped
(gtk_tree_view_expand_row): add docs
(gtk_tree_view_collapse_row): add docs
* gtk/gtktreeviewcolumn.c (gtk_tree_view_column_clicked): new
function to emit the clicked signal on a column
* gdk/gdkevents.c (gdk_event_get_state): new function, to get the
state of an event
(gdk_event_get_time): don't treat GDK_SCROLL
as a button event, remove default case from switch so gcc
will whine if we don't explicitly handle all event types
* gtk/gtktreeselection.h: added some FIXME
* gtk/gtktreeprivate.h (struct _GtkTreeViewPrivate): rename
"columns" to "n_columns" and "column" to "columns" for clarity
2000-12-17 23:50:00 +00:00
|
|
|
case GDK_BUTTON_PRESS:
|
|
|
|
case GDK_2BUTTON_PRESS:
|
|
|
|
case GDK_3BUTTON_PRESS:
|
|
|
|
case GDK_BUTTON_RELEASE:
|
2011-02-28 19:53:42 +00:00
|
|
|
*state = event->button.state;
|
|
|
|
return TRUE;
|
|
|
|
case GDK_TOUCH_BEGIN:
|
|
|
|
case GDK_TOUCH_UPDATE:
|
|
|
|
case GDK_TOUCH_END:
|
|
|
|
case GDK_TOUCH_CANCEL:
|
|
|
|
*state = event->touch.state;
|
2000-12-18 19:12:35 +00:00
|
|
|
return TRUE;
|
Port to GObject, can go back in gdk-pixbuf after setting up a
2000-12-16 Havoc Pennington <hp@pobox.com>
* gtk/gdk-pixbuf-loader.h, gtk/gdk-pixbuf-loader.c:
Port to GObject, can go back in gdk-pixbuf after setting up
a gdk-pixbuf-marshal.h header over there.
* gtk/gtktreeview.c: s/SEPERATOR/SEPARATOR/g;
(gtk_tree_view_class_init): specify GTK_TYPE_ADJUSTMENT for signal
args
(gtk_tree_view_init): don't unset GTK_NO_WINDOW, it shouldn't be
set
(gtk_tree_view_realize_buttons): don't gtk_widget_show() buttons
here, do it when we create the buttons later
(gtk_tree_view_realize_buttons): add some g_return_if_fail
(gtk_tree_view_map): paranoia checks that column->button is shown
and unmapped
(gtk_tree_view_size_request): only request visible children.
Move header size calculation in here, for cleanliness, and
to maintain invariants for child widgets if we eventually
let users set different children inside the buttons
(gtk_tree_view_map_buttons): factor out code to map buttons,
since it was being called several times
(gtk_tree_view_size_allocate_buttons): move_resize the drag
windows instead of just moving them; their height may change
if we allow random widgets in there, or the theme changes.
(gtk_tree_view_size_allocate): move button size allocation
above emitting the scroll signals, to ensure a sane state when we
hit user code
(gtk_tree_view_button_release): remove queue_resize after
tree_view_set_size(), set_size() will handle any resize queuing
that's needed
(gtk_tree_view_focus_in): just queue a draw, don't fool with
draw_focus goo
(gtk_tree_view_focus): use gtk_get_current_event() and
gdk_event_get_state()
(gtk_tree_view_deleted): don't queue_resize() after calling set_size()
(gtk_tree_view_build_tree): fix a "if (foo); {}" bug - i.e. remove
semicolon
(gtk_tree_view_create_button): show the button here
(gtk_tree_view_button_clicked): actually emit the clicked signal
on the column
(_gtk_tree_view_set_size): return right away if the size is
unchanged, as a cheesy optimization
(gtk_tree_view_setup_model): rename set_model_realized to
setup_model to match the flag that indicates whether we've
called it
(gtk_tree_view_get_hadjustment): create adjustment if it doesn't
exist, because set_scroll_adjustment does that and it shouldn't
matter what order you call these in
(gtk_tree_view_get_vadjustment): ditto
(gtk_tree_view_set_headers_visible): canonicalize the bool,
for paranoia
(gtk_tree_view_set_headers_visible): call
gtk_tree_view_map_buttons() instead of using cut-and-paste code
(gtk_tree_view_append_column): clarify whether the return value
is the count of columns before or after, and do the increment
separately from the return statement so you can tell from the code.
(gtk_tree_view_remove_column): ditto
(gtk_tree_view_insert_column): ditto
(gtk_tree_view_get_column): remove g_return_if_fail for columns
outside the existing range, the docs say that outside-range
columns are allowed, so we handle them as documented. (Presumably
this allows a nice loop with column != NULL as test.)
(gtk_tree_view_move_to): document what 0.0, 0.5, 1.0 alignments
mean (left/right/center etc.).
(gtk_tree_view_collapse_all): only queue a draw if we're mapped
(gtk_tree_view_expand_row): add docs
(gtk_tree_view_collapse_row): add docs
* gtk/gtktreeviewcolumn.c (gtk_tree_view_column_clicked): new
function to emit the clicked signal on a column
* gdk/gdkevents.c (gdk_event_get_state): new function, to get the
state of an event
(gdk_event_get_time): don't treat GDK_SCROLL
as a button event, remove default case from switch so gcc
will whine if we don't explicitly handle all event types
* gtk/gtktreeselection.h: added some FIXME
* gtk/gtktreeprivate.h (struct _GtkTreeViewPrivate): rename
"columns" to "n_columns" and "column" to "columns" for clarity
2000-12-17 23:50:00 +00:00
|
|
|
case GDK_SCROLL:
|
2000-12-18 19:12:35 +00:00
|
|
|
*state = event->scroll.state;
|
|
|
|
return TRUE;
|
Port to GObject, can go back in gdk-pixbuf after setting up a
2000-12-16 Havoc Pennington <hp@pobox.com>
* gtk/gdk-pixbuf-loader.h, gtk/gdk-pixbuf-loader.c:
Port to GObject, can go back in gdk-pixbuf after setting up
a gdk-pixbuf-marshal.h header over there.
* gtk/gtktreeview.c: s/SEPERATOR/SEPARATOR/g;
(gtk_tree_view_class_init): specify GTK_TYPE_ADJUSTMENT for signal
args
(gtk_tree_view_init): don't unset GTK_NO_WINDOW, it shouldn't be
set
(gtk_tree_view_realize_buttons): don't gtk_widget_show() buttons
here, do it when we create the buttons later
(gtk_tree_view_realize_buttons): add some g_return_if_fail
(gtk_tree_view_map): paranoia checks that column->button is shown
and unmapped
(gtk_tree_view_size_request): only request visible children.
Move header size calculation in here, for cleanliness, and
to maintain invariants for child widgets if we eventually
let users set different children inside the buttons
(gtk_tree_view_map_buttons): factor out code to map buttons,
since it was being called several times
(gtk_tree_view_size_allocate_buttons): move_resize the drag
windows instead of just moving them; their height may change
if we allow random widgets in there, or the theme changes.
(gtk_tree_view_size_allocate): move button size allocation
above emitting the scroll signals, to ensure a sane state when we
hit user code
(gtk_tree_view_button_release): remove queue_resize after
tree_view_set_size(), set_size() will handle any resize queuing
that's needed
(gtk_tree_view_focus_in): just queue a draw, don't fool with
draw_focus goo
(gtk_tree_view_focus): use gtk_get_current_event() and
gdk_event_get_state()
(gtk_tree_view_deleted): don't queue_resize() after calling set_size()
(gtk_tree_view_build_tree): fix a "if (foo); {}" bug - i.e. remove
semicolon
(gtk_tree_view_create_button): show the button here
(gtk_tree_view_button_clicked): actually emit the clicked signal
on the column
(_gtk_tree_view_set_size): return right away if the size is
unchanged, as a cheesy optimization
(gtk_tree_view_setup_model): rename set_model_realized to
setup_model to match the flag that indicates whether we've
called it
(gtk_tree_view_get_hadjustment): create adjustment if it doesn't
exist, because set_scroll_adjustment does that and it shouldn't
matter what order you call these in
(gtk_tree_view_get_vadjustment): ditto
(gtk_tree_view_set_headers_visible): canonicalize the bool,
for paranoia
(gtk_tree_view_set_headers_visible): call
gtk_tree_view_map_buttons() instead of using cut-and-paste code
(gtk_tree_view_append_column): clarify whether the return value
is the count of columns before or after, and do the increment
separately from the return statement so you can tell from the code.
(gtk_tree_view_remove_column): ditto
(gtk_tree_view_insert_column): ditto
(gtk_tree_view_get_column): remove g_return_if_fail for columns
outside the existing range, the docs say that outside-range
columns are allowed, so we handle them as documented. (Presumably
this allows a nice loop with column != NULL as test.)
(gtk_tree_view_move_to): document what 0.0, 0.5, 1.0 alignments
mean (left/right/center etc.).
(gtk_tree_view_collapse_all): only queue a draw if we're mapped
(gtk_tree_view_expand_row): add docs
(gtk_tree_view_collapse_row): add docs
* gtk/gtktreeviewcolumn.c (gtk_tree_view_column_clicked): new
function to emit the clicked signal on a column
* gdk/gdkevents.c (gdk_event_get_state): new function, to get the
state of an event
(gdk_event_get_time): don't treat GDK_SCROLL
as a button event, remove default case from switch so gcc
will whine if we don't explicitly handle all event types
* gtk/gtktreeselection.h: added some FIXME
* gtk/gtktreeprivate.h (struct _GtkTreeViewPrivate): rename
"columns" to "n_columns" and "column" to "columns" for clarity
2000-12-17 23:50:00 +00:00
|
|
|
case GDK_KEY_PRESS:
|
|
|
|
case GDK_KEY_RELEASE:
|
2000-12-18 19:12:35 +00:00
|
|
|
*state = event->key.state;
|
|
|
|
return TRUE;
|
Port to GObject, can go back in gdk-pixbuf after setting up a
2000-12-16 Havoc Pennington <hp@pobox.com>
* gtk/gdk-pixbuf-loader.h, gtk/gdk-pixbuf-loader.c:
Port to GObject, can go back in gdk-pixbuf after setting up
a gdk-pixbuf-marshal.h header over there.
* gtk/gtktreeview.c: s/SEPERATOR/SEPARATOR/g;
(gtk_tree_view_class_init): specify GTK_TYPE_ADJUSTMENT for signal
args
(gtk_tree_view_init): don't unset GTK_NO_WINDOW, it shouldn't be
set
(gtk_tree_view_realize_buttons): don't gtk_widget_show() buttons
here, do it when we create the buttons later
(gtk_tree_view_realize_buttons): add some g_return_if_fail
(gtk_tree_view_map): paranoia checks that column->button is shown
and unmapped
(gtk_tree_view_size_request): only request visible children.
Move header size calculation in here, for cleanliness, and
to maintain invariants for child widgets if we eventually
let users set different children inside the buttons
(gtk_tree_view_map_buttons): factor out code to map buttons,
since it was being called several times
(gtk_tree_view_size_allocate_buttons): move_resize the drag
windows instead of just moving them; their height may change
if we allow random widgets in there, or the theme changes.
(gtk_tree_view_size_allocate): move button size allocation
above emitting the scroll signals, to ensure a sane state when we
hit user code
(gtk_tree_view_button_release): remove queue_resize after
tree_view_set_size(), set_size() will handle any resize queuing
that's needed
(gtk_tree_view_focus_in): just queue a draw, don't fool with
draw_focus goo
(gtk_tree_view_focus): use gtk_get_current_event() and
gdk_event_get_state()
(gtk_tree_view_deleted): don't queue_resize() after calling set_size()
(gtk_tree_view_build_tree): fix a "if (foo); {}" bug - i.e. remove
semicolon
(gtk_tree_view_create_button): show the button here
(gtk_tree_view_button_clicked): actually emit the clicked signal
on the column
(_gtk_tree_view_set_size): return right away if the size is
unchanged, as a cheesy optimization
(gtk_tree_view_setup_model): rename set_model_realized to
setup_model to match the flag that indicates whether we've
called it
(gtk_tree_view_get_hadjustment): create adjustment if it doesn't
exist, because set_scroll_adjustment does that and it shouldn't
matter what order you call these in
(gtk_tree_view_get_vadjustment): ditto
(gtk_tree_view_set_headers_visible): canonicalize the bool,
for paranoia
(gtk_tree_view_set_headers_visible): call
gtk_tree_view_map_buttons() instead of using cut-and-paste code
(gtk_tree_view_append_column): clarify whether the return value
is the count of columns before or after, and do the increment
separately from the return statement so you can tell from the code.
(gtk_tree_view_remove_column): ditto
(gtk_tree_view_insert_column): ditto
(gtk_tree_view_get_column): remove g_return_if_fail for columns
outside the existing range, the docs say that outside-range
columns are allowed, so we handle them as documented. (Presumably
this allows a nice loop with column != NULL as test.)
(gtk_tree_view_move_to): document what 0.0, 0.5, 1.0 alignments
mean (left/right/center etc.).
(gtk_tree_view_collapse_all): only queue a draw if we're mapped
(gtk_tree_view_expand_row): add docs
(gtk_tree_view_collapse_row): add docs
* gtk/gtktreeviewcolumn.c (gtk_tree_view_column_clicked): new
function to emit the clicked signal on a column
* gdk/gdkevents.c (gdk_event_get_state): new function, to get the
state of an event
(gdk_event_get_time): don't treat GDK_SCROLL
as a button event, remove default case from switch so gcc
will whine if we don't explicitly handle all event types
* gtk/gtktreeselection.h: added some FIXME
* gtk/gtktreeprivate.h (struct _GtkTreeViewPrivate): rename
"columns" to "n_columns" and "column" to "columns" for clarity
2000-12-17 23:50:00 +00:00
|
|
|
case GDK_ENTER_NOTIFY:
|
|
|
|
case GDK_LEAVE_NOTIFY:
|
2000-12-18 19:12:35 +00:00
|
|
|
*state = event->crossing.state;
|
|
|
|
return TRUE;
|
Port to GObject, can go back in gdk-pixbuf after setting up a
2000-12-16 Havoc Pennington <hp@pobox.com>
* gtk/gdk-pixbuf-loader.h, gtk/gdk-pixbuf-loader.c:
Port to GObject, can go back in gdk-pixbuf after setting up
a gdk-pixbuf-marshal.h header over there.
* gtk/gtktreeview.c: s/SEPERATOR/SEPARATOR/g;
(gtk_tree_view_class_init): specify GTK_TYPE_ADJUSTMENT for signal
args
(gtk_tree_view_init): don't unset GTK_NO_WINDOW, it shouldn't be
set
(gtk_tree_view_realize_buttons): don't gtk_widget_show() buttons
here, do it when we create the buttons later
(gtk_tree_view_realize_buttons): add some g_return_if_fail
(gtk_tree_view_map): paranoia checks that column->button is shown
and unmapped
(gtk_tree_view_size_request): only request visible children.
Move header size calculation in here, for cleanliness, and
to maintain invariants for child widgets if we eventually
let users set different children inside the buttons
(gtk_tree_view_map_buttons): factor out code to map buttons,
since it was being called several times
(gtk_tree_view_size_allocate_buttons): move_resize the drag
windows instead of just moving them; their height may change
if we allow random widgets in there, or the theme changes.
(gtk_tree_view_size_allocate): move button size allocation
above emitting the scroll signals, to ensure a sane state when we
hit user code
(gtk_tree_view_button_release): remove queue_resize after
tree_view_set_size(), set_size() will handle any resize queuing
that's needed
(gtk_tree_view_focus_in): just queue a draw, don't fool with
draw_focus goo
(gtk_tree_view_focus): use gtk_get_current_event() and
gdk_event_get_state()
(gtk_tree_view_deleted): don't queue_resize() after calling set_size()
(gtk_tree_view_build_tree): fix a "if (foo); {}" bug - i.e. remove
semicolon
(gtk_tree_view_create_button): show the button here
(gtk_tree_view_button_clicked): actually emit the clicked signal
on the column
(_gtk_tree_view_set_size): return right away if the size is
unchanged, as a cheesy optimization
(gtk_tree_view_setup_model): rename set_model_realized to
setup_model to match the flag that indicates whether we've
called it
(gtk_tree_view_get_hadjustment): create adjustment if it doesn't
exist, because set_scroll_adjustment does that and it shouldn't
matter what order you call these in
(gtk_tree_view_get_vadjustment): ditto
(gtk_tree_view_set_headers_visible): canonicalize the bool,
for paranoia
(gtk_tree_view_set_headers_visible): call
gtk_tree_view_map_buttons() instead of using cut-and-paste code
(gtk_tree_view_append_column): clarify whether the return value
is the count of columns before or after, and do the increment
separately from the return statement so you can tell from the code.
(gtk_tree_view_remove_column): ditto
(gtk_tree_view_insert_column): ditto
(gtk_tree_view_get_column): remove g_return_if_fail for columns
outside the existing range, the docs say that outside-range
columns are allowed, so we handle them as documented. (Presumably
this allows a nice loop with column != NULL as test.)
(gtk_tree_view_move_to): document what 0.0, 0.5, 1.0 alignments
mean (left/right/center etc.).
(gtk_tree_view_collapse_all): only queue a draw if we're mapped
(gtk_tree_view_expand_row): add docs
(gtk_tree_view_collapse_row): add docs
* gtk/gtktreeviewcolumn.c (gtk_tree_view_column_clicked): new
function to emit the clicked signal on a column
* gdk/gdkevents.c (gdk_event_get_state): new function, to get the
state of an event
(gdk_event_get_time): don't treat GDK_SCROLL
as a button event, remove default case from switch so gcc
will whine if we don't explicitly handle all event types
* gtk/gtktreeselection.h: added some FIXME
* gtk/gtktreeprivate.h (struct _GtkTreeViewPrivate): rename
"columns" to "n_columns" and "column" to "columns" for clarity
2000-12-17 23:50:00 +00:00
|
|
|
case GDK_PROPERTY_NOTIFY:
|
|
|
|
case GDK_VISIBILITY_NOTIFY:
|
|
|
|
case GDK_CLIENT_EVENT:
|
|
|
|
case GDK_CONFIGURE:
|
|
|
|
case GDK_FOCUS_CHANGE:
|
|
|
|
case GDK_SELECTION_CLEAR:
|
|
|
|
case GDK_SELECTION_REQUEST:
|
|
|
|
case GDK_SELECTION_NOTIFY:
|
|
|
|
case GDK_PROXIMITY_IN:
|
|
|
|
case GDK_PROXIMITY_OUT:
|
Bug 318807 – Offscreen windows and window redirection.
2008-03-18 10:49:20 Tim Janik <timj@imendio.com>
* Applied pixmap redirection patch by Alexander Larsson with
various updates from:
Bug 318807 – Offscreen windows and window redirection.
Updates:
* updated docs to mention "Since 2.16".
* tests/testgtk.c: fixed snapshooting pixmap leak.
convert pixmap to pixbuf after snapshooting, to compensate for different
bit depths (occurs when snapshooting ARGB visuals and displaying the
pixmap in an RGB visual).
* gdk/gdkwindow.[hc]: made GdkWindowRedirect private.
* gdk/gdkwindow.c: removed damage idle handler, there's no aparent
need for it. enqueue damage notification as GDK_DAMAGE events
for each painting redirection at the start of the event queue.
consider windows with a redirection fully visible when invalidating,
and when updating from backing store. cleaned up stale variables.
* gdk/gdkevents.c: added _gdk_event_queue_prepend().
* gtk/gtkwidget.c: fixed coordinates for !NO_WINDOW widgets in
gtk_widget_get_snapshot; this fixes garbage snap offsets for gammacurve,
tree, drawingarea, text, handlebox, etc.
clip the redirected window hierarchy to window sizes, the visible
rectangles don't need to be taken into account here.
extended snapshooting docs to recommend gdk_pixbuf_get_from_drawable()
in case pixmap visuals could mismatch.
* gdk/x11/gdkwindow-x11.c: removed _gdk_windowing_window_get_visible_rect().
Base patch:
* tests/testgtk.c: add a "Snapshot" test to demonstrate snapshooting
of possibly obscured widgets into an offscreen pixmap.
* gtk/gtkwidget.[hc]: add GtkWidget::damage-event signal, add
gtk_widget_get_snapshot() to render a widget's contents to a GdkPixmap.
* gtk/gtkmain.c: dispatch GDK_DAMAGE events.
* gdk/gdkwindow.c: moved outer gdk_window_new() and gdk_window_reparent()
implementations here, adapted them to propagate redirects to child windows.
gdk_window_end_paint(): copy repainted window contents to redirection pixmap,
clipped to visible region. queue GDK_DAMAGE event delivery.
gdk_window_redirect_to_drawable(): install window painting redirection.
gdk_window_remove_redirection(): remove previously installed redirection.
* gdk/x11/gdkwindow-x11.c: added _gdk_windowing_window_get_visible_rect(),
renamed _gdk_window_new() and _gdk_window_reparent().
* gdk/gdkwindow.h: added GdkWindowRedirect* to GdkWindowObject, export
gdk_window_redirect_to_drawable() and gdk_window_remove_redirection().
* gdk/gdkevents.h: added GDK_DAMAGE event type.
* gdk/gdkevents.c: extract time and state from GDK_DAMAGE events.
* gdk/gdkinternals.h: added internal prototypes.
svn path=/trunk/; revision=20122
2008-05-21 19:04:24 +00:00
|
|
|
case GDK_DAMAGE:
|
Port to GObject, can go back in gdk-pixbuf after setting up a
2000-12-16 Havoc Pennington <hp@pobox.com>
* gtk/gdk-pixbuf-loader.h, gtk/gdk-pixbuf-loader.c:
Port to GObject, can go back in gdk-pixbuf after setting up
a gdk-pixbuf-marshal.h header over there.
* gtk/gtktreeview.c: s/SEPERATOR/SEPARATOR/g;
(gtk_tree_view_class_init): specify GTK_TYPE_ADJUSTMENT for signal
args
(gtk_tree_view_init): don't unset GTK_NO_WINDOW, it shouldn't be
set
(gtk_tree_view_realize_buttons): don't gtk_widget_show() buttons
here, do it when we create the buttons later
(gtk_tree_view_realize_buttons): add some g_return_if_fail
(gtk_tree_view_map): paranoia checks that column->button is shown
and unmapped
(gtk_tree_view_size_request): only request visible children.
Move header size calculation in here, for cleanliness, and
to maintain invariants for child widgets if we eventually
let users set different children inside the buttons
(gtk_tree_view_map_buttons): factor out code to map buttons,
since it was being called several times
(gtk_tree_view_size_allocate_buttons): move_resize the drag
windows instead of just moving them; their height may change
if we allow random widgets in there, or the theme changes.
(gtk_tree_view_size_allocate): move button size allocation
above emitting the scroll signals, to ensure a sane state when we
hit user code
(gtk_tree_view_button_release): remove queue_resize after
tree_view_set_size(), set_size() will handle any resize queuing
that's needed
(gtk_tree_view_focus_in): just queue a draw, don't fool with
draw_focus goo
(gtk_tree_view_focus): use gtk_get_current_event() and
gdk_event_get_state()
(gtk_tree_view_deleted): don't queue_resize() after calling set_size()
(gtk_tree_view_build_tree): fix a "if (foo); {}" bug - i.e. remove
semicolon
(gtk_tree_view_create_button): show the button here
(gtk_tree_view_button_clicked): actually emit the clicked signal
on the column
(_gtk_tree_view_set_size): return right away if the size is
unchanged, as a cheesy optimization
(gtk_tree_view_setup_model): rename set_model_realized to
setup_model to match the flag that indicates whether we've
called it
(gtk_tree_view_get_hadjustment): create adjustment if it doesn't
exist, because set_scroll_adjustment does that and it shouldn't
matter what order you call these in
(gtk_tree_view_get_vadjustment): ditto
(gtk_tree_view_set_headers_visible): canonicalize the bool,
for paranoia
(gtk_tree_view_set_headers_visible): call
gtk_tree_view_map_buttons() instead of using cut-and-paste code
(gtk_tree_view_append_column): clarify whether the return value
is the count of columns before or after, and do the increment
separately from the return statement so you can tell from the code.
(gtk_tree_view_remove_column): ditto
(gtk_tree_view_insert_column): ditto
(gtk_tree_view_get_column): remove g_return_if_fail for columns
outside the existing range, the docs say that outside-range
columns are allowed, so we handle them as documented. (Presumably
this allows a nice loop with column != NULL as test.)
(gtk_tree_view_move_to): document what 0.0, 0.5, 1.0 alignments
mean (left/right/center etc.).
(gtk_tree_view_collapse_all): only queue a draw if we're mapped
(gtk_tree_view_expand_row): add docs
(gtk_tree_view_collapse_row): add docs
* gtk/gtktreeviewcolumn.c (gtk_tree_view_column_clicked): new
function to emit the clicked signal on a column
* gdk/gdkevents.c (gdk_event_get_state): new function, to get the
state of an event
(gdk_event_get_time): don't treat GDK_SCROLL
as a button event, remove default case from switch so gcc
will whine if we don't explicitly handle all event types
* gtk/gtktreeselection.h: added some FIXME
* gtk/gtktreeprivate.h (struct _GtkTreeViewPrivate): rename
"columns" to "n_columns" and "column" to "columns" for clarity
2000-12-17 23:50:00 +00:00
|
|
|
case GDK_DRAG_ENTER:
|
|
|
|
case GDK_DRAG_LEAVE:
|
|
|
|
case GDK_DRAG_MOTION:
|
|
|
|
case GDK_DRAG_STATUS:
|
|
|
|
case GDK_DROP_START:
|
|
|
|
case GDK_DROP_FINISHED:
|
|
|
|
case GDK_NOTHING:
|
|
|
|
case GDK_DELETE:
|
|
|
|
case GDK_DESTROY:
|
|
|
|
case GDK_EXPOSE:
|
|
|
|
case GDK_MAP:
|
|
|
|
case GDK_UNMAP:
|
2001-02-27 20:40:15 +00:00
|
|
|
case GDK_WINDOW_STATE:
|
2001-04-02 23:33:47 +00:00
|
|
|
case GDK_SETTING:
|
2004-07-09 22:42:19 +00:00
|
|
|
case GDK_OWNER_CHANGE:
|
2005-06-26 07:06:13 +00:00
|
|
|
case GDK_GRAB_BROKEN:
|
2009-01-27 14:10:45 +00:00
|
|
|
case GDK_EVENT_LAST:
|
Port to GObject, can go back in gdk-pixbuf after setting up a
2000-12-16 Havoc Pennington <hp@pobox.com>
* gtk/gdk-pixbuf-loader.h, gtk/gdk-pixbuf-loader.c:
Port to GObject, can go back in gdk-pixbuf after setting up
a gdk-pixbuf-marshal.h header over there.
* gtk/gtktreeview.c: s/SEPERATOR/SEPARATOR/g;
(gtk_tree_view_class_init): specify GTK_TYPE_ADJUSTMENT for signal
args
(gtk_tree_view_init): don't unset GTK_NO_WINDOW, it shouldn't be
set
(gtk_tree_view_realize_buttons): don't gtk_widget_show() buttons
here, do it when we create the buttons later
(gtk_tree_view_realize_buttons): add some g_return_if_fail
(gtk_tree_view_map): paranoia checks that column->button is shown
and unmapped
(gtk_tree_view_size_request): only request visible children.
Move header size calculation in here, for cleanliness, and
to maintain invariants for child widgets if we eventually
let users set different children inside the buttons
(gtk_tree_view_map_buttons): factor out code to map buttons,
since it was being called several times
(gtk_tree_view_size_allocate_buttons): move_resize the drag
windows instead of just moving them; their height may change
if we allow random widgets in there, or the theme changes.
(gtk_tree_view_size_allocate): move button size allocation
above emitting the scroll signals, to ensure a sane state when we
hit user code
(gtk_tree_view_button_release): remove queue_resize after
tree_view_set_size(), set_size() will handle any resize queuing
that's needed
(gtk_tree_view_focus_in): just queue a draw, don't fool with
draw_focus goo
(gtk_tree_view_focus): use gtk_get_current_event() and
gdk_event_get_state()
(gtk_tree_view_deleted): don't queue_resize() after calling set_size()
(gtk_tree_view_build_tree): fix a "if (foo); {}" bug - i.e. remove
semicolon
(gtk_tree_view_create_button): show the button here
(gtk_tree_view_button_clicked): actually emit the clicked signal
on the column
(_gtk_tree_view_set_size): return right away if the size is
unchanged, as a cheesy optimization
(gtk_tree_view_setup_model): rename set_model_realized to
setup_model to match the flag that indicates whether we've
called it
(gtk_tree_view_get_hadjustment): create adjustment if it doesn't
exist, because set_scroll_adjustment does that and it shouldn't
matter what order you call these in
(gtk_tree_view_get_vadjustment): ditto
(gtk_tree_view_set_headers_visible): canonicalize the bool,
for paranoia
(gtk_tree_view_set_headers_visible): call
gtk_tree_view_map_buttons() instead of using cut-and-paste code
(gtk_tree_view_append_column): clarify whether the return value
is the count of columns before or after, and do the increment
separately from the return statement so you can tell from the code.
(gtk_tree_view_remove_column): ditto
(gtk_tree_view_insert_column): ditto
(gtk_tree_view_get_column): remove g_return_if_fail for columns
outside the existing range, the docs say that outside-range
columns are allowed, so we handle them as documented. (Presumably
this allows a nice loop with column != NULL as test.)
(gtk_tree_view_move_to): document what 0.0, 0.5, 1.0 alignments
mean (left/right/center etc.).
(gtk_tree_view_collapse_all): only queue a draw if we're mapped
(gtk_tree_view_expand_row): add docs
(gtk_tree_view_collapse_row): add docs
* gtk/gtktreeviewcolumn.c (gtk_tree_view_column_clicked): new
function to emit the clicked signal on a column
* gdk/gdkevents.c (gdk_event_get_state): new function, to get the
state of an event
(gdk_event_get_time): don't treat GDK_SCROLL
as a button event, remove default case from switch so gcc
will whine if we don't explicitly handle all event types
* gtk/gtktreeselection.h: added some FIXME
* gtk/gtktreeprivate.h (struct _GtkTreeViewPrivate): rename
"columns" to "n_columns" and "column" to "columns" for clarity
2000-12-17 23:50:00 +00:00
|
|
|
/* no state field */
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
|
2000-12-18 19:12:35 +00:00
|
|
|
*state = 0;
|
|
|
|
return FALSE;
|
Port to GObject, can go back in gdk-pixbuf after setting up a
2000-12-16 Havoc Pennington <hp@pobox.com>
* gtk/gdk-pixbuf-loader.h, gtk/gdk-pixbuf-loader.c:
Port to GObject, can go back in gdk-pixbuf after setting up
a gdk-pixbuf-marshal.h header over there.
* gtk/gtktreeview.c: s/SEPERATOR/SEPARATOR/g;
(gtk_tree_view_class_init): specify GTK_TYPE_ADJUSTMENT for signal
args
(gtk_tree_view_init): don't unset GTK_NO_WINDOW, it shouldn't be
set
(gtk_tree_view_realize_buttons): don't gtk_widget_show() buttons
here, do it when we create the buttons later
(gtk_tree_view_realize_buttons): add some g_return_if_fail
(gtk_tree_view_map): paranoia checks that column->button is shown
and unmapped
(gtk_tree_view_size_request): only request visible children.
Move header size calculation in here, for cleanliness, and
to maintain invariants for child widgets if we eventually
let users set different children inside the buttons
(gtk_tree_view_map_buttons): factor out code to map buttons,
since it was being called several times
(gtk_tree_view_size_allocate_buttons): move_resize the drag
windows instead of just moving them; their height may change
if we allow random widgets in there, or the theme changes.
(gtk_tree_view_size_allocate): move button size allocation
above emitting the scroll signals, to ensure a sane state when we
hit user code
(gtk_tree_view_button_release): remove queue_resize after
tree_view_set_size(), set_size() will handle any resize queuing
that's needed
(gtk_tree_view_focus_in): just queue a draw, don't fool with
draw_focus goo
(gtk_tree_view_focus): use gtk_get_current_event() and
gdk_event_get_state()
(gtk_tree_view_deleted): don't queue_resize() after calling set_size()
(gtk_tree_view_build_tree): fix a "if (foo); {}" bug - i.e. remove
semicolon
(gtk_tree_view_create_button): show the button here
(gtk_tree_view_button_clicked): actually emit the clicked signal
on the column
(_gtk_tree_view_set_size): return right away if the size is
unchanged, as a cheesy optimization
(gtk_tree_view_setup_model): rename set_model_realized to
setup_model to match the flag that indicates whether we've
called it
(gtk_tree_view_get_hadjustment): create adjustment if it doesn't
exist, because set_scroll_adjustment does that and it shouldn't
matter what order you call these in
(gtk_tree_view_get_vadjustment): ditto
(gtk_tree_view_set_headers_visible): canonicalize the bool,
for paranoia
(gtk_tree_view_set_headers_visible): call
gtk_tree_view_map_buttons() instead of using cut-and-paste code
(gtk_tree_view_append_column): clarify whether the return value
is the count of columns before or after, and do the increment
separately from the return statement so you can tell from the code.
(gtk_tree_view_remove_column): ditto
(gtk_tree_view_insert_column): ditto
(gtk_tree_view_get_column): remove g_return_if_fail for columns
outside the existing range, the docs say that outside-range
columns are allowed, so we handle them as documented. (Presumably
this allows a nice loop with column != NULL as test.)
(gtk_tree_view_move_to): document what 0.0, 0.5, 1.0 alignments
mean (left/right/center etc.).
(gtk_tree_view_collapse_all): only queue a draw if we're mapped
(gtk_tree_view_expand_row): add docs
(gtk_tree_view_collapse_row): add docs
* gtk/gtktreeviewcolumn.c (gtk_tree_view_column_clicked): new
function to emit the clicked signal on a column
* gdk/gdkevents.c (gdk_event_get_state): new function, to get the
state of an event
(gdk_event_get_time): don't treat GDK_SCROLL
as a button event, remove default case from switch so gcc
will whine if we don't explicitly handle all event types
* gtk/gtktreeselection.h: added some FIXME
* gtk/gtktreeprivate.h (struct _GtkTreeViewPrivate): rename
"columns" to "n_columns" and "column" to "columns" for clarity
2000-12-17 23:50:00 +00:00
|
|
|
}
|
|
|
|
|
2001-06-28 22:49:20 +00:00
|
|
|
/**
|
|
|
|
* gdk_event_get_coords:
|
|
|
|
* @event: a #GdkEvent
|
2010-06-07 21:47:14 +00:00
|
|
|
* @x_win: (out): location to put event window x coordinate
|
|
|
|
* @y_win: (out): location to put event window y coordinate
|
2001-06-28 22:49:20 +00:00
|
|
|
*
|
|
|
|
* Extract the event window relative x/y coordinates from an event.
|
|
|
|
*
|
|
|
|
* Return value: %TRUE if the event delivered event window coordinates
|
|
|
|
**/
|
|
|
|
gboolean
|
2008-01-15 15:32:37 +00:00
|
|
|
gdk_event_get_coords (const GdkEvent *event,
|
|
|
|
gdouble *x_win,
|
|
|
|
gdouble *y_win)
|
2001-06-28 22:49:20 +00:00
|
|
|
{
|
|
|
|
gdouble x = 0, y = 0;
|
|
|
|
gboolean fetched = TRUE;
|
|
|
|
|
|
|
|
g_return_val_if_fail (event != NULL, FALSE);
|
|
|
|
|
|
|
|
switch (event->type)
|
|
|
|
{
|
|
|
|
case GDK_CONFIGURE:
|
|
|
|
x = event->configure.x;
|
|
|
|
y = event->configure.y;
|
|
|
|
break;
|
|
|
|
case GDK_ENTER_NOTIFY:
|
|
|
|
case GDK_LEAVE_NOTIFY:
|
|
|
|
x = event->crossing.x;
|
|
|
|
y = event->crossing.y;
|
|
|
|
break;
|
|
|
|
case GDK_SCROLL:
|
|
|
|
x = event->scroll.x;
|
|
|
|
y = event->scroll.y;
|
|
|
|
break;
|
|
|
|
case GDK_BUTTON_PRESS:
|
|
|
|
case GDK_2BUTTON_PRESS:
|
|
|
|
case GDK_3BUTTON_PRESS:
|
|
|
|
case GDK_BUTTON_RELEASE:
|
|
|
|
x = event->button.x;
|
|
|
|
y = event->button.y;
|
|
|
|
break;
|
2011-02-28 19:53:42 +00:00
|
|
|
case GDK_TOUCH_BEGIN:
|
|
|
|
case GDK_TOUCH_UPDATE:
|
|
|
|
case GDK_TOUCH_END:
|
|
|
|
case GDK_TOUCH_CANCEL:
|
|
|
|
x = event->touch.x;
|
|
|
|
y = event->touch.y;
|
|
|
|
break;
|
2001-06-28 22:49:20 +00:00
|
|
|
case GDK_MOTION_NOTIFY:
|
|
|
|
x = event->motion.x;
|
|
|
|
y = event->motion.y;
|
|
|
|
break;
|
|
|
|
default:
|
|
|
|
fetched = FALSE;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
|
|
|
|
if (x_win)
|
|
|
|
*x_win = x;
|
|
|
|
if (y_win)
|
2001-11-24 00:24:18 +00:00
|
|
|
*y_win = y;
|
2001-06-28 22:49:20 +00:00
|
|
|
|
|
|
|
return fetched;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* gdk_event_get_root_coords:
|
|
|
|
* @event: a #GdkEvent
|
2010-06-07 21:47:14 +00:00
|
|
|
* @x_root: (out): location to put root window x coordinate
|
|
|
|
* @y_root: (out): location to put root window y coordinate
|
2001-06-28 22:49:20 +00:00
|
|
|
*
|
|
|
|
* Extract the root window relative x/y coordinates from an event.
|
|
|
|
*
|
|
|
|
* Return value: %TRUE if the event delivered root window coordinates
|
|
|
|
**/
|
|
|
|
gboolean
|
2008-01-15 15:32:37 +00:00
|
|
|
gdk_event_get_root_coords (const GdkEvent *event,
|
|
|
|
gdouble *x_root,
|
|
|
|
gdouble *y_root)
|
2001-06-28 22:49:20 +00:00
|
|
|
{
|
|
|
|
gdouble x = 0, y = 0;
|
|
|
|
gboolean fetched = TRUE;
|
|
|
|
|
|
|
|
g_return_val_if_fail (event != NULL, FALSE);
|
|
|
|
|
|
|
|
switch (event->type)
|
|
|
|
{
|
|
|
|
case GDK_MOTION_NOTIFY:
|
|
|
|
x = event->motion.x_root;
|
|
|
|
y = event->motion.y_root;
|
|
|
|
break;
|
2004-11-23 03:58:59 +00:00
|
|
|
case GDK_SCROLL:
|
|
|
|
x = event->scroll.x_root;
|
|
|
|
y = event->scroll.y_root;
|
|
|
|
break;
|
2001-06-28 22:49:20 +00:00
|
|
|
case GDK_BUTTON_PRESS:
|
|
|
|
case GDK_2BUTTON_PRESS:
|
|
|
|
case GDK_3BUTTON_PRESS:
|
|
|
|
case GDK_BUTTON_RELEASE:
|
|
|
|
x = event->button.x_root;
|
|
|
|
y = event->button.y_root;
|
|
|
|
break;
|
2011-02-28 19:53:42 +00:00
|
|
|
case GDK_TOUCH_BEGIN:
|
|
|
|
case GDK_TOUCH_UPDATE:
|
|
|
|
case GDK_TOUCH_END:
|
|
|
|
case GDK_TOUCH_CANCEL:
|
|
|
|
x = event->touch.x_root;
|
|
|
|
y = event->touch.y_root;
|
|
|
|
break;
|
2001-06-28 22:49:20 +00:00
|
|
|
case GDK_ENTER_NOTIFY:
|
|
|
|
case GDK_LEAVE_NOTIFY:
|
|
|
|
x = event->crossing.x_root;
|
|
|
|
y = event->crossing.y_root;
|
|
|
|
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:
|
|
|
|
x = event->dnd.x_root;
|
|
|
|
y = event->dnd.y_root;
|
|
|
|
break;
|
|
|
|
default:
|
|
|
|
fetched = FALSE;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
|
|
|
|
if (x_root)
|
|
|
|
*x_root = x;
|
|
|
|
if (y_root)
|
2002-03-22 17:47:51 +00:00
|
|
|
*y_root = y;
|
2001-06-28 22:49:20 +00:00
|
|
|
|
|
|
|
return fetched;
|
|
|
|
}
|
|
|
|
|
2011-08-28 19:26:47 +00:00
|
|
|
/**
|
|
|
|
* gdk_event_get_button:
|
|
|
|
* @event: a #GdkEvent
|
|
|
|
* @button: (out): location to store mouse button number
|
|
|
|
*
|
|
|
|
* Extract the button number from an event.
|
|
|
|
*
|
|
|
|
* Return value: %TRUE if the event delivered a button number
|
|
|
|
*
|
|
|
|
* Since: 3.2
|
|
|
|
**/
|
|
|
|
gboolean
|
|
|
|
gdk_event_get_button (const GdkEvent *event,
|
|
|
|
guint *button)
|
|
|
|
{
|
|
|
|
gboolean fetched = TRUE;
|
|
|
|
guint number = 0;
|
|
|
|
|
|
|
|
g_return_val_if_fail (event != NULL, FALSE);
|
|
|
|
|
|
|
|
switch (event->type)
|
|
|
|
{
|
|
|
|
case GDK_BUTTON_PRESS:
|
|
|
|
case GDK_2BUTTON_PRESS:
|
|
|
|
case GDK_3BUTTON_PRESS:
|
|
|
|
case GDK_BUTTON_RELEASE:
|
|
|
|
number = event->button.button;
|
|
|
|
break;
|
|
|
|
default:
|
|
|
|
fetched = FALSE;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
|
|
|
|
if (button)
|
|
|
|
*button = number;
|
|
|
|
|
|
|
|
return fetched;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* gdk_event_get_click_count:
|
|
|
|
* @event: a #GdkEvent
|
|
|
|
* @click_count: (out): location to store click count
|
|
|
|
*
|
|
|
|
* Extracts the click count from an event.
|
|
|
|
*
|
|
|
|
* Return value: %TRUE if the event delivered a click count
|
|
|
|
*
|
|
|
|
* Since: 3.2
|
|
|
|
*/
|
|
|
|
gboolean
|
|
|
|
gdk_event_get_click_count (const GdkEvent *event,
|
|
|
|
guint *click_count)
|
|
|
|
{
|
|
|
|
gboolean fetched = TRUE;
|
|
|
|
guint number = 0;
|
|
|
|
|
|
|
|
g_return_val_if_fail (event != NULL, FALSE);
|
|
|
|
|
|
|
|
switch (event->type)
|
|
|
|
{
|
|
|
|
case GDK_BUTTON_PRESS:
|
|
|
|
case GDK_BUTTON_RELEASE:
|
|
|
|
number = 1;
|
|
|
|
break;
|
|
|
|
case GDK_2BUTTON_PRESS:
|
|
|
|
number = 2;
|
|
|
|
break;
|
|
|
|
case GDK_3BUTTON_PRESS:
|
|
|
|
number = 3;
|
|
|
|
break;
|
|
|
|
default:
|
|
|
|
fetched = FALSE;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
|
|
|
|
if (click_count)
|
|
|
|
*click_count = number;
|
|
|
|
|
|
|
|
return fetched;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* gdk_event_get_keyval:
|
|
|
|
* @event: a #GdkEvent
|
|
|
|
* @keyval: (out): location to store the keyval
|
|
|
|
*
|
|
|
|
* Extracts the keyval from an event.
|
|
|
|
*
|
|
|
|
* Return value: %TRUE if the event delivered a key symbol
|
|
|
|
*
|
|
|
|
* Since: 3.2
|
|
|
|
*/
|
|
|
|
gboolean
|
|
|
|
gdk_event_get_keyval (const GdkEvent *event,
|
|
|
|
guint *keyval)
|
|
|
|
{
|
|
|
|
gboolean fetched = TRUE;
|
|
|
|
guint number = 0;
|
|
|
|
|
|
|
|
switch (event->type)
|
|
|
|
{
|
|
|
|
case GDK_KEY_PRESS:
|
|
|
|
case GDK_KEY_RELEASE:
|
|
|
|
number = event->key.keyval;
|
|
|
|
break;
|
|
|
|
default:
|
|
|
|
fetched = FALSE;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
|
|
|
|
if (keyval)
|
|
|
|
*keyval = number;
|
|
|
|
|
|
|
|
return fetched;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* gdk_event_get_keycode:
|
|
|
|
* @event: a #GdkEvent
|
|
|
|
* @keycode: (out): location to store the keycode
|
|
|
|
*
|
|
|
|
* Extracts the hardware keycode from an event.
|
|
|
|
*
|
|
|
|
* Return value: %TRUE if the event delivered a hardware keycode
|
|
|
|
*
|
|
|
|
* Since: 3.2
|
|
|
|
*/
|
|
|
|
gboolean
|
|
|
|
gdk_event_get_keycode (const GdkEvent *event,
|
|
|
|
guint16 *keycode)
|
|
|
|
{
|
|
|
|
gboolean fetched = TRUE;
|
|
|
|
guint16 number = 0;
|
|
|
|
|
|
|
|
switch (event->type)
|
|
|
|
{
|
|
|
|
case GDK_KEY_PRESS:
|
|
|
|
case GDK_KEY_RELEASE:
|
|
|
|
number = event->key.hardware_keycode;
|
|
|
|
break;
|
|
|
|
default:
|
|
|
|
fetched = FALSE;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
|
|
|
|
if (keycode)
|
|
|
|
*keycode = number;
|
|
|
|
|
|
|
|
return fetched;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* gdk_event_get_scroll_direction:
|
|
|
|
* @event: a #GdkEvent
|
|
|
|
* @direction: (out): location to store the scroll direction
|
|
|
|
*
|
|
|
|
* Extracts the scroll direction from an event.
|
|
|
|
*
|
|
|
|
* Return value: %TRUE if the event delivered a scroll direction
|
|
|
|
*
|
|
|
|
* Since: 3.2
|
|
|
|
*/
|
|
|
|
gboolean
|
|
|
|
gdk_event_get_scroll_direction (const GdkEvent *event,
|
|
|
|
GdkScrollDirection *direction)
|
|
|
|
{
|
|
|
|
gboolean fetched = TRUE;
|
|
|
|
GdkScrollDirection dir = 0;
|
|
|
|
|
|
|
|
switch (event->type)
|
|
|
|
{
|
|
|
|
case GDK_SCROLL:
|
2012-01-23 22:51:24 +00:00
|
|
|
if (event->scroll.direction == GDK_SCROLL_SMOOTH)
|
|
|
|
fetched = FALSE;
|
|
|
|
else
|
|
|
|
dir = event->scroll.direction;
|
2011-08-28 19:26:47 +00:00
|
|
|
break;
|
|
|
|
default:
|
|
|
|
fetched = FALSE;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
|
|
|
|
if (direction)
|
|
|
|
*direction = dir;
|
|
|
|
|
|
|
|
return fetched;
|
|
|
|
}
|
|
|
|
|
2012-01-23 22:37:44 +00:00
|
|
|
/**
|
|
|
|
* gdk_event_get_scroll_deltas:
|
|
|
|
* @event: a #GdkEvent
|
2012-06-09 21:45:23 +00:00
|
|
|
* @delta_x: (out): return location for X delta
|
|
|
|
* @delta_y: (out): return location for Y delta
|
2012-01-23 22:37:44 +00:00
|
|
|
*
|
|
|
|
* Retrieves the scroll deltas from a #GdkEvent
|
|
|
|
*
|
|
|
|
* Returns: %TRUE if the event contains smooth scroll information
|
|
|
|
*
|
|
|
|
* Since: 3.4
|
|
|
|
**/
|
|
|
|
gboolean
|
|
|
|
gdk_event_get_scroll_deltas (const GdkEvent *event,
|
|
|
|
gdouble *delta_x,
|
|
|
|
gdouble *delta_y)
|
|
|
|
{
|
|
|
|
gboolean fetched = TRUE;
|
|
|
|
gdouble dx = 0.0;
|
|
|
|
gdouble dy = 0.0;
|
|
|
|
|
|
|
|
switch (event->type)
|
|
|
|
{
|
|
|
|
case GDK_SCROLL:
|
|
|
|
if (event->scroll.direction == GDK_SCROLL_SMOOTH)
|
|
|
|
{
|
|
|
|
dx = event->scroll.delta_x;
|
|
|
|
dy = event->scroll.delta_y;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
fetched = FALSE;
|
|
|
|
break;
|
|
|
|
default:
|
|
|
|
fetched = FALSE;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
|
|
|
|
if (delta_x)
|
|
|
|
*delta_x = dx;
|
|
|
|
|
|
|
|
if (delta_y)
|
|
|
|
*delta_y = dy;
|
|
|
|
|
|
|
|
return fetched;
|
|
|
|
}
|
|
|
|
|
2000-07-03 19:00:23 +00:00
|
|
|
/**
|
|
|
|
* gdk_event_get_axis:
|
|
|
|
* @event: a #GdkEvent
|
2011-01-18 09:10:30 +00:00
|
|
|
* @axis_use: the axis use to look for
|
2010-06-07 21:47:14 +00:00
|
|
|
* @value: (out): location to store the value found
|
2000-07-03 19:00:23 +00:00
|
|
|
*
|
|
|
|
* Extract the axis value for a particular axis use from
|
|
|
|
* an event structure.
|
|
|
|
*
|
|
|
|
* Return value: %TRUE if the specified axis was found, otherwise %FALSE
|
|
|
|
**/
|
|
|
|
gboolean
|
2008-01-15 15:32:37 +00:00
|
|
|
gdk_event_get_axis (const GdkEvent *event,
|
|
|
|
GdkAxisUse axis_use,
|
|
|
|
gdouble *value)
|
2000-07-03 19:00:23 +00:00
|
|
|
{
|
|
|
|
gdouble *axes;
|
|
|
|
GdkDevice *device;
|
|
|
|
|
|
|
|
g_return_val_if_fail (event != NULL, FALSE);
|
|
|
|
|
|
|
|
if (axis_use == GDK_AXIS_X || axis_use == GDK_AXIS_Y)
|
|
|
|
{
|
|
|
|
gdouble x, y;
|
|
|
|
|
|
|
|
switch (event->type)
|
|
|
|
{
|
2011-02-28 19:53:42 +00:00
|
|
|
case GDK_MOTION_NOTIFY:
|
2000-07-03 19:00:23 +00:00
|
|
|
x = event->motion.x;
|
|
|
|
y = event->motion.y;
|
|
|
|
break;
|
|
|
|
case GDK_SCROLL:
|
|
|
|
x = event->scroll.x;
|
|
|
|
y = event->scroll.y;
|
|
|
|
break;
|
|
|
|
case GDK_BUTTON_PRESS:
|
|
|
|
case GDK_BUTTON_RELEASE:
|
|
|
|
x = event->button.x;
|
|
|
|
y = event->button.y;
|
|
|
|
break;
|
2011-02-28 19:53:42 +00:00
|
|
|
case GDK_TOUCH_BEGIN:
|
|
|
|
case GDK_TOUCH_UPDATE:
|
|
|
|
case GDK_TOUCH_END:
|
|
|
|
case GDK_TOUCH_CANCEL:
|
|
|
|
x = event->touch.x;
|
|
|
|
y = event->touch.y;
|
|
|
|
break;
|
2000-07-03 19:00:23 +00:00
|
|
|
case GDK_ENTER_NOTIFY:
|
|
|
|
case GDK_LEAVE_NOTIFY:
|
|
|
|
x = event->crossing.x;
|
|
|
|
y = event->crossing.y;
|
|
|
|
break;
|
|
|
|
|
|
|
|
default:
|
|
|
|
return FALSE;
|
|
|
|
}
|
|
|
|
|
|
|
|
if (axis_use == GDK_AXIS_X && value)
|
|
|
|
*value = x;
|
|
|
|
if (axis_use == GDK_AXIS_Y && value)
|
|
|
|
*value = y;
|
|
|
|
|
|
|
|
return TRUE;
|
|
|
|
}
|
|
|
|
else if (event->type == GDK_BUTTON_PRESS ||
|
|
|
|
event->type == GDK_BUTTON_RELEASE)
|
|
|
|
{
|
|
|
|
device = event->button.device;
|
|
|
|
axes = event->button.axes;
|
|
|
|
}
|
2011-02-28 19:53:42 +00:00
|
|
|
else if (event->type == GDK_TOUCH_BEGIN ||
|
|
|
|
event->type == GDK_TOUCH_UPDATE ||
|
|
|
|
event->type == GDK_TOUCH_END ||
|
|
|
|
event->type == GDK_TOUCH_CANCEL)
|
|
|
|
{
|
|
|
|
device = event->touch.device;
|
|
|
|
axes = event->touch.axes;
|
|
|
|
}
|
2000-07-03 19:00:23 +00:00
|
|
|
else if (event->type == GDK_MOTION_NOTIFY)
|
|
|
|
{
|
|
|
|
device = event->motion.device;
|
|
|
|
axes = event->motion.axes;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
return FALSE;
|
|
|
|
|
|
|
|
return gdk_device_get_axis (device, axes, axis_use, value);
|
|
|
|
}
|
|
|
|
|
2010-05-25 22:38:44 +00:00
|
|
|
/**
|
|
|
|
* gdk_event_set_device:
|
|
|
|
* @event: a #GdkEvent
|
|
|
|
* @device: a #GdkDevice
|
|
|
|
*
|
|
|
|
* Sets the device for @event to @device. The event must
|
|
|
|
* have been allocated by GTK+, for instance, by
|
|
|
|
* gdk_event_copy().
|
|
|
|
*
|
|
|
|
* Since: 3.0
|
|
|
|
**/
|
|
|
|
void
|
|
|
|
gdk_event_set_device (GdkEvent *event,
|
|
|
|
GdkDevice *device)
|
|
|
|
{
|
|
|
|
GdkEventPrivate *private;
|
|
|
|
|
|
|
|
g_return_if_fail (gdk_event_is_allocated (event));
|
|
|
|
|
|
|
|
private = (GdkEventPrivate *) event;
|
|
|
|
|
|
|
|
private->device = device;
|
|
|
|
|
|
|
|
switch (event->type)
|
|
|
|
{
|
|
|
|
case GDK_MOTION_NOTIFY:
|
|
|
|
event->motion.device = device;
|
|
|
|
break;
|
|
|
|
case GDK_BUTTON_PRESS:
|
|
|
|
case GDK_2BUTTON_PRESS:
|
|
|
|
case GDK_3BUTTON_PRESS:
|
|
|
|
case GDK_BUTTON_RELEASE:
|
|
|
|
event->button.device = device;
|
|
|
|
break;
|
2011-02-28 19:53:42 +00:00
|
|
|
case GDK_TOUCH_BEGIN:
|
|
|
|
case GDK_TOUCH_UPDATE:
|
|
|
|
case GDK_TOUCH_END:
|
|
|
|
case GDK_TOUCH_CANCEL:
|
|
|
|
event->touch.device = device;
|
|
|
|
break;
|
2010-05-25 22:38:44 +00:00
|
|
|
case GDK_SCROLL:
|
|
|
|
event->scroll.device = device;
|
|
|
|
break;
|
|
|
|
case GDK_PROXIMITY_IN:
|
|
|
|
case GDK_PROXIMITY_OUT:
|
|
|
|
event->proximity.device = device;
|
|
|
|
break;
|
|
|
|
default:
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* gdk_event_get_device:
|
|
|
|
* @event: a #GdkEvent.
|
|
|
|
*
|
|
|
|
* If the event contains a "device" field, this function will return
|
|
|
|
* it, else it will return %NULL.
|
|
|
|
*
|
2010-09-21 04:18:11 +00:00
|
|
|
* Returns: (transfer none): a #GdkDevice, or %NULL.
|
2010-05-25 22:38:44 +00:00
|
|
|
*
|
|
|
|
* Since: 3.0
|
|
|
|
**/
|
|
|
|
GdkDevice *
|
|
|
|
gdk_event_get_device (const GdkEvent *event)
|
|
|
|
{
|
|
|
|
g_return_val_if_fail (event != NULL, NULL);
|
|
|
|
|
|
|
|
if (gdk_event_is_allocated (event))
|
|
|
|
{
|
|
|
|
GdkEventPrivate *private = (GdkEventPrivate *) event;
|
|
|
|
|
|
|
|
if (private->device)
|
|
|
|
return private->device;
|
|
|
|
}
|
|
|
|
|
|
|
|
switch (event->type)
|
|
|
|
{
|
|
|
|
case GDK_MOTION_NOTIFY:
|
|
|
|
return event->motion.device;
|
|
|
|
case GDK_BUTTON_PRESS:
|
|
|
|
case GDK_2BUTTON_PRESS:
|
|
|
|
case GDK_3BUTTON_PRESS:
|
|
|
|
case GDK_BUTTON_RELEASE:
|
|
|
|
return event->button.device;
|
2011-02-28 19:53:42 +00:00
|
|
|
case GDK_TOUCH_BEGIN:
|
|
|
|
case GDK_TOUCH_UPDATE:
|
|
|
|
case GDK_TOUCH_END:
|
|
|
|
case GDK_TOUCH_CANCEL:
|
|
|
|
return event->touch.device;
|
2010-05-25 22:38:44 +00:00
|
|
|
case GDK_SCROLL:
|
|
|
|
return event->scroll.device;
|
|
|
|
case GDK_PROXIMITY_IN:
|
|
|
|
case GDK_PROXIMITY_OUT:
|
|
|
|
return event->proximity.device;
|
2010-06-04 15:06:57 +00:00
|
|
|
default:
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
|
|
|
|
/* Fallback if event has no device set */
|
|
|
|
switch (event->type)
|
|
|
|
{
|
|
|
|
case GDK_MOTION_NOTIFY:
|
|
|
|
case GDK_BUTTON_PRESS:
|
|
|
|
case GDK_2BUTTON_PRESS:
|
|
|
|
case GDK_3BUTTON_PRESS:
|
|
|
|
case GDK_BUTTON_RELEASE:
|
2011-02-28 19:53:42 +00:00
|
|
|
case GDK_TOUCH_BEGIN:
|
|
|
|
case GDK_TOUCH_UPDATE:
|
|
|
|
case GDK_TOUCH_END:
|
|
|
|
case GDK_TOUCH_CANCEL:
|
2010-06-04 15:06:57 +00:00
|
|
|
case GDK_ENTER_NOTIFY:
|
|
|
|
case GDK_LEAVE_NOTIFY:
|
|
|
|
case GDK_FOCUS_CHANGE:
|
|
|
|
case GDK_PROXIMITY_IN:
|
|
|
|
case GDK_PROXIMITY_OUT:
|
|
|
|
case GDK_DRAG_ENTER:
|
|
|
|
case GDK_DRAG_LEAVE:
|
|
|
|
case GDK_DRAG_MOTION:
|
|
|
|
case GDK_DRAG_STATUS:
|
|
|
|
case GDK_DROP_START:
|
|
|
|
case GDK_DROP_FINISHED:
|
|
|
|
case GDK_SCROLL:
|
|
|
|
case GDK_GRAB_BROKEN:
|
|
|
|
case GDK_KEY_PRESS:
|
|
|
|
case GDK_KEY_RELEASE:
|
|
|
|
{
|
|
|
|
GdkDisplay *display;
|
2010-10-28 21:01:16 +00:00
|
|
|
GdkDeviceManager *device_manager;
|
|
|
|
GdkDevice *client_pointer;
|
2010-06-04 15:06:57 +00:00
|
|
|
|
|
|
|
g_warning ("Event with type %d not holding a GdkDevice. "
|
|
|
|
"It is most likely synthesized outside Gdk/GTK+\n",
|
|
|
|
event->type);
|
|
|
|
|
2010-08-29 00:08:47 +00:00
|
|
|
display = gdk_window_get_display (event->any.window);
|
2010-10-28 21:01:16 +00:00
|
|
|
device_manager = gdk_display_get_device_manager (display);
|
|
|
|
client_pointer = gdk_device_manager_get_client_pointer (device_manager);
|
2010-06-04 15:06:57 +00:00
|
|
|
|
|
|
|
if (event->type == GDK_KEY_PRESS ||
|
|
|
|
event->type == GDK_KEY_RELEASE)
|
2010-10-28 21:01:16 +00:00
|
|
|
return gdk_device_get_associated_device (client_pointer);
|
2010-06-04 15:06:57 +00:00
|
|
|
else
|
2010-10-28 21:01:16 +00:00
|
|
|
return client_pointer;
|
2010-06-04 15:06:57 +00:00
|
|
|
}
|
|
|
|
break;
|
2010-05-25 22:38:44 +00:00
|
|
|
default:
|
|
|
|
return NULL;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2010-12-13 01:12:43 +00:00
|
|
|
/**
|
|
|
|
* gdk_event_set_source_device:
|
|
|
|
* @event: a #GdkEvent
|
|
|
|
* @device: a #GdkDevice
|
|
|
|
*
|
2011-01-20 03:52:55 +00:00
|
|
|
* Sets the slave device for @event to @device.
|
|
|
|
*
|
|
|
|
* The event must have been allocated by GTK+,
|
|
|
|
* for instance by gdk_event_copy().
|
2010-12-13 01:12:43 +00:00
|
|
|
*
|
|
|
|
* Since: 3.0
|
|
|
|
**/
|
|
|
|
void
|
|
|
|
gdk_event_set_source_device (GdkEvent *event,
|
|
|
|
GdkDevice *device)
|
|
|
|
{
|
|
|
|
GdkEventPrivate *private;
|
|
|
|
|
|
|
|
g_return_if_fail (gdk_event_is_allocated (event));
|
|
|
|
g_return_if_fail (GDK_IS_DEVICE (device));
|
|
|
|
|
|
|
|
private = (GdkEventPrivate *) event;
|
|
|
|
|
|
|
|
private->source_device = device;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* gdk_event_get_source_device:
|
|
|
|
* @event: a #GdkEvent
|
|
|
|
*
|
2011-01-20 03:52:55 +00:00
|
|
|
* This function returns the hardware (slave) #GdkDevice that has
|
|
|
|
* triggered the event, falling back to the virtual (master) device
|
|
|
|
* (as in gdk_event_get_device()) if the event wasn't caused by
|
|
|
|
* interaction with a hardware device. This may happen for example
|
|
|
|
* in synthesized crossing events after a #GdkWindow updates its
|
|
|
|
* geometry or a grab is acquired/released.
|
2010-12-13 01:12:43 +00:00
|
|
|
*
|
2011-01-20 03:52:55 +00:00
|
|
|
* If the event does not contain a device field, this function will
|
|
|
|
* return %NULL.
|
2010-12-13 01:12:43 +00:00
|
|
|
*
|
2011-01-18 09:01:17 +00:00
|
|
|
* Returns: (transfer none): a #GdkDevice, or %NULL.
|
2010-12-13 01:12:43 +00:00
|
|
|
*
|
|
|
|
* Since: 3.0
|
|
|
|
**/
|
|
|
|
GdkDevice *
|
|
|
|
gdk_event_get_source_device (const GdkEvent *event)
|
|
|
|
{
|
|
|
|
GdkEventPrivate *private;
|
|
|
|
|
|
|
|
g_return_val_if_fail (event != NULL, NULL);
|
|
|
|
|
|
|
|
if (!gdk_event_is_allocated (event))
|
|
|
|
return NULL;
|
|
|
|
|
|
|
|
private = (GdkEventPrivate *) event;
|
|
|
|
|
|
|
|
if (private->source_device)
|
|
|
|
return private->source_device;
|
|
|
|
|
|
|
|
/* Fallback to event device */
|
|
|
|
return gdk_event_get_device (event);
|
|
|
|
}
|
|
|
|
|
2007-02-06 14:53:35 +00:00
|
|
|
/**
|
|
|
|
* gdk_event_request_motions:
|
|
|
|
* @event: a valid #GdkEvent
|
|
|
|
*
|
2007-06-07 04:28:56 +00:00
|
|
|
* Request more motion notifies if @event is a motion notify hint event.
|
2011-01-20 03:52:55 +00:00
|
|
|
*
|
2007-02-06 15:02:59 +00:00
|
|
|
* This function should be used instead of gdk_window_get_pointer() to
|
2007-02-06 14:53:35 +00:00
|
|
|
* request further motion notifies, because it also works for extension
|
|
|
|
* events where motion notifies are provided for devices other than the
|
2007-07-04 10:21:05 +00:00
|
|
|
* core pointer. Coordinate extraction, processing and requesting more
|
|
|
|
* motion events from a %GDK_MOTION_NOTIFY event usually works like this:
|
|
|
|
*
|
2007-11-25 06:51:19 +00:00
|
|
|
* |[
|
2011-01-20 03:52:55 +00:00
|
|
|
* {
|
2007-11-25 06:51:19 +00:00
|
|
|
* /* motion_event handler */
|
2007-07-04 10:21:05 +00:00
|
|
|
* x = motion_event->x;
|
|
|
|
* y = motion_event->y;
|
2007-11-25 06:51:19 +00:00
|
|
|
* /* handle (x,y) motion */
|
|
|
|
* gdk_event_request_motions (motion_event); /* handles is_hint events */
|
2007-07-04 10:21:05 +00:00
|
|
|
* }
|
2007-11-25 06:51:19 +00:00
|
|
|
* ]|
|
2007-02-06 14:53:35 +00:00
|
|
|
*
|
|
|
|
* Since: 2.12
|
|
|
|
**/
|
|
|
|
void
|
2008-01-15 15:32:37 +00:00
|
|
|
gdk_event_request_motions (const GdkEventMotion *event)
|
2007-02-06 14:53:35 +00:00
|
|
|
{
|
2009-01-23 12:04:44 +00:00
|
|
|
GdkDisplay *display;
|
|
|
|
|
2007-02-06 14:53:35 +00:00
|
|
|
g_return_if_fail (event != NULL);
|
2009-01-23 12:04:44 +00:00
|
|
|
|
2007-02-06 14:53:35 +00:00
|
|
|
if (event->type == GDK_MOTION_NOTIFY && event->is_hint)
|
2009-01-23 12:04:44 +00:00
|
|
|
{
|
|
|
|
gdk_device_get_state (event->device, event->window, NULL, NULL);
|
|
|
|
|
2010-08-29 00:08:47 +00:00
|
|
|
display = gdk_window_get_display (event->window);
|
2010-05-25 22:38:44 +00:00
|
|
|
_gdk_display_enable_motion_hints (display, event->device);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2011-09-27 13:37:28 +00:00
|
|
|
/**
|
|
|
|
* gdk_event_triggers_context_menu:
|
|
|
|
* @event: a #GdkEvent, currently only button events are meaningful values
|
|
|
|
*
|
|
|
|
* This function returns whether a #GdkEventButton should trigger a
|
|
|
|
* context menu, according to platform conventions. The right mouse
|
|
|
|
* button always triggers context menus. Additionally, if
|
|
|
|
* gdk_keymap_get_modifier_mask() returns a non-0 mask for
|
|
|
|
* %GDK_MODIFIER_INTENT_CONTEXT_MENU, then the left mouse button will
|
|
|
|
* also trigger a context menu if this modifier is pressed.
|
|
|
|
*
|
|
|
|
* This function should always be used instead of simply checking for
|
2012-01-25 17:10:48 +00:00
|
|
|
* event->button == %GDK_BUTTON_SECONDARY.
|
2011-09-27 13:37:28 +00:00
|
|
|
*
|
|
|
|
* Returns: %TRUE if the event should trigger a context menu.
|
|
|
|
*
|
|
|
|
* Since: 3.4
|
|
|
|
**/
|
|
|
|
gboolean
|
|
|
|
gdk_event_triggers_context_menu (const GdkEvent *event)
|
|
|
|
{
|
|
|
|
g_return_val_if_fail (event != NULL, FALSE);
|
|
|
|
|
|
|
|
if (event->type == GDK_BUTTON_PRESS)
|
|
|
|
{
|
|
|
|
const GdkEventButton *bevent = (const GdkEventButton *) event;
|
|
|
|
GdkDisplay *display;
|
|
|
|
GdkModifierType modifier;
|
|
|
|
|
|
|
|
g_return_val_if_fail (GDK_IS_WINDOW (bevent->window), FALSE);
|
|
|
|
|
2012-01-25 17:10:48 +00:00
|
|
|
if (bevent->button == GDK_BUTTON_SECONDARY &&
|
2011-09-27 13:37:28 +00:00
|
|
|
! (bevent->state & (GDK_BUTTON1_MASK | GDK_BUTTON2_MASK)))
|
|
|
|
return TRUE;
|
|
|
|
|
|
|
|
display = gdk_window_get_display (bevent->window);
|
|
|
|
|
|
|
|
modifier = gdk_keymap_get_modifier_mask (gdk_keymap_get_for_display (display),
|
|
|
|
GDK_MODIFIER_INTENT_CONTEXT_MENU);
|
|
|
|
|
|
|
|
if (modifier != 0 &&
|
2012-01-25 17:10:48 +00:00
|
|
|
bevent->button == GDK_BUTTON_PRIMARY &&
|
2011-09-27 13:37:28 +00:00
|
|
|
! (bevent->state & (GDK_BUTTON2_MASK | GDK_BUTTON3_MASK)) &&
|
|
|
|
(bevent->state & modifier))
|
|
|
|
return TRUE;
|
|
|
|
}
|
|
|
|
|
|
|
|
return FALSE;
|
|
|
|
}
|
|
|
|
|
2010-05-25 22:38:44 +00:00
|
|
|
static gboolean
|
|
|
|
gdk_events_get_axis_distances (GdkEvent *event1,
|
|
|
|
GdkEvent *event2,
|
|
|
|
gdouble *x_distance,
|
|
|
|
gdouble *y_distance,
|
|
|
|
gdouble *distance)
|
|
|
|
{
|
|
|
|
gdouble x1, x2, y1, y2;
|
|
|
|
gdouble xd, yd;
|
|
|
|
|
|
|
|
if (!gdk_event_get_coords (event1, &x1, &y1) ||
|
|
|
|
!gdk_event_get_coords (event2, &x2, &y2))
|
|
|
|
return FALSE;
|
|
|
|
|
|
|
|
xd = x2 - x1;
|
|
|
|
yd = y2 - y1;
|
|
|
|
|
|
|
|
if (x_distance)
|
|
|
|
*x_distance = xd;
|
|
|
|
|
|
|
|
if (y_distance)
|
|
|
|
*y_distance = yd;
|
|
|
|
|
|
|
|
if (distance)
|
|
|
|
*distance = sqrt ((xd * xd) + (yd * yd));
|
|
|
|
|
|
|
|
return TRUE;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* gdk_events_get_distance:
|
|
|
|
* @event1: first #GdkEvent
|
|
|
|
* @event2: second #GdkEvent
|
2011-01-18 09:10:30 +00:00
|
|
|
* @distance: (out): return location for the distance
|
2010-05-25 22:38:44 +00:00
|
|
|
*
|
|
|
|
* If both events have X/Y information, the distance between both coordinates
|
|
|
|
* (as in a straight line going from @event1 to @event2) will be returned.
|
|
|
|
*
|
|
|
|
* Returns: %TRUE if the distance could be calculated.
|
|
|
|
*
|
|
|
|
* Since: 3.0
|
|
|
|
**/
|
|
|
|
gboolean
|
|
|
|
gdk_events_get_distance (GdkEvent *event1,
|
|
|
|
GdkEvent *event2,
|
|
|
|
gdouble *distance)
|
|
|
|
{
|
|
|
|
return gdk_events_get_axis_distances (event1, event2,
|
|
|
|
NULL, NULL,
|
|
|
|
distance);
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* gdk_events_get_angle:
|
|
|
|
* @event1: first #GdkEvent
|
|
|
|
* @event2: second #GdkEvent
|
2011-01-18 09:10:30 +00:00
|
|
|
* @angle: (out): return location for the relative angle between both events
|
2010-05-25 22:38:44 +00:00
|
|
|
*
|
|
|
|
* If both events contain X/Y information, this function will return %TRUE
|
|
|
|
* and return in @angle the relative angle from @event1 to @event2. The rotation
|
|
|
|
* direction for positive angles is from the positive X axis towards the positive
|
|
|
|
* Y axis.
|
|
|
|
*
|
|
|
|
* Returns: %TRUE if the angle could be calculated.
|
|
|
|
*
|
|
|
|
* Since: 3.0
|
|
|
|
**/
|
|
|
|
gboolean
|
|
|
|
gdk_events_get_angle (GdkEvent *event1,
|
|
|
|
GdkEvent *event2,
|
|
|
|
gdouble *angle)
|
|
|
|
{
|
|
|
|
gdouble x_distance, y_distance, distance;
|
|
|
|
|
|
|
|
if (!gdk_events_get_axis_distances (event1, event2,
|
|
|
|
&x_distance, &y_distance,
|
|
|
|
&distance))
|
|
|
|
return FALSE;
|
|
|
|
|
|
|
|
if (angle)
|
|
|
|
{
|
|
|
|
*angle = atan2 (x_distance, y_distance);
|
|
|
|
|
|
|
|
/* Invert angle */
|
|
|
|
*angle = (2 * G_PI) - *angle;
|
|
|
|
|
|
|
|
/* Shift it 90° */
|
|
|
|
*angle += G_PI / 2;
|
|
|
|
|
|
|
|
/* And constraint it to 0°-360° */
|
|
|
|
*angle = fmod (*angle, 2 * G_PI);
|
2009-01-23 12:04:44 +00:00
|
|
|
}
|
2010-05-25 22:38:44 +00:00
|
|
|
|
|
|
|
return TRUE;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* gdk_events_get_center:
|
|
|
|
* @event1: first #GdkEvent
|
|
|
|
* @event2: second #GdkEvent
|
2010-06-07 21:47:14 +00:00
|
|
|
* @x: (out): return location for the X coordinate of the center
|
|
|
|
* @y: (out): return location for the Y coordinate of the center
|
2010-05-25 22:38:44 +00:00
|
|
|
*
|
|
|
|
* If both events contain X/Y information, the center of both coordinates
|
|
|
|
* will be returned in @x and @y.
|
|
|
|
*
|
|
|
|
* Returns: %TRUE if the center could be calculated.
|
|
|
|
*
|
|
|
|
* Since: 3.0
|
|
|
|
**/
|
|
|
|
gboolean
|
|
|
|
gdk_events_get_center (GdkEvent *event1,
|
|
|
|
GdkEvent *event2,
|
|
|
|
gdouble *x,
|
|
|
|
gdouble *y)
|
|
|
|
{
|
|
|
|
gdouble x1, x2, y1, y2;
|
|
|
|
|
|
|
|
if (!gdk_event_get_coords (event1, &x1, &y1) ||
|
|
|
|
!gdk_event_get_coords (event2, &x2, &y2))
|
|
|
|
return FALSE;
|
|
|
|
|
|
|
|
if (x)
|
|
|
|
*x = (x2 + x1) / 2;
|
|
|
|
|
|
|
|
if (y)
|
|
|
|
*y = (y2 + y1) / 2;
|
|
|
|
|
|
|
|
return TRUE;
|
2007-02-06 14:53:35 +00:00
|
|
|
}
|
|
|
|
|
2002-10-02 21:39:09 +00:00
|
|
|
/**
|
|
|
|
* gdk_event_set_screen:
|
|
|
|
* @event: a #GdkEvent
|
|
|
|
* @screen: a #GdkScreen
|
|
|
|
*
|
|
|
|
* Sets the screen for @event to @screen. The event must
|
|
|
|
* have been allocated by GTK+, for instance, by
|
|
|
|
* gdk_event_copy().
|
2002-11-28 00:33:17 +00:00
|
|
|
*
|
|
|
|
* Since: 2.2
|
2002-10-02 21:39:09 +00:00
|
|
|
**/
|
|
|
|
void
|
|
|
|
gdk_event_set_screen (GdkEvent *event,
|
|
|
|
GdkScreen *screen)
|
|
|
|
{
|
|
|
|
GdkEventPrivate *private;
|
|
|
|
|
|
|
|
g_return_if_fail (gdk_event_is_allocated (event));
|
|
|
|
|
|
|
|
private = (GdkEventPrivate *)event;
|
|
|
|
|
|
|
|
private->screen = screen;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* gdk_event_get_screen:
|
|
|
|
* @event: a #GdkEvent
|
|
|
|
*
|
|
|
|
* Returns the screen for the event. The screen is
|
2002-11-28 00:33:17 +00:00
|
|
|
* typically the screen for <literal>event->any.window</literal>, but
|
2002-10-02 21:39:09 +00:00
|
|
|
* for events such as mouse events, it is the screen
|
2005-02-01 18:15:09 +00:00
|
|
|
* where the pointer was when the event occurs -
|
2002-10-02 21:39:09 +00:00
|
|
|
* that is, the screen which has the root window
|
2002-11-28 00:33:17 +00:00
|
|
|
* to which <literal>event->motion.x_root</literal> and
|
|
|
|
* <literal>event->motion.y_root</literal> are relative.
|
2002-10-02 21:39:09 +00:00
|
|
|
*
|
2010-11-24 19:13:09 +00:00
|
|
|
* Return value: (transfer none): the screen for the event
|
2002-11-28 00:33:17 +00:00
|
|
|
*
|
|
|
|
* Since: 2.2
|
2002-10-02 21:39:09 +00:00
|
|
|
**/
|
|
|
|
GdkScreen *
|
2008-01-15 15:32:37 +00:00
|
|
|
gdk_event_get_screen (const GdkEvent *event)
|
2002-10-02 21:39:09 +00:00
|
|
|
{
|
|
|
|
if (gdk_event_is_allocated (event))
|
|
|
|
{
|
|
|
|
GdkEventPrivate *private = (GdkEventPrivate *)event;
|
|
|
|
|
|
|
|
if (private->screen)
|
|
|
|
return private->screen;
|
|
|
|
}
|
|
|
|
|
|
|
|
if (event->any.window)
|
2010-08-28 23:32:52 +00:00
|
|
|
return gdk_window_get_screen (event->any.window);
|
2002-10-02 21:39:09 +00:00
|
|
|
|
|
|
|
return NULL;
|
|
|
|
}
|
|
|
|
|
2011-03-01 07:36:54 +00:00
|
|
|
/**
|
|
|
|
* gdk_event_get_event_sequence:
|
|
|
|
* @event: a #GdkEvent
|
|
|
|
*
|
|
|
|
* If @event if of type %GDK_TOUCH_BEGIN, %GDK_TOUCH_UPDATE,
|
|
|
|
* %GDK_TOUCH_END or %GDK_TOUCH_CANCEL, returns the #GdkEventSequence
|
|
|
|
* to which the event belongs. Otherwise, return %NULL.
|
|
|
|
*
|
|
|
|
* Returns: the event sequence that the event belongs to
|
|
|
|
*
|
|
|
|
* Since: 3.4
|
|
|
|
*/
|
|
|
|
GdkEventSequence *
|
|
|
|
gdk_event_get_event_sequence (const GdkEvent *event)
|
|
|
|
{
|
|
|
|
if (!event)
|
|
|
|
return NULL;
|
|
|
|
|
2011-02-28 19:53:42 +00:00
|
|
|
if (event->type == GDK_TOUCH_BEGIN ||
|
|
|
|
event->type == GDK_TOUCH_UPDATE ||
|
|
|
|
event->type == GDK_TOUCH_END ||
|
|
|
|
event->type == GDK_TOUCH_CANCEL)
|
|
|
|
return event->touch.sequence;
|
|
|
|
|
2011-03-01 07:36:54 +00:00
|
|
|
return NULL;
|
|
|
|
}
|
|
|
|
|
2002-04-25 22:29:14 +00:00
|
|
|
/**
|
|
|
|
* gdk_set_show_events:
|
|
|
|
* @show_events: %TRUE to output event debugging information.
|
|
|
|
*
|
|
|
|
* Sets whether a trace of received events is output.
|
|
|
|
* Note that GTK+ must be compiled with debugging (that is,
|
|
|
|
* configured using the <option>--enable-debug</option> option)
|
|
|
|
* to use this option.
|
|
|
|
**/
|
1998-12-15 13:54:20 +00:00
|
|
|
void
|
2000-03-14 19:57:25 +00:00
|
|
|
gdk_set_show_events (gboolean show_events)
|
1998-12-15 13:54:20 +00:00
|
|
|
{
|
|
|
|
if (show_events)
|
Make gdkx.h the only installed header from gdk/x11. All structures in
Fri Sep 7 11:51:44 2001 Owen Taylor <otaylor@redhat.com>
Make gdkx.h the only installed header from gdk/x11.
All structures in gdk/x11 are opaque.
* gdk/x11/Makefile.am gdk/x11/gdkx.h gdk/x11/gdkprivate-x11.h:
Don't install gdk{drawable,pixmap,window}-x11.h.
* gdk/x11/{gdkcolormap-x11.c, gdkfont-x11.c, gdkx.h, gdkvisual-x11.c:
Move GdkColormapPrivateX11, GdkFontPrivateX GdkImagePrivateX11,
GdkVisualClass into C files.
* gdk/gdkpixmap-x11.[ch]: Make gdk_pixmap_impl_get_type() static.
* gdk/x11/{gdkcolor-x11.c, gdkcursor-x11.c, gdkdrawable-x11.c,
gdkfont-x11.c, gdkgc-x11.c, gdkx.h, gdkimage-x11,gdkvisual-x11.c}
Add public functions to replace previously exported direct
structure access.
gdk_x11_colormap_get_{xdisplay,xcolormap}
gdk_x11_cursor_get_{xdisplay,xcursor},
gdk_x11_drawable_get_{xdisplay,xcursor,gdk_x11_visual_get_xvisual,
gdk_x11_font_get_{xdisplay,xfont}, gdk_x11_image_get_{xdisplay,ximage},
gdk_x11_gc_get_{xdisplay,ximage}
* gdk/gdkprivate.h gdk/gdkinternals.h: Move GdkColorInfo,
GdkEventFilter, GdkClientFilter, GdkFontPrivate to gdkinternals.
Fix a number of variables and functions that were exported
"accidentally" from GDK.
* gdk/**.[ch]: gdk => _gdk for gdk_visual_init,
gdk_events_init, gdk_input_init, gdk_dnd_init, gdk_image_exit,
gdk_input_exit, gdk_windowing_exit, gdk_event_func, gdk_event_data,
gdk_event_notify, gdk_queued_events, gdk_queued_tail,
gdk_event_new, gdk_events_queue, gdk_events_unqueue,
gdk_event_queue_find_first, gdk_event_queue_remove_link,
gdk_event_queue_append, gdk_event_button_generate,
gdk_debug_flags, gdk_default_filters, gdk_parent_root.
* gdk/x11/{gdkevents-x11.c, gdkglobals-x11.c, gdkimage-x11.c,
gdkmain-x11.c, gdkprivate-x11.h, gdk/x11/gdkwindow-x11.c}:
gdk => _gdk for gdk_event_mask_table, gkd_nevent_masks,
gdk_wm_window_protocols, gdk_leader_window, gdk_xgrab_window,
gdk_use_xshm, gdk_input_ignore_core.
* gdk/x11/xsettings-common.h (xsettings_list_insert): Add
#defines to namespace functions into the private _gdk_
namespace.
* gdk/gdkwindow.[ch] gdk/x11/gdkx.h: Add gdk_get_default_root_window ()
to replace gdk_parent_root exported variable. Adjust and
deprecate GDK_ROOT_PARENT().
* demos/{testpixbuf-drawable.c,testpixbuf-save.c}: Fix
GDK_ROOT_PARENT usage, remove includes of port-specific
headers.
* gdk/{win32,x11,fb}/gdkinput*.[ch]: s/gdk/_gdk/ for
_gdk_input_gxid_host, _gdk_input_gxid_port, _gdk_input_ignore_core,
gdk_input_devices, _gdk_input_windows, gdk_init_input_core.
* gdk/x11/{gdkevents-x11.,c gdkglobals-x11.c, gdkmain-x11.c}
docs/Changes-2.0.txt: Remove gdk_wm_protocols,
gdk_wm_delete_window functions, gdk_wm_take_focus,
use gdk_atom_intern() instead.
* gdk/linux-fb/{gdkselection-fb.c, gdkmain-fb.c, gdkprivatefb.h}
gdk/win32/{gdkselection-win32.c, gdkmgdkwin32.h, gdkprivate-win32.h}
gdk/x11/{gdkselection-x11.c gdkx.h, gtkprivate-x11.h}
gtk/gtkselection.c
Unexport gdk_selection_property, just use
gdk_atom_intern ("GDK_SELECTION").
* gdk/x11/{gdkprivate-x11.h,gdkdrawable-x11h,gdkgc-x11.c,gdkx.h}:
Unexport gdk_drawable_impl_x11_get_type, gdk_gc_x11_get_type,
GDK_GC_X11 cast macros, GdkGCX11 structures, GdkCursorPrivate,
GdkVisualprivate, gdk_x11_gc_flush.
Make a number of public exports of variables into functions
to increase encapsulation.
* gdk/gdkinternals.h gdk/gdkinput.h gdk/gdkevents.h
gdk/linux-fb/gdkmouse-fb.c: gdk_core_pointer => _gdk_core_pointer,
move to gdkinternals.h. Add gdk_device_get_core_pointer ().
* gdk/gdkprivate.h gdk/gdkpango.c gdk/gdkinternals.h
docs/Changes-2.0.txt: Unexport gdk_parent_root, gdk_error_code,
gdk_error_warnings.
* gdk/x11/{gdkcolormap-x11.c, gdkmain-x11.c, gdkx.h}
docs/Changes-2.0.txt:
s/gdk_screen/_gdk_screen/, add gdk_x11_get_default_screen()
s/gdk_root_window/_gdk_root_window/, add gdk_x11_get_default_root_xwindow()
Add gdk_x11_get_default_xdisplay().
* gdk/gdk.h gdk/gdk.c linux-fb/gdkfb.h linux-fb/gdkglobals-fb.c
win32/gdkwin32.h x11/gdkglobals-x11.c gdk/x11/gdkmain-x11.c
gdk/x11/gdkx.h: gdk/gdk.def: Add gdk_get/set_program_class,
Don't export gdk_progclass, move --class command line
option and handling to common portion of GDK.
Miscellaneous fixes:
* gdk/x11/gdkwindow-x11.c (gdk_window_set_icon_list): Fix
g_return_val_if_fail that should have been g_return_if_fail.
* gdk/gdkinternals.h gdk/gdkprivate.h: Move
gdk_synthesize_window_state() to the semi-public gdkprivate.h.
* gtk/gtkdnd.c (_gtk_drag_source_handle_event): Remove uneeded
X11 dependency.
* gdk/linux-fb/gdkmain-fb.c gdk/win32/gdkmain-win32.c gdk/TODO:
Remove unused gdk_key_repeat_disable/restore.
* linux-fb/gdkglobals-fb.c win32/gdkglobals-win32.c
x11/gdkglobals-x11.c x11/gdkprivate-x11.h gdk/gdk.def:
Remove unused gdk_null_window_warnings variable.
* gdk/Makefile.am (DIST_SUBDIRS) nanox/*: cvs remove nanox;
it can be retrieved from the repository; it is too far
from functional to be worth having people check out;
it would be easier to start from scratch, I suspect.
* gdk/x11/gdkpixmap-x11.c: Fix lvalue usage of GDK_PIXMAP_XID().
* gdk/x11/gdkkeys-x11.c gdk/gdkrgb.c gdk/gdkwindow.c
gdk/x11/gdkpango-x11.c gdk/x11/gdkselection-x11.c:
Fix some accidentally global variables and unused global variables.
* gdk/x11/gdkkeys-x11.c gdk/gdkrgb.c gdk/gdkwindow.c
gdk/x11/gdkpango-x11.c gdk/x11/gdkselection-x11.c:
Fix some accidentally global variables and unused global variables.
Add some space for future expansion to multihead.
* gdk/gdkdrawable.h: Add four reserved function pointers
for future expansion of GdkDrawableClass.
* gtk/gtkwindow.h gtk/gtkinvisible.h: Add reserved pointer
where we can put a GdkScreen * later.
2001-09-07 21:50:20 +00:00
|
|
|
_gdk_debug_flags |= GDK_DEBUG_EVENTS;
|
1998-12-15 13:54:20 +00:00
|
|
|
else
|
Make gdkx.h the only installed header from gdk/x11. All structures in
Fri Sep 7 11:51:44 2001 Owen Taylor <otaylor@redhat.com>
Make gdkx.h the only installed header from gdk/x11.
All structures in gdk/x11 are opaque.
* gdk/x11/Makefile.am gdk/x11/gdkx.h gdk/x11/gdkprivate-x11.h:
Don't install gdk{drawable,pixmap,window}-x11.h.
* gdk/x11/{gdkcolormap-x11.c, gdkfont-x11.c, gdkx.h, gdkvisual-x11.c:
Move GdkColormapPrivateX11, GdkFontPrivateX GdkImagePrivateX11,
GdkVisualClass into C files.
* gdk/gdkpixmap-x11.[ch]: Make gdk_pixmap_impl_get_type() static.
* gdk/x11/{gdkcolor-x11.c, gdkcursor-x11.c, gdkdrawable-x11.c,
gdkfont-x11.c, gdkgc-x11.c, gdkx.h, gdkimage-x11,gdkvisual-x11.c}
Add public functions to replace previously exported direct
structure access.
gdk_x11_colormap_get_{xdisplay,xcolormap}
gdk_x11_cursor_get_{xdisplay,xcursor},
gdk_x11_drawable_get_{xdisplay,xcursor,gdk_x11_visual_get_xvisual,
gdk_x11_font_get_{xdisplay,xfont}, gdk_x11_image_get_{xdisplay,ximage},
gdk_x11_gc_get_{xdisplay,ximage}
* gdk/gdkprivate.h gdk/gdkinternals.h: Move GdkColorInfo,
GdkEventFilter, GdkClientFilter, GdkFontPrivate to gdkinternals.
Fix a number of variables and functions that were exported
"accidentally" from GDK.
* gdk/**.[ch]: gdk => _gdk for gdk_visual_init,
gdk_events_init, gdk_input_init, gdk_dnd_init, gdk_image_exit,
gdk_input_exit, gdk_windowing_exit, gdk_event_func, gdk_event_data,
gdk_event_notify, gdk_queued_events, gdk_queued_tail,
gdk_event_new, gdk_events_queue, gdk_events_unqueue,
gdk_event_queue_find_first, gdk_event_queue_remove_link,
gdk_event_queue_append, gdk_event_button_generate,
gdk_debug_flags, gdk_default_filters, gdk_parent_root.
* gdk/x11/{gdkevents-x11.c, gdkglobals-x11.c, gdkimage-x11.c,
gdkmain-x11.c, gdkprivate-x11.h, gdk/x11/gdkwindow-x11.c}:
gdk => _gdk for gdk_event_mask_table, gkd_nevent_masks,
gdk_wm_window_protocols, gdk_leader_window, gdk_xgrab_window,
gdk_use_xshm, gdk_input_ignore_core.
* gdk/x11/xsettings-common.h (xsettings_list_insert): Add
#defines to namespace functions into the private _gdk_
namespace.
* gdk/gdkwindow.[ch] gdk/x11/gdkx.h: Add gdk_get_default_root_window ()
to replace gdk_parent_root exported variable. Adjust and
deprecate GDK_ROOT_PARENT().
* demos/{testpixbuf-drawable.c,testpixbuf-save.c}: Fix
GDK_ROOT_PARENT usage, remove includes of port-specific
headers.
* gdk/{win32,x11,fb}/gdkinput*.[ch]: s/gdk/_gdk/ for
_gdk_input_gxid_host, _gdk_input_gxid_port, _gdk_input_ignore_core,
gdk_input_devices, _gdk_input_windows, gdk_init_input_core.
* gdk/x11/{gdkevents-x11.,c gdkglobals-x11.c, gdkmain-x11.c}
docs/Changes-2.0.txt: Remove gdk_wm_protocols,
gdk_wm_delete_window functions, gdk_wm_take_focus,
use gdk_atom_intern() instead.
* gdk/linux-fb/{gdkselection-fb.c, gdkmain-fb.c, gdkprivatefb.h}
gdk/win32/{gdkselection-win32.c, gdkmgdkwin32.h, gdkprivate-win32.h}
gdk/x11/{gdkselection-x11.c gdkx.h, gtkprivate-x11.h}
gtk/gtkselection.c
Unexport gdk_selection_property, just use
gdk_atom_intern ("GDK_SELECTION").
* gdk/x11/{gdkprivate-x11.h,gdkdrawable-x11h,gdkgc-x11.c,gdkx.h}:
Unexport gdk_drawable_impl_x11_get_type, gdk_gc_x11_get_type,
GDK_GC_X11 cast macros, GdkGCX11 structures, GdkCursorPrivate,
GdkVisualprivate, gdk_x11_gc_flush.
Make a number of public exports of variables into functions
to increase encapsulation.
* gdk/gdkinternals.h gdk/gdkinput.h gdk/gdkevents.h
gdk/linux-fb/gdkmouse-fb.c: gdk_core_pointer => _gdk_core_pointer,
move to gdkinternals.h. Add gdk_device_get_core_pointer ().
* gdk/gdkprivate.h gdk/gdkpango.c gdk/gdkinternals.h
docs/Changes-2.0.txt: Unexport gdk_parent_root, gdk_error_code,
gdk_error_warnings.
* gdk/x11/{gdkcolormap-x11.c, gdkmain-x11.c, gdkx.h}
docs/Changes-2.0.txt:
s/gdk_screen/_gdk_screen/, add gdk_x11_get_default_screen()
s/gdk_root_window/_gdk_root_window/, add gdk_x11_get_default_root_xwindow()
Add gdk_x11_get_default_xdisplay().
* gdk/gdk.h gdk/gdk.c linux-fb/gdkfb.h linux-fb/gdkglobals-fb.c
win32/gdkwin32.h x11/gdkglobals-x11.c gdk/x11/gdkmain-x11.c
gdk/x11/gdkx.h: gdk/gdk.def: Add gdk_get/set_program_class,
Don't export gdk_progclass, move --class command line
option and handling to common portion of GDK.
Miscellaneous fixes:
* gdk/x11/gdkwindow-x11.c (gdk_window_set_icon_list): Fix
g_return_val_if_fail that should have been g_return_if_fail.
* gdk/gdkinternals.h gdk/gdkprivate.h: Move
gdk_synthesize_window_state() to the semi-public gdkprivate.h.
* gtk/gtkdnd.c (_gtk_drag_source_handle_event): Remove uneeded
X11 dependency.
* gdk/linux-fb/gdkmain-fb.c gdk/win32/gdkmain-win32.c gdk/TODO:
Remove unused gdk_key_repeat_disable/restore.
* linux-fb/gdkglobals-fb.c win32/gdkglobals-win32.c
x11/gdkglobals-x11.c x11/gdkprivate-x11.h gdk/gdk.def:
Remove unused gdk_null_window_warnings variable.
* gdk/Makefile.am (DIST_SUBDIRS) nanox/*: cvs remove nanox;
it can be retrieved from the repository; it is too far
from functional to be worth having people check out;
it would be easier to start from scratch, I suspect.
* gdk/x11/gdkpixmap-x11.c: Fix lvalue usage of GDK_PIXMAP_XID().
* gdk/x11/gdkkeys-x11.c gdk/gdkrgb.c gdk/gdkwindow.c
gdk/x11/gdkpango-x11.c gdk/x11/gdkselection-x11.c:
Fix some accidentally global variables and unused global variables.
* gdk/x11/gdkkeys-x11.c gdk/gdkrgb.c gdk/gdkwindow.c
gdk/x11/gdkpango-x11.c gdk/x11/gdkselection-x11.c:
Fix some accidentally global variables and unused global variables.
Add some space for future expansion to multihead.
* gdk/gdkdrawable.h: Add four reserved function pointers
for future expansion of GdkDrawableClass.
* gtk/gtkwindow.h gtk/gtkinvisible.h: Add reserved pointer
where we can put a GdkScreen * later.
2001-09-07 21:50:20 +00:00
|
|
|
_gdk_debug_flags &= ~GDK_DEBUG_EVENTS;
|
1998-12-15 13:54:20 +00:00
|
|
|
}
|
|
|
|
|
2002-04-25 22:29:14 +00:00
|
|
|
/**
|
|
|
|
* gdk_get_show_events:
|
|
|
|
*
|
2002-04-26 14:34:42 +00:00
|
|
|
* Gets whether event debugging output is enabled.
|
2002-04-25 22:29:14 +00:00
|
|
|
*
|
2002-04-26 14:34:42 +00:00
|
|
|
* Return value: %TRUE if event debugging output is enabled.
|
2002-04-25 22:29:14 +00:00
|
|
|
**/
|
2000-03-14 19:57:25 +00:00
|
|
|
gboolean
|
1998-12-15 13:54:20 +00:00
|
|
|
gdk_get_show_events (void)
|
|
|
|
{
|
Make gdkx.h the only installed header from gdk/x11. All structures in
Fri Sep 7 11:51:44 2001 Owen Taylor <otaylor@redhat.com>
Make gdkx.h the only installed header from gdk/x11.
All structures in gdk/x11 are opaque.
* gdk/x11/Makefile.am gdk/x11/gdkx.h gdk/x11/gdkprivate-x11.h:
Don't install gdk{drawable,pixmap,window}-x11.h.
* gdk/x11/{gdkcolormap-x11.c, gdkfont-x11.c, gdkx.h, gdkvisual-x11.c:
Move GdkColormapPrivateX11, GdkFontPrivateX GdkImagePrivateX11,
GdkVisualClass into C files.
* gdk/gdkpixmap-x11.[ch]: Make gdk_pixmap_impl_get_type() static.
* gdk/x11/{gdkcolor-x11.c, gdkcursor-x11.c, gdkdrawable-x11.c,
gdkfont-x11.c, gdkgc-x11.c, gdkx.h, gdkimage-x11,gdkvisual-x11.c}
Add public functions to replace previously exported direct
structure access.
gdk_x11_colormap_get_{xdisplay,xcolormap}
gdk_x11_cursor_get_{xdisplay,xcursor},
gdk_x11_drawable_get_{xdisplay,xcursor,gdk_x11_visual_get_xvisual,
gdk_x11_font_get_{xdisplay,xfont}, gdk_x11_image_get_{xdisplay,ximage},
gdk_x11_gc_get_{xdisplay,ximage}
* gdk/gdkprivate.h gdk/gdkinternals.h: Move GdkColorInfo,
GdkEventFilter, GdkClientFilter, GdkFontPrivate to gdkinternals.
Fix a number of variables and functions that were exported
"accidentally" from GDK.
* gdk/**.[ch]: gdk => _gdk for gdk_visual_init,
gdk_events_init, gdk_input_init, gdk_dnd_init, gdk_image_exit,
gdk_input_exit, gdk_windowing_exit, gdk_event_func, gdk_event_data,
gdk_event_notify, gdk_queued_events, gdk_queued_tail,
gdk_event_new, gdk_events_queue, gdk_events_unqueue,
gdk_event_queue_find_first, gdk_event_queue_remove_link,
gdk_event_queue_append, gdk_event_button_generate,
gdk_debug_flags, gdk_default_filters, gdk_parent_root.
* gdk/x11/{gdkevents-x11.c, gdkglobals-x11.c, gdkimage-x11.c,
gdkmain-x11.c, gdkprivate-x11.h, gdk/x11/gdkwindow-x11.c}:
gdk => _gdk for gdk_event_mask_table, gkd_nevent_masks,
gdk_wm_window_protocols, gdk_leader_window, gdk_xgrab_window,
gdk_use_xshm, gdk_input_ignore_core.
* gdk/x11/xsettings-common.h (xsettings_list_insert): Add
#defines to namespace functions into the private _gdk_
namespace.
* gdk/gdkwindow.[ch] gdk/x11/gdkx.h: Add gdk_get_default_root_window ()
to replace gdk_parent_root exported variable. Adjust and
deprecate GDK_ROOT_PARENT().
* demos/{testpixbuf-drawable.c,testpixbuf-save.c}: Fix
GDK_ROOT_PARENT usage, remove includes of port-specific
headers.
* gdk/{win32,x11,fb}/gdkinput*.[ch]: s/gdk/_gdk/ for
_gdk_input_gxid_host, _gdk_input_gxid_port, _gdk_input_ignore_core,
gdk_input_devices, _gdk_input_windows, gdk_init_input_core.
* gdk/x11/{gdkevents-x11.,c gdkglobals-x11.c, gdkmain-x11.c}
docs/Changes-2.0.txt: Remove gdk_wm_protocols,
gdk_wm_delete_window functions, gdk_wm_take_focus,
use gdk_atom_intern() instead.
* gdk/linux-fb/{gdkselection-fb.c, gdkmain-fb.c, gdkprivatefb.h}
gdk/win32/{gdkselection-win32.c, gdkmgdkwin32.h, gdkprivate-win32.h}
gdk/x11/{gdkselection-x11.c gdkx.h, gtkprivate-x11.h}
gtk/gtkselection.c
Unexport gdk_selection_property, just use
gdk_atom_intern ("GDK_SELECTION").
* gdk/x11/{gdkprivate-x11.h,gdkdrawable-x11h,gdkgc-x11.c,gdkx.h}:
Unexport gdk_drawable_impl_x11_get_type, gdk_gc_x11_get_type,
GDK_GC_X11 cast macros, GdkGCX11 structures, GdkCursorPrivate,
GdkVisualprivate, gdk_x11_gc_flush.
Make a number of public exports of variables into functions
to increase encapsulation.
* gdk/gdkinternals.h gdk/gdkinput.h gdk/gdkevents.h
gdk/linux-fb/gdkmouse-fb.c: gdk_core_pointer => _gdk_core_pointer,
move to gdkinternals.h. Add gdk_device_get_core_pointer ().
* gdk/gdkprivate.h gdk/gdkpango.c gdk/gdkinternals.h
docs/Changes-2.0.txt: Unexport gdk_parent_root, gdk_error_code,
gdk_error_warnings.
* gdk/x11/{gdkcolormap-x11.c, gdkmain-x11.c, gdkx.h}
docs/Changes-2.0.txt:
s/gdk_screen/_gdk_screen/, add gdk_x11_get_default_screen()
s/gdk_root_window/_gdk_root_window/, add gdk_x11_get_default_root_xwindow()
Add gdk_x11_get_default_xdisplay().
* gdk/gdk.h gdk/gdk.c linux-fb/gdkfb.h linux-fb/gdkglobals-fb.c
win32/gdkwin32.h x11/gdkglobals-x11.c gdk/x11/gdkmain-x11.c
gdk/x11/gdkx.h: gdk/gdk.def: Add gdk_get/set_program_class,
Don't export gdk_progclass, move --class command line
option and handling to common portion of GDK.
Miscellaneous fixes:
* gdk/x11/gdkwindow-x11.c (gdk_window_set_icon_list): Fix
g_return_val_if_fail that should have been g_return_if_fail.
* gdk/gdkinternals.h gdk/gdkprivate.h: Move
gdk_synthesize_window_state() to the semi-public gdkprivate.h.
* gtk/gtkdnd.c (_gtk_drag_source_handle_event): Remove uneeded
X11 dependency.
* gdk/linux-fb/gdkmain-fb.c gdk/win32/gdkmain-win32.c gdk/TODO:
Remove unused gdk_key_repeat_disable/restore.
* linux-fb/gdkglobals-fb.c win32/gdkglobals-win32.c
x11/gdkglobals-x11.c x11/gdkprivate-x11.h gdk/gdk.def:
Remove unused gdk_null_window_warnings variable.
* gdk/Makefile.am (DIST_SUBDIRS) nanox/*: cvs remove nanox;
it can be retrieved from the repository; it is too far
from functional to be worth having people check out;
it would be easier to start from scratch, I suspect.
* gdk/x11/gdkpixmap-x11.c: Fix lvalue usage of GDK_PIXMAP_XID().
* gdk/x11/gdkkeys-x11.c gdk/gdkrgb.c gdk/gdkwindow.c
gdk/x11/gdkpango-x11.c gdk/x11/gdkselection-x11.c:
Fix some accidentally global variables and unused global variables.
* gdk/x11/gdkkeys-x11.c gdk/gdkrgb.c gdk/gdkwindow.c
gdk/x11/gdkpango-x11.c gdk/x11/gdkselection-x11.c:
Fix some accidentally global variables and unused global variables.
Add some space for future expansion to multihead.
* gdk/gdkdrawable.h: Add four reserved function pointers
for future expansion of GdkDrawableClass.
* gtk/gtkwindow.h gtk/gtkinvisible.h: Add reserved pointer
where we can put a GdkScreen * later.
2001-09-07 21:50:20 +00:00
|
|
|
return (_gdk_debug_flags & GDK_DEBUG_EVENTS) != 0;
|
1998-12-15 13:54:20 +00:00
|
|
|
}
|
|
|
|
|
[ Merges from gtk-1-2 ]
Wed Sep 8 07:13:29 1999 Tim Janik <timj@gtk.org>
* configure.in: fixed "GNU Make" check to pass with new make version
3.77.95.
Fri Sep 3 16:04:41 1999 Tim Janik <timj@gtk.org>
* gtk-config.in (--version): don't echo @GTK_VERSION@, but
@GTK_MAJOR_VERSION@.@GTK_MINOR_VERSION@.@GTK_MICRO_VERSION@, so the
AM_PATH_GTK() macros don't get confused by the -pre1.
Thu Sep 2 19:02:37 1999 Owen Taylor <otaylor@redhat.com>
* configure.in (REBUILD): Change check for perl5
to check explicitely for v >= 5.002. (5.001
does not work with our scripts.)
Wed Aug 25 15:45:46 1999 Tim Janik <timj@gtk.org>
* configure.in: evaluate $PERL for the perl version check. added
--disable-rebuilds to give the user an option to completely disable
any source autogeneration rules.
Mon Aug 23 23:16:14 1999 Tim Janik <timj@gtk.org>
* configure.in: evaluate $ac_make when checking for GNU Make.
Mon Aug 23 19:11:17 1999 Tim Janik <timj@gtk.org>
* docs/Makefile.am: added generation.txt.
* Makefile.am: require automake 1.4, build README from README.in and
INSTALL from INSTALL.in in dist-hook.
* README.in:
* INSTALL.in: new files to autogenerate README and INSTALL from.
* configure.in: figure whether we have GNU Make
* docs/generation.txt: minor additions/corrections.
Wed Aug 11 13:38:26 BST 1999 Tony Gale <gale@gtk.org>
* docs/gtkfaq.sgml: FAQ Update
July 30, 1999 Elliot Lee <sopwith@redhat.com>
* configure.in: Fix autoconf warnings about cross compilation by
trying to provide sane defaults for AC_TRY_RUN.
Fri Jul 16 22:20:21 PDT 1999 Manish Singh <yosh@gimp.org>
* ltconfig
* ltmain.sh: upgrade to libtool 1.3.3
Thu Jul 8 11:30:18 1999 Owen Taylor <otaylor@redhat.com>
* INSTALL: Indicate that the --with-glib= configure
time flag is unsupported.
Mon Jul 5 20:36:03 1999 Owen Taylor <otaylor@redhat.com>
* docs/generation.txt: Added a file that gives
documenation about the autogeneration process for
various autogenerated files.
Tue Jun 29 15:59:25 1999 Owen Taylor <otaylor@redhat.com>
* configure.in (LIBS): Look for libgmodule in the
right location.
Thu Jun 17 13:57:31 1999 Owen Taylor <otaylor@redhat.com>
* docs/gtk_tut.sgml: Removed references to
code examples in my directory on gtk.org as
they should all be in the tutorial now.
* docs/gtk_tut.sgml: Added sources for dial-test
and scribble-xinput programs that were previously
missing.
Fri Jun 4 00:08:59 1999 Owen Taylor <otaylor@redhat.com>
* TODO: Added entry about menu keyboard navigation, removed
some finished items.
Mon May 31 00:11:24 1999 Owen Taylor <otaylor@redhat.com>
* acinclude.m4: Standardize on func_dgettext
not func_gettext, so that the checks for dgettext
actually are paid attention to.
Wed May 5 10:47:54 1999 Owen Taylor <otaylor@redhat.com>
* configure.in (LIBS): Add $INTLLIBS into $LIBS
directly, rather than repeating the checks for
gettext.
* INSTALL: Added information about gettext and
NLS support.
* acinclude.m4 (LIBM): Check for dgettext, not
just gettext. This should hopefully fix things wrt
systems with old versions of GNU gettext installed.
Tue Jun 29 15:59:25 1999 Owen Taylor <otaylor@redhat.com>
* configure.in (LIBS): Look for libgmodule in the
right location.
Thu Apr 1 16:58:10 PST 1999 Manish Singh <yosh@gimp.org>
* autogen.sh: add --enable-maintainer-mode
* configure.in: set ACLOCAL="$ACLOCAL $ACLOCAL_FLAGS"
Wed Mar 24 23:03:49 CST 1999 Shawn T. Amundson <amundson@gtk.org>
* docs/gtk-config.1.in:
docs/Makefile.am:
configure.in: gtk-config is now generated.
* docs/gtk-config.1: Removed, now generated.
Thu Sep 23 17:59:59 1999 Tim Janik <timj@gtk.org>
* gdk/gdkevents.c (gdk_event_translate): grr, even if Gdk doesn't
handle CreateNotify itself, still put out a debuging message for
--gdk-debug=events. made the ReparentNotify debugging message more
verbose.
wrap xcoords translation for ConfigureEvents into an error trap,
a destroy event may already be pending, and in that case, the
actuall coordinate values are not at all critical.
Sat Sep 18 22:24:15 1999 Owen Taylor <otaylor@redhat.com>
* gdk/gdkcc.c: Stop leaking the color_hash all over
the place. Simplify and improve the logic.
Fri Sep 17 09:57:15 1999 Tim Janik <timj@gtk.org>
* gdk/gdk.h, gdk/gdkcolor.c: make return types (gint or gboolean)
for prototypes and function implementations consistent (reported
by Tomas Ogren).
Tue Sep 14 18:23:01 1999 Tim Janik <timj@gtk.org>
* gdk/gdkevents.c (gdk_event_translate): tell if expose events have
send_event set in debugging output.
(gdk_compress_exposures): default initialize the event so we don't
operate on bogus values (namely send_event).
Thu Sep 2 16:33:59 1999 Owen Taylor <otaylor@redhat.com>
* gdk/gdkwindow.c: When we receive an unexpected
destroy notify on one of our windows, don't just
warn about it, also mark our windows as destroyed.
Sun Sep 5 08:10:53 1999 Owen Taylor <otaylor@redhat.com>
* gdk/gdkfont.c (gdk_font_hash_insert): Add
name => font and name => fontset hashes. The
name => fontset hash is a _big_ win since we
weren't previously caching fontsets at all and loading
fontsets is expensive. The name => font hash
is less of a win, but it does save us from doing
repeated XQueryFont calls on the same font.
* gdk/gdkprivate.h (struct _GdkFontPrivate): Add a names
list so we can remove font/fontset from hash.
Thu Sep 2 19:02:37 1999 Owen Taylor <otaylor@redhat.com>
* gdk/gdkproperty.c (gdk_atom_intern): Remove useless
and slightly confusing test. [ XInternAtom (,,TRUE)
will never return None ].
Sat Sep 4 08:39:26 1999 Owen Taylor <otaylor@redhat.com>
* gdk/gdkwindow.c (gdk_window_set_geometry_hints)
gdk/gdkwindow.c (gdk_window_set_hints):
Don't omit setting the properties if flags == 0 -
there may be an existing set of properties there
already. (Very old bug. Would it be better to
delete the property instead?)
* gdk/gdkselection.c (gdk_selection_property_get): Fix
spelling error in comment.
Wed Sep 1 14:05:30 1999 Owen Taylor <otaylor@redhat.com>
* gdk/gdkimage.c (gdk_image_new): Use gdk_error_trap_push()
to avoid stomping over gdk_error_warnings.
* gdk/gdkimage.c (gdk_image_new): compute image->bpp
as (bits_per_pixel + 7) / 8. This gives the same
result as before for multiples of 8, but actually
a "reasonable" value for 1bit or 4bit displays.
Mon Aug 23 19:11:17 1999 Tim Janik <timj@gtk.org>
* gdk/Makefile.am: minor cleanups, strip spaces on build rules for
GNU Make.
Tue Aug 17 07:43:04 1999 Tim Janik <timj@gtk.org>
* gdk/gdkevents.c (gdk_event_translate): give a debugging note when
discarding configure events.
1999-08-18 Federico Mena Quintero <federico@redhat.com>
* gdk/gdkpixmap.c (gdk_pixmap_unref): g_return_if_fail() the
refcount is greater than zero.
* gdk/gdkwindow.c (gdk_window_unref): Likewise.
* gdk/gdkfont.c (gdk_font_unref): Likewise.
* gdk/gdkgc.c (gdk_gc_unref): Likewise.
* gdk/gdkdnd.c (gdk_drag_context_unref): Likewise.
Wed Aug 11 01:04:57 1999 Owen Taylor <otaylor@redhat.com>
* gdk/gdkproperty.c (gdk_property_get): Fix assumption
that format 32 => sizeof(item) == 4. It really is
sizeof(long).
Tue Jun 29 23:02:42 1999 Owen Taylor <otaylor@redhat.com>
* gdk/gdk.c (gdk_x_error / gdk_x_io_error): Don't
core dump at all on X IO errors, only core dump
if --enable-debug for X errors.
Thu Jun 24 17:06:23 1999 Tim Janik <timj@gtk.org>
* gdk/gdkevents.c (gdk_event_translate): removed old ""Got event for
unknown window:" message. disabled ConfigureNotify discarding code,
because it led to events being processed out of order.
Thu Jun 24 12:22:02 1999 Tim Janik <timj@gtk.org>
* gdk/gdkglobals.c: preinitialize gdk_error_code to 0.
* gdk/gdkevents.c (gdk_event_send_client_message_to_all_recurse): since
we export this function, supress error warnings and don't reset the
error code in the first half of this function.
* gdk/gdk.c (gdk_x_error): set gdk_error_code to the actuall X error
code (instead of just -1) so gdk_error_trap_pop() reveals something
actually informative about the error that happened.
* gdk/*.c:
don't rely on gdk_error_code being -1 if an error occoured, but just
gdk_error_code != 0.
Thu Jun 24 11:50:07 1999 Tim Janik <timj@gtk.org>
* gdk/gdkevents.c (gdk_event_apply_filters): advance the filter list
pointer *before* invoking the filter function, so we at least don't
crash if a filter is removed that is currently executed. window filters
*really* need to be made truely reentrant at some point.
Mon Jun 14 11:10:15 1999 Tim Janik <timj@gtk.org>
* gdk/gdkevents.c (gdk_event_translate): print the atom name in the
PropertyNotify debug messages.
Wed May 5 22:51:06 1999 Owen Taylor <otaylor@redhat.com>
Patch from Sung-Hyun Nam <namsh@lgic.co.kr>
* gdk/gdkim.c: Fix cut-and-paste errors for
x/y and PreeditAttributes/StatusAttributes.
Wed May 5 22:24:21 1999 Owen Taylor <otaylor@redhat.com>
* gdk/gdkwindow.c (gdk_window_set_geometry_hints): Change
G_MAXINT to 2^16 to alleviate overflow problems in
various window managers.
Wed Apr 21 00:42:08 1999 Owen Taylor <otaylor@redhat.com>
* gdk/gdkfont.c (gdk_text_measure): Fix the return value
for fontsets.
Wed May 5 12:42:01 1999 Owen Taylor <otaylor@redhat.com>
* gdk/gdkwindow.c (gdk_window_set_geometry_hints):
Initialize size_hints.x and size_hints.y because kwm
brokenly pays attention to them.
(Bug #1181 - Lars Heete <hel@admin.de>)
Wed May 5 11:38:56 1999 Owen Taylor <otaylor@redhat.com>
* gdk/gdkrgb.c (gdk_rgb_choose_visual): Free the
return value of gdk_list_visuals().
(Bug #1193 - Morten Welinder <terra@diku.dk>)
Tue May 4 11:12:56 PDT 1999 Manish Singh <yosh@gimp.org>
* gdk/gdkim.c (gdk_im_real_open): cast the return value of
XSetIMValues to (void *) when comparing to NULL, to workaround
the problem of some compilers barfing since older X headers don't
have the prototype for it.
Mon Apr 19 10:11:12 1999 Owen Taylor <otaylor@redhat.com>
* gdk/gdkcolor.c (gdk_colormap_new): Fix memory leak
for pseudocolor where colormap->colors was double
allocated.
* gdk/gdkcolor.c (gdk_colormap_alloc1): Store the
color value in the hash table with the pixel filled
in so when we do later hash table lookups, the color
value is correct.
Sun May 2 15:29:45 PDT 1999 Manish Singh <yosh@gimp.org>
* gdk/gdkdraw.c (gdk_draw_lines): check private->destroyed before
making the call
Tue Apr 27 11:17:35 1999 Owen Taylor <otaylor@redhat.com>
* gdk/gdkdnd.c (xdnd_set_{targets,actions}): Fix leak
pointed out by Morten Welinder <terra@diku.dk>.
Wed Apr 21 14:20:22 1999 George Lebl <jirka@5z.com>
* gdk/gdkwindow.c: (gdk_window_remove_filter) correctly remove the
default filter from the list
Wed Apr 21 14:20:22 1999 George Lebl <jirka@5z.com>
* gdk/gdkwindow.c: (gdk_window_remove_filter) correctly remove the
default filter from the list
Fri Apr 16 20:41:43 PDT 1999 Manish Singh <yosh@gimp.org>
* gdk/gdk.c: #include "gdkkeysyms.h" for gdk_XConvertCase #defines
* gtk/gtkfontsel.c (gtk_font_selection_create_xlfd): use
g_strdup_printf instead of calcing the length separately
Tue Apr 13 02:49:33 1999 Owen Taylor <otaylor@redhat.com>
* gdk/gdkwindow.c: removed some silly #ifdef HAVE_CONFIG
that we don't do in many other places. (Fixing duplicate
#include of config.h)
* gdk/gdkevents.c: include gdkinput.h _after_ config.h.
Otherwise, #ifndef XINPUT_NONE check in the latter
doesn't work. (Bug #546)
Sun Apr 11 14:38:03 1999 Tim Janik <timj@gtk.org>
* gdk/gdkpixmap.c (_gdk_pixmap_create_from_xpm): check for color
"None" case insensitive.
Tue Apr 6 16:38:51 1999 Owen Taylor <otaylor@redhat.com>
* gdk/gdkselection.c:
Add error traps so if the other end of the connection
dies, we survive.
Tue Apr 6 12:24:21 1999 Owen Taylor <otaylor@redhat.com>
* gdk/gdkdnd.c (gdk_drag_motion): Separate out the
dest_xid field into two fields - one for the window
to send in messages, one to indicate the last looked
up window for caching purposes. This is needed, so
that Leave messages get the correct window.
Mon Apr 5 13:21:30 1999 Owen Taylor <otaylor@redhat.com>
* gdk/gdkevents.c (gdk_event_check, gdk_event_prepare):
Fix warning created by people mucking around
with the gsource API.
* gdk/gdkevents.c (gdk_io_invoke, gdk_input_add_full):
Change mapping between GIOCondition and GdkInputCondition
to match the way the Linux kernel does it. This should
fix problems where closed pipes were no longer signalling
GDK_INPUT_READ on systems with a native poll().
Mon Apr 5 17:11:57 1999 Owen Taylor <otaylor@redhat.com>
* gdk/gdkpixmap.c (_gdk_pixmap_create_from_xpm): Check
explicitly for the string "None" - it is in the XPM
spec and some servers treat unknown colors in odd ways
(like asking the user!)
Thu Apr 1 16:58:10 PST 1999 Manish Singh <yosh@gimp.org>
* gdk/gdkevents.c: made "->" into a "." of previous change so
it compiles
Thu Apr 1 18:41:25 1999 Owen Taylor <otaylor@redhat.com>
* gdk/gdkevents.c (gdk_compress_exposures): Set the
window field of the event structure before calling
user filters.
1999-03-31 Federico Mena Quintero <federico@nuclecu.unam.mx>
* gdk/gdk.c (gdk_init_check): Use False as the last argument to
XInternAtom() here. This is a particularly Old And Nasty(tm) bug.
Mon Mar 29 17:31:52 1999 Owen Taylor <otaylor@redhat.com>
* gdk/gdkim.c (gdk_mbstowcs): Free the value of the
intermediate text property - prevents major memory
leak when gdk_use_mb.
gtk-d3august-990311-0: Bj|rn Augustsson <d3august@dtek.chalmers.se>
Mon Mar 29 17:02:58 1999 Owen Taylor <otaylor@redhat.com>
Patches from Akira Higuchi <a-higuti@math.sci.hokudai.ac.jp>
gtk-a-higuti-990322-[0-3]
* gdk/gdkfont.c (gdk_text_extents_wc): Make work when
sizeof(wchar_t) != sizeof (GdkWChar)
* configure.in: Fix confusion between GTK_LOCALE_[C]FLAGS
that was causing -DX_LOCALE not to work.
* gtk/gtkrc.c (gtk_rc_init):
X_LOCALE will never have LC_MESSAGES defined
* gdk/gdk.c (gdk_init_check):
Remove --xim-preedit and --xim-status from argv properly.
* gdk/gdkim.c (gdk_ic_real_new): Add a gdk_flush() so
that the client window is present on the X server
before we pass it to the input method.
Tue Mar 9 10:46:49 1999 Owen Taylor <otaylor@redhat.com>
* gdk/gdkdnd.c (motif_find_drag_window): Fix bug where
if --display is specified on the command line, than
the drag window will not be created on that display.
Tue Mar 9 10:38:24 1999 Owen Taylor <otaylor@redhat.com>
* gdk/gdkproperty.c (gdk_atom_intern): Fixed bug where
lookups with only_if_exists == TRUE were inserting
bogus values into the atom cache.
Wed Mar 17 09:00:00 1999 Tim Janik <timj@gtk.org>
* gdk/gdkselection.c (gdk_selection_property_get): first XFree(t),
then reset it to NULL.
* gdk/gdkcolor.c:
(gdk_colors_free):
(gdk_colormap_free_colors): use colormap->colors[in_pixels[i]] as the
key for g_hash_table_remove() in both functions, this prevents us
from accessing possibly uninitialized portions of a GdkColor structure
where we are only interested in its pixel value.
Tue Mar 9 01:01:28 1999 Tim Janik <timj@gtk.org>
* gdk/gdkfont.c (gdk_font_load): first lookup the xfont ID in our
font hash table, if we have a GdkFontPrivate entry for this font
already, simply increment its reference count, provided by Olaf Dietsche
<olaf.dietsche+list.gtk@netcologne.de>.
1999-09-21 Tor Lillqvist <tml@iki.fi>
1999-09-28 20:19:13 +00:00
|
|
|
/* What do we do with G_IO_NVAL?
|
|
|
|
*/
|
|
|
|
#define READ_CONDITION (G_IO_IN | G_IO_HUP | G_IO_ERR)
|
|
|
|
#define WRITE_CONDITION (G_IO_OUT | G_IO_ERR)
|
|
|
|
#define EXCEPTION_CONDITION (G_IO_PRI)
|
|
|
|
|
2001-10-28 21:28:51 +00:00
|
|
|
static void
|
2002-04-25 22:29:14 +00:00
|
|
|
gdk_synthesize_click (GdkDisplay *display,
|
2011-01-20 03:52:55 +00:00
|
|
|
GdkEvent *event,
|
|
|
|
gint nclicks)
|
1998-12-15 13:54:20 +00:00
|
|
|
{
|
2008-07-18 13:03:42 +00:00
|
|
|
GdkEvent *event_copy;
|
|
|
|
|
2011-01-20 03:52:55 +00:00
|
|
|
event_copy = gdk_event_copy (event);
|
|
|
|
event_copy->type = (nclicks == 2) ? GDK_2BUTTON_PRESS : GDK_3BUTTON_PRESS;
|
|
|
|
|
2011-01-23 23:50:09 +00:00
|
|
|
_gdk_event_queue_append (display, event_copy);
|
1998-12-15 13:54:20 +00:00
|
|
|
}
|
|
|
|
|
1999-11-08 20:14:59 +00:00
|
|
|
void
|
2002-04-25 22:29:14 +00:00
|
|
|
_gdk_event_button_generate (GdkDisplay *display,
|
|
|
|
GdkEvent *event)
|
1998-12-15 13:54:20 +00:00
|
|
|
{
|
2010-05-25 22:38:44 +00:00
|
|
|
GdkMultipleClickInfo *info;
|
|
|
|
|
2011-01-20 03:52:55 +00:00
|
|
|
g_return_if_fail (event->type == GDK_BUTTON_PRESS);
|
|
|
|
|
2010-05-25 22:38:44 +00:00
|
|
|
info = g_hash_table_lookup (display->multiple_click_info, event->button.device);
|
|
|
|
|
|
|
|
if (G_UNLIKELY (!info))
|
|
|
|
{
|
|
|
|
info = g_new0 (GdkMultipleClickInfo, 1);
|
|
|
|
info->button_number[0] = info->button_number[1] = -1;
|
|
|
|
|
|
|
|
g_hash_table_insert (display->multiple_click_info,
|
|
|
|
event->button.device, info);
|
|
|
|
}
|
|
|
|
|
|
|
|
if ((event->button.time < (info->button_click_time[1] + 2 * display->double_click_time)) &&
|
|
|
|
(event->button.window == info->button_window[1]) &&
|
|
|
|
(event->button.button == info->button_number[1]) &&
|
|
|
|
(ABS (event->button.x - info->button_x[1]) <= display->double_click_distance) &&
|
|
|
|
(ABS (event->button.y - info->button_y[1]) <= display->double_click_distance))
|
|
|
|
{
|
2002-04-25 22:29:14 +00:00
|
|
|
gdk_synthesize_click (display, event, 3);
|
2010-05-25 22:38:44 +00:00
|
|
|
|
|
|
|
info->button_click_time[1] = 0;
|
|
|
|
info->button_click_time[0] = 0;
|
|
|
|
info->button_window[1] = NULL;
|
|
|
|
info->button_window[0] = NULL;
|
|
|
|
info->button_number[1] = -1;
|
|
|
|
info->button_number[0] = -1;
|
|
|
|
info->button_x[0] = info->button_x[1] = 0;
|
|
|
|
info->button_y[0] = info->button_y[1] = 0;
|
1998-12-15 13:54:20 +00:00
|
|
|
}
|
2010-05-25 22:38:44 +00:00
|
|
|
else if ((event->button.time < (info->button_click_time[0] + display->double_click_time)) &&
|
|
|
|
(event->button.window == info->button_window[0]) &&
|
|
|
|
(event->button.button == info->button_number[0]) &&
|
|
|
|
(ABS (event->button.x - info->button_x[0]) <= display->double_click_distance) &&
|
|
|
|
(ABS (event->button.y - info->button_y[0]) <= display->double_click_distance))
|
1998-12-15 13:54:20 +00:00
|
|
|
{
|
2002-04-25 22:29:14 +00:00
|
|
|
gdk_synthesize_click (display, event, 2);
|
1999-11-08 20:14:59 +00:00
|
|
|
|
2010-05-25 22:38:44 +00:00
|
|
|
info->button_click_time[1] = info->button_click_time[0];
|
|
|
|
info->button_click_time[0] = event->button.time;
|
|
|
|
info->button_window[1] = info->button_window[0];
|
|
|
|
info->button_window[0] = event->button.window;
|
|
|
|
info->button_number[1] = info->button_number[0];
|
|
|
|
info->button_number[0] = event->button.button;
|
|
|
|
info->button_x[1] = info->button_x[0];
|
|
|
|
info->button_x[0] = event->button.x;
|
|
|
|
info->button_y[1] = info->button_y[0];
|
|
|
|
info->button_y[0] = event->button.y;
|
1998-12-15 13:54:20 +00:00
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
2010-05-25 22:38:44 +00:00
|
|
|
info->button_click_time[1] = 0;
|
|
|
|
info->button_click_time[0] = event->button.time;
|
|
|
|
info->button_window[1] = NULL;
|
|
|
|
info->button_window[0] = event->button.window;
|
|
|
|
info->button_number[1] = -1;
|
|
|
|
info->button_number[0] = event->button.button;
|
|
|
|
info->button_x[1] = 0;
|
|
|
|
info->button_x[0] = event->button.x;
|
|
|
|
info->button_y[1] = 0;
|
|
|
|
info->button_y[0] = event->button.y;
|
1998-12-15 13:54:20 +00:00
|
|
|
}
|
|
|
|
}
|
2001-02-27 20:40:15 +00:00
|
|
|
|
|
|
|
void
|
|
|
|
gdk_synthesize_window_state (GdkWindow *window,
|
|
|
|
GdkWindowState unset_flags,
|
|
|
|
GdkWindowState set_flags)
|
|
|
|
{
|
2001-12-04 17:12:35 +00:00
|
|
|
GdkEvent temp_event;
|
2001-02-27 20:40:15 +00:00
|
|
|
GdkWindowState old;
|
|
|
|
|
|
|
|
g_return_if_fail (window != NULL);
|
|
|
|
|
2001-12-04 17:12:35 +00:00
|
|
|
temp_event.window_state.window = window;
|
|
|
|
temp_event.window_state.type = GDK_WINDOW_STATE;
|
|
|
|
temp_event.window_state.send_event = FALSE;
|
2001-02-27 20:40:15 +00:00
|
|
|
|
2010-11-22 23:55:39 +00:00
|
|
|
old = temp_event.window_state.window->state;
|
2001-02-27 20:40:15 +00:00
|
|
|
|
2001-12-04 17:12:35 +00:00
|
|
|
temp_event.window_state.new_window_state = old;
|
|
|
|
temp_event.window_state.new_window_state |= set_flags;
|
|
|
|
temp_event.window_state.new_window_state &= ~unset_flags;
|
implement maximize for linux-fb
Thu Oct 3 16:40:18 2002 Eric Warmenhoven <eric@warmenhoven.org>
* gdk/gdkevents.c, gdk/linux-fb/gdkwindow-fb.c,
gtk/gtkwindow-decorate.c: implement maximize for linux-fb
* gdk/linux-fb/gdkkeyboard-fb.c: implement raw keyboard mode
* gdk/linux-fb/Makefile.am, gdk/linux-fb/gdkdnd-fb.c,
gdk/linux-fb/gdkmain-fb.c, gdk/linux-fb/gdkselection-fb.c,
gdk/linux-fb/miarc.c, gdk/linux-fb/mifpolycon.c,
gdk/linux-fb/miwideline.c, gdk/linux-fb/mizerclip.c,
gdk/linux-fb/mizerline.c: small cleanups
2002-10-03 23:45:03 +00:00
|
|
|
temp_event.window_state.changed_mask = temp_event.window_state.new_window_state ^ old;
|
2001-02-27 20:40:15 +00:00
|
|
|
|
2001-12-04 17:12:35 +00:00
|
|
|
if (temp_event.window_state.new_window_state == old)
|
2001-02-27 20:40:15 +00:00
|
|
|
return; /* No actual work to do, nothing changed. */
|
|
|
|
|
|
|
|
/* Actually update the field in GdkWindow, this is sort of an odd
|
|
|
|
* place to do it, but seems like the safest since it ensures we expose no
|
|
|
|
* inconsistent state to the user.
|
|
|
|
*/
|
|
|
|
|
2010-11-22 23:55:39 +00:00
|
|
|
window->state = temp_event.window_state.new_window_state;
|
2001-02-27 20:40:15 +00:00
|
|
|
|
2009-07-18 18:29:50 +00:00
|
|
|
if (temp_event.window_state.changed_mask & GDK_WINDOW_STATE_WITHDRAWN)
|
|
|
|
_gdk_window_update_viewable (window);
|
|
|
|
|
2001-02-27 20:40:15 +00:00
|
|
|
/* We only really send the event to toplevels, since
|
|
|
|
* all the window states don't apply to non-toplevels.
|
|
|
|
* Non-toplevels do use the GDK_WINDOW_STATE_WITHDRAWN flag
|
|
|
|
* internally so we needed to update window->state.
|
|
|
|
*/
|
2010-11-22 23:55:39 +00:00
|
|
|
switch (window->window_type)
|
2001-02-27 20:40:15 +00:00
|
|
|
{
|
|
|
|
case GDK_WINDOW_TOPLEVEL:
|
|
|
|
case GDK_WINDOW_TEMP: /* ? */
|
2010-08-29 00:08:47 +00:00
|
|
|
gdk_display_put_event (gdk_window_get_display (window), &temp_event);
|
2001-02-27 20:40:15 +00:00
|
|
|
break;
|
|
|
|
|
|
|
|
case GDK_WINDOW_FOREIGN:
|
|
|
|
case GDK_WINDOW_ROOT:
|
|
|
|
case GDK_WINDOW_CHILD:
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2001-10-03 18:19:48 +00:00
|
|
|
/**
|
2002-04-25 22:29:14 +00:00
|
|
|
* gdk_display_set_double_click_time:
|
|
|
|
* @display: a #GdkDisplay
|
|
|
|
* @msec: double click time in milliseconds (thousandths of a second)
|
|
|
|
*
|
2001-10-03 18:19:48 +00:00
|
|
|
* Sets the double click time (two clicks within this time interval
|
|
|
|
* count as a double click and result in a #GDK_2BUTTON_PRESS event).
|
2003-12-16 00:56:48 +00:00
|
|
|
* Applications should <emphasis>not</emphasis> set this, it is a global
|
|
|
|
* user-configured setting.
|
2002-11-28 00:33:17 +00:00
|
|
|
*
|
|
|
|
* Since: 2.2
|
2002-04-25 22:29:14 +00:00
|
|
|
**/
|
|
|
|
void
|
2002-06-20 18:55:56 +00:00
|
|
|
gdk_display_set_double_click_time (GdkDisplay *display,
|
|
|
|
guint msec)
|
2002-04-25 22:29:14 +00:00
|
|
|
{
|
|
|
|
display->double_click_time = msec;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* gdk_set_double_click_time:
|
|
|
|
* @msec: double click time in milliseconds (thousandths of a second)
|
2001-10-03 18:19:48 +00:00
|
|
|
*
|
2002-04-25 22:29:14 +00:00
|
|
|
* Set the double click time for the default display. See
|
2003-12-16 00:56:48 +00:00
|
|
|
* gdk_display_set_double_click_time().
|
|
|
|
* See also gdk_display_set_double_click_distance().
|
|
|
|
* Applications should <emphasis>not</emphasis> set this, it is a
|
|
|
|
* global user-configured setting.
|
2001-10-03 18:19:48 +00:00
|
|
|
**/
|
2001-04-02 23:33:47 +00:00
|
|
|
void
|
|
|
|
gdk_set_double_click_time (guint msec)
|
|
|
|
{
|
2002-06-20 23:59:27 +00:00
|
|
|
gdk_display_set_double_click_time (gdk_display_get_default (), msec);
|
2001-04-02 23:33:47 +00:00
|
|
|
}
|
|
|
|
|
2003-12-16 00:56:48 +00:00
|
|
|
/**
|
|
|
|
* gdk_display_set_double_click_distance:
|
|
|
|
* @display: a #GdkDisplay
|
|
|
|
* @distance: distance in pixels
|
|
|
|
*
|
|
|
|
* Sets the double click distance (two clicks within this distance
|
|
|
|
* count as a double click and result in a #GDK_2BUTTON_PRESS event).
|
|
|
|
* See also gdk_display_set_double_click_time().
|
|
|
|
* Applications should <emphasis>not</emphasis> set this, it is a global
|
|
|
|
* user-configured setting.
|
|
|
|
*
|
|
|
|
* Since: 2.4
|
|
|
|
**/
|
|
|
|
void
|
|
|
|
gdk_display_set_double_click_distance (GdkDisplay *display,
|
|
|
|
guint distance)
|
|
|
|
{
|
|
|
|
display->double_click_distance = distance;
|
|
|
|
}
|
|
|
|
|
2010-04-27 11:31:23 +00:00
|
|
|
G_DEFINE_BOXED_TYPE (GdkEvent, gdk_event,
|
|
|
|
gdk_event_copy,
|
|
|
|
gdk_event_free)
|
Make gdkx.h the only installed header from gdk/x11. All structures in
Fri Sep 7 11:51:44 2001 Owen Taylor <otaylor@redhat.com>
Make gdkx.h the only installed header from gdk/x11.
All structures in gdk/x11 are opaque.
* gdk/x11/Makefile.am gdk/x11/gdkx.h gdk/x11/gdkprivate-x11.h:
Don't install gdk{drawable,pixmap,window}-x11.h.
* gdk/x11/{gdkcolormap-x11.c, gdkfont-x11.c, gdkx.h, gdkvisual-x11.c:
Move GdkColormapPrivateX11, GdkFontPrivateX GdkImagePrivateX11,
GdkVisualClass into C files.
* gdk/gdkpixmap-x11.[ch]: Make gdk_pixmap_impl_get_type() static.
* gdk/x11/{gdkcolor-x11.c, gdkcursor-x11.c, gdkdrawable-x11.c,
gdkfont-x11.c, gdkgc-x11.c, gdkx.h, gdkimage-x11,gdkvisual-x11.c}
Add public functions to replace previously exported direct
structure access.
gdk_x11_colormap_get_{xdisplay,xcolormap}
gdk_x11_cursor_get_{xdisplay,xcursor},
gdk_x11_drawable_get_{xdisplay,xcursor,gdk_x11_visual_get_xvisual,
gdk_x11_font_get_{xdisplay,xfont}, gdk_x11_image_get_{xdisplay,ximage},
gdk_x11_gc_get_{xdisplay,ximage}
* gdk/gdkprivate.h gdk/gdkinternals.h: Move GdkColorInfo,
GdkEventFilter, GdkClientFilter, GdkFontPrivate to gdkinternals.
Fix a number of variables and functions that were exported
"accidentally" from GDK.
* gdk/**.[ch]: gdk => _gdk for gdk_visual_init,
gdk_events_init, gdk_input_init, gdk_dnd_init, gdk_image_exit,
gdk_input_exit, gdk_windowing_exit, gdk_event_func, gdk_event_data,
gdk_event_notify, gdk_queued_events, gdk_queued_tail,
gdk_event_new, gdk_events_queue, gdk_events_unqueue,
gdk_event_queue_find_first, gdk_event_queue_remove_link,
gdk_event_queue_append, gdk_event_button_generate,
gdk_debug_flags, gdk_default_filters, gdk_parent_root.
* gdk/x11/{gdkevents-x11.c, gdkglobals-x11.c, gdkimage-x11.c,
gdkmain-x11.c, gdkprivate-x11.h, gdk/x11/gdkwindow-x11.c}:
gdk => _gdk for gdk_event_mask_table, gkd_nevent_masks,
gdk_wm_window_protocols, gdk_leader_window, gdk_xgrab_window,
gdk_use_xshm, gdk_input_ignore_core.
* gdk/x11/xsettings-common.h (xsettings_list_insert): Add
#defines to namespace functions into the private _gdk_
namespace.
* gdk/gdkwindow.[ch] gdk/x11/gdkx.h: Add gdk_get_default_root_window ()
to replace gdk_parent_root exported variable. Adjust and
deprecate GDK_ROOT_PARENT().
* demos/{testpixbuf-drawable.c,testpixbuf-save.c}: Fix
GDK_ROOT_PARENT usage, remove includes of port-specific
headers.
* gdk/{win32,x11,fb}/gdkinput*.[ch]: s/gdk/_gdk/ for
_gdk_input_gxid_host, _gdk_input_gxid_port, _gdk_input_ignore_core,
gdk_input_devices, _gdk_input_windows, gdk_init_input_core.
* gdk/x11/{gdkevents-x11.,c gdkglobals-x11.c, gdkmain-x11.c}
docs/Changes-2.0.txt: Remove gdk_wm_protocols,
gdk_wm_delete_window functions, gdk_wm_take_focus,
use gdk_atom_intern() instead.
* gdk/linux-fb/{gdkselection-fb.c, gdkmain-fb.c, gdkprivatefb.h}
gdk/win32/{gdkselection-win32.c, gdkmgdkwin32.h, gdkprivate-win32.h}
gdk/x11/{gdkselection-x11.c gdkx.h, gtkprivate-x11.h}
gtk/gtkselection.c
Unexport gdk_selection_property, just use
gdk_atom_intern ("GDK_SELECTION").
* gdk/x11/{gdkprivate-x11.h,gdkdrawable-x11h,gdkgc-x11.c,gdkx.h}:
Unexport gdk_drawable_impl_x11_get_type, gdk_gc_x11_get_type,
GDK_GC_X11 cast macros, GdkGCX11 structures, GdkCursorPrivate,
GdkVisualprivate, gdk_x11_gc_flush.
Make a number of public exports of variables into functions
to increase encapsulation.
* gdk/gdkinternals.h gdk/gdkinput.h gdk/gdkevents.h
gdk/linux-fb/gdkmouse-fb.c: gdk_core_pointer => _gdk_core_pointer,
move to gdkinternals.h. Add gdk_device_get_core_pointer ().
* gdk/gdkprivate.h gdk/gdkpango.c gdk/gdkinternals.h
docs/Changes-2.0.txt: Unexport gdk_parent_root, gdk_error_code,
gdk_error_warnings.
* gdk/x11/{gdkcolormap-x11.c, gdkmain-x11.c, gdkx.h}
docs/Changes-2.0.txt:
s/gdk_screen/_gdk_screen/, add gdk_x11_get_default_screen()
s/gdk_root_window/_gdk_root_window/, add gdk_x11_get_default_root_xwindow()
Add gdk_x11_get_default_xdisplay().
* gdk/gdk.h gdk/gdk.c linux-fb/gdkfb.h linux-fb/gdkglobals-fb.c
win32/gdkwin32.h x11/gdkglobals-x11.c gdk/x11/gdkmain-x11.c
gdk/x11/gdkx.h: gdk/gdk.def: Add gdk_get/set_program_class,
Don't export gdk_progclass, move --class command line
option and handling to common portion of GDK.
Miscellaneous fixes:
* gdk/x11/gdkwindow-x11.c (gdk_window_set_icon_list): Fix
g_return_val_if_fail that should have been g_return_if_fail.
* gdk/gdkinternals.h gdk/gdkprivate.h: Move
gdk_synthesize_window_state() to the semi-public gdkprivate.h.
* gtk/gtkdnd.c (_gtk_drag_source_handle_event): Remove uneeded
X11 dependency.
* gdk/linux-fb/gdkmain-fb.c gdk/win32/gdkmain-win32.c gdk/TODO:
Remove unused gdk_key_repeat_disable/restore.
* linux-fb/gdkglobals-fb.c win32/gdkglobals-win32.c
x11/gdkglobals-x11.c x11/gdkprivate-x11.h gdk/gdk.def:
Remove unused gdk_null_window_warnings variable.
* gdk/Makefile.am (DIST_SUBDIRS) nanox/*: cvs remove nanox;
it can be retrieved from the repository; it is too far
from functional to be worth having people check out;
it would be easier to start from scratch, I suspect.
* gdk/x11/gdkpixmap-x11.c: Fix lvalue usage of GDK_PIXMAP_XID().
* gdk/x11/gdkkeys-x11.c gdk/gdkrgb.c gdk/gdkwindow.c
gdk/x11/gdkpango-x11.c gdk/x11/gdkselection-x11.c:
Fix some accidentally global variables and unused global variables.
* gdk/x11/gdkkeys-x11.c gdk/gdkrgb.c gdk/gdkwindow.c
gdk/x11/gdkpango-x11.c gdk/x11/gdkselection-x11.c:
Fix some accidentally global variables and unused global variables.
Add some space for future expansion to multihead.
* gdk/gdkdrawable.h: Add four reserved function pointers
for future expansion of GdkDrawableClass.
* gtk/gtkwindow.h gtk/gtkinvisible.h: Add reserved pointer
where we can put a GdkScreen * later.
2001-09-07 21:50:20 +00:00
|
|
|
|
Changes multihead reorganizing code for win32 support, mostly from a patch
Wed Jun 5 18:34:47 2002 Owen Taylor <otaylor@redhat.com>
Changes multihead reorganizing code for win32 support,
mostly from a patch by Hans Breuer.
* gdk/gdkcolor.c gdk/x11/gdkcolor-x11.c gdk/gdkcursor.c
gdk/x11/gdkcursor-x11.c gdk/gdkevents.c gdk/x11/gdkevents-x11.c
gdk/gdkfont.c gdk/x11/gdkfont-x11.c gdk/gdkkeys.c
gdk/x11/gdkkeys-x11.c gdk/gdkimage.c gdk/x11/gdkimage-x11.c
gdk/gdkscreen.c gdk/x11/gdkmain-x11.c
gdk/gdkdisplay.c gdk/gdkevents-x11.c gdk/gdkpango.c
gdk/x11/gdkpango-x11.c gdk/gdkselection.c
gdk/x11/gdkselection-x11.c gdk/gdkwindow.c
gdk/x11/gdkwindow-x11.c gdk/gdkvisual.c gdk/x11/gdkvisual-x11.c:
Move port-independent singlehead wrapper functions into
port-independent part of GDK. (#80009)
* gdk/win32/gdkcolor-win32.c gdk/win32/gdkcursor-win32.c
gdk/win32/gdkevents-win32.c gdk/win32/gdkfont-win32.c
gdk/win32/gdkimage-win32.c gdk/win32/gdkkeys-win32.c
gdk/win32/gdkmain-win32.c gdk/win32/gdkproperty-win32.c
gdk/win32/gdkselection-win32.c gdk/win32/gkwindow-win32.c:
Turn singlehead functions into "multihead" functions that ignore
their GdkDisplay or GdkScreen arguments.
* gdk/win32/gdkdrawable-win32.c gdk/win32/gdkevents-win32.c
gdk/win32/gdkinput-win32.c gdk/win32/gdkprivate-win32.h:
Misc multihead-compatibility changes.
* gtk/gtk.def gdk/gdk.def: Update for multihead functions.
* gdk/gdkcolormap.h gdk/gdkvisual.h gdk/x11/gdkcolormap-x11.c
gdk/x11/gdkvisual-x11.c: Remove the screen fields
from the public parts of the colormap/visual structures, add accessors
instead.
* gdk/gdkpixbuf-render.c gdk/gdkpixmap.c gdk/gdkrgb.c
gdk/x11/gdkcolormap-x11.c gdk/x11/gdkimage-x11.c
gdk/x11/gdkimage-x11.c gdk/x11/gdkprivate-x11.h gtk/gtkgc.c
gtk/gtkstyle.c gtk/gtkwidget.c: Use accessors to get the screen
for colormaps, visuals; move the fields into the private
structures for the x11 backend.
* gdk/gdkdisplay.[ch] gdk/x11/gdkdisplay-x11.[ch]
gdk/gdkscreen.[ch] gdk/x11/gdkscreen-x11.c:
Remove virtualization of screen and display functions.
(#79990, patch from Erwann Chenede)
* gdk/win32/gdkdisplay-x11.c gdk/win32/gdkscreen-win32.c
gdk/win32/{Makefile.am, makefile.msc, makefile.mingw}:
New files containing stub implementations of Display,
Screen functions.
* gdk/x11/gdkscreen-x11.[ch] gdk/x11/gdkdisplay-x11.[ch]
gdk/x11/gdkx.h: Clean up function exports and what
headers they are in. (#79954)
* gdk/x11/gdkx.h: Fix macro that was referring to a non-existant
screen->screen_num. (In the patch for #79972, Erwann Chenede)
* gdk/gdkscreen.c gdk/gdkwindow.c gdk/x11/gdkinternals.h
gdk/x11/gdkscreen-x11.c: Fix gdk_screen_get_window_at_pointer()
to use window hooks. (#79972, patch partly from Erwann Chenede)
* gdk/x11/gdkdisplay-x11.c gdk/x11/gdkevents-x11.c: Fix
some warnings.
2002-06-06 00:26:42 +00:00
|
|
|
/**
|
|
|
|
* gdk_setting_get:
|
|
|
|
* @name: the name of the setting.
|
|
|
|
* @value: location to store the value of the setting.
|
|
|
|
*
|
|
|
|
* Obtains a desktop-wide setting, such as the double-click time,
|
|
|
|
* for the default screen. See gdk_screen_get_setting().
|
|
|
|
*
|
2008-07-04 21:55:21 +00:00
|
|
|
* Returns: %TRUE if the setting existed and a value was stored
|
Changes multihead reorganizing code for win32 support, mostly from a patch
Wed Jun 5 18:34:47 2002 Owen Taylor <otaylor@redhat.com>
Changes multihead reorganizing code for win32 support,
mostly from a patch by Hans Breuer.
* gdk/gdkcolor.c gdk/x11/gdkcolor-x11.c gdk/gdkcursor.c
gdk/x11/gdkcursor-x11.c gdk/gdkevents.c gdk/x11/gdkevents-x11.c
gdk/gdkfont.c gdk/x11/gdkfont-x11.c gdk/gdkkeys.c
gdk/x11/gdkkeys-x11.c gdk/gdkimage.c gdk/x11/gdkimage-x11.c
gdk/gdkscreen.c gdk/x11/gdkmain-x11.c
gdk/gdkdisplay.c gdk/gdkevents-x11.c gdk/gdkpango.c
gdk/x11/gdkpango-x11.c gdk/gdkselection.c
gdk/x11/gdkselection-x11.c gdk/gdkwindow.c
gdk/x11/gdkwindow-x11.c gdk/gdkvisual.c gdk/x11/gdkvisual-x11.c:
Move port-independent singlehead wrapper functions into
port-independent part of GDK. (#80009)
* gdk/win32/gdkcolor-win32.c gdk/win32/gdkcursor-win32.c
gdk/win32/gdkevents-win32.c gdk/win32/gdkfont-win32.c
gdk/win32/gdkimage-win32.c gdk/win32/gdkkeys-win32.c
gdk/win32/gdkmain-win32.c gdk/win32/gdkproperty-win32.c
gdk/win32/gdkselection-win32.c gdk/win32/gkwindow-win32.c:
Turn singlehead functions into "multihead" functions that ignore
their GdkDisplay or GdkScreen arguments.
* gdk/win32/gdkdrawable-win32.c gdk/win32/gdkevents-win32.c
gdk/win32/gdkinput-win32.c gdk/win32/gdkprivate-win32.h:
Misc multihead-compatibility changes.
* gtk/gtk.def gdk/gdk.def: Update for multihead functions.
* gdk/gdkcolormap.h gdk/gdkvisual.h gdk/x11/gdkcolormap-x11.c
gdk/x11/gdkvisual-x11.c: Remove the screen fields
from the public parts of the colormap/visual structures, add accessors
instead.
* gdk/gdkpixbuf-render.c gdk/gdkpixmap.c gdk/gdkrgb.c
gdk/x11/gdkcolormap-x11.c gdk/x11/gdkimage-x11.c
gdk/x11/gdkimage-x11.c gdk/x11/gdkprivate-x11.h gtk/gtkgc.c
gtk/gtkstyle.c gtk/gtkwidget.c: Use accessors to get the screen
for colormaps, visuals; move the fields into the private
structures for the x11 backend.
* gdk/gdkdisplay.[ch] gdk/x11/gdkdisplay-x11.[ch]
gdk/gdkscreen.[ch] gdk/x11/gdkscreen-x11.c:
Remove virtualization of screen and display functions.
(#79990, patch from Erwann Chenede)
* gdk/win32/gdkdisplay-x11.c gdk/win32/gdkscreen-win32.c
gdk/win32/{Makefile.am, makefile.msc, makefile.mingw}:
New files containing stub implementations of Display,
Screen functions.
* gdk/x11/gdkscreen-x11.[ch] gdk/x11/gdkdisplay-x11.[ch]
gdk/x11/gdkx.h: Clean up function exports and what
headers they are in. (#79954)
* gdk/x11/gdkx.h: Fix macro that was referring to a non-existant
screen->screen_num. (In the patch for #79972, Erwann Chenede)
* gdk/gdkscreen.c gdk/gdkwindow.c gdk/x11/gdkinternals.h
gdk/x11/gdkscreen-x11.c: Fix gdk_screen_get_window_at_pointer()
to use window hooks. (#79972, patch partly from Erwann Chenede)
* gdk/x11/gdkdisplay-x11.c gdk/x11/gdkevents-x11.c: Fix
some warnings.
2002-06-06 00:26:42 +00:00
|
|
|
* in @value, %FALSE otherwise.
|
|
|
|
**/
|
|
|
|
gboolean
|
|
|
|
gdk_setting_get (const gchar *name,
|
|
|
|
GValue *value)
|
|
|
|
{
|
2002-06-20 23:59:27 +00:00
|
|
|
return gdk_screen_get_setting (gdk_screen_get_default (), name, value);
|
Changes multihead reorganizing code for win32 support, mostly from a patch
Wed Jun 5 18:34:47 2002 Owen Taylor <otaylor@redhat.com>
Changes multihead reorganizing code for win32 support,
mostly from a patch by Hans Breuer.
* gdk/gdkcolor.c gdk/x11/gdkcolor-x11.c gdk/gdkcursor.c
gdk/x11/gdkcursor-x11.c gdk/gdkevents.c gdk/x11/gdkevents-x11.c
gdk/gdkfont.c gdk/x11/gdkfont-x11.c gdk/gdkkeys.c
gdk/x11/gdkkeys-x11.c gdk/gdkimage.c gdk/x11/gdkimage-x11.c
gdk/gdkscreen.c gdk/x11/gdkmain-x11.c
gdk/gdkdisplay.c gdk/gdkevents-x11.c gdk/gdkpango.c
gdk/x11/gdkpango-x11.c gdk/gdkselection.c
gdk/x11/gdkselection-x11.c gdk/gdkwindow.c
gdk/x11/gdkwindow-x11.c gdk/gdkvisual.c gdk/x11/gdkvisual-x11.c:
Move port-independent singlehead wrapper functions into
port-independent part of GDK. (#80009)
* gdk/win32/gdkcolor-win32.c gdk/win32/gdkcursor-win32.c
gdk/win32/gdkevents-win32.c gdk/win32/gdkfont-win32.c
gdk/win32/gdkimage-win32.c gdk/win32/gdkkeys-win32.c
gdk/win32/gdkmain-win32.c gdk/win32/gdkproperty-win32.c
gdk/win32/gdkselection-win32.c gdk/win32/gkwindow-win32.c:
Turn singlehead functions into "multihead" functions that ignore
their GdkDisplay or GdkScreen arguments.
* gdk/win32/gdkdrawable-win32.c gdk/win32/gdkevents-win32.c
gdk/win32/gdkinput-win32.c gdk/win32/gdkprivate-win32.h:
Misc multihead-compatibility changes.
* gtk/gtk.def gdk/gdk.def: Update for multihead functions.
* gdk/gdkcolormap.h gdk/gdkvisual.h gdk/x11/gdkcolormap-x11.c
gdk/x11/gdkvisual-x11.c: Remove the screen fields
from the public parts of the colormap/visual structures, add accessors
instead.
* gdk/gdkpixbuf-render.c gdk/gdkpixmap.c gdk/gdkrgb.c
gdk/x11/gdkcolormap-x11.c gdk/x11/gdkimage-x11.c
gdk/x11/gdkimage-x11.c gdk/x11/gdkprivate-x11.h gtk/gtkgc.c
gtk/gtkstyle.c gtk/gtkwidget.c: Use accessors to get the screen
for colormaps, visuals; move the fields into the private
structures for the x11 backend.
* gdk/gdkdisplay.[ch] gdk/x11/gdkdisplay-x11.[ch]
gdk/gdkscreen.[ch] gdk/x11/gdkscreen-x11.c:
Remove virtualization of screen and display functions.
(#79990, patch from Erwann Chenede)
* gdk/win32/gdkdisplay-x11.c gdk/win32/gdkscreen-win32.c
gdk/win32/{Makefile.am, makefile.msc, makefile.mingw}:
New files containing stub implementations of Display,
Screen functions.
* gdk/x11/gdkscreen-x11.[ch] gdk/x11/gdkdisplay-x11.[ch]
gdk/x11/gdkx.h: Clean up function exports and what
headers they are in. (#79954)
* gdk/x11/gdkx.h: Fix macro that was referring to a non-existant
screen->screen_num. (In the patch for #79972, Erwann Chenede)
* gdk/gdkscreen.c gdk/gdkwindow.c gdk/x11/gdkinternals.h
gdk/x11/gdkscreen-x11.c: Fix gdk_screen_get_window_at_pointer()
to use window hooks. (#79972, patch partly from Erwann Chenede)
* gdk/x11/gdkdisplay-x11.c gdk/x11/gdkevents-x11.c: Fix
some warnings.
2002-06-06 00:26:42 +00:00
|
|
|
}
|
2013-08-13 23:06:48 +00:00
|
|
|
|
|
|
|
/**
|
|
|
|
* gdk_event_get_event_type:
|
|
|
|
* @event: a #GdkEvent
|
|
|
|
*
|
|
|
|
* Retrieves the type of the event.
|
|
|
|
*
|
|
|
|
* Return value: a #GdkEventType
|
|
|
|
*
|
|
|
|
* Since: 3.10
|
|
|
|
*/
|
|
|
|
GdkEventType
|
|
|
|
gdk_event_get_event_type (const GdkEvent *event)
|
|
|
|
{
|
|
|
|
g_return_val_if_fail (event != NULL, GDK_NOTHING);
|
|
|
|
|
|
|
|
return event->type;
|
|
|
|
}
|