]> Pileus Git - ~andy/gtk/blob - gdk/x11/gdkeventtranslator.c
Change FSF Address
[~andy/gtk] / gdk / x11 / gdkeventtranslator.c
1 /* GDK - The GIMP Drawing Kit
2  * Copyright (C) 2009 Carlos Garnacho <carlosg@gnome.org>
3  *
4  * This library is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU Lesser General Public
6  * License as published by the Free Software Foundation; either
7  * version 2 of the License, or (at your option) any later version.
8  *
9  * This library is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12  * Lesser General Public License for more details.
13  *
14  * You should have received a copy of the GNU Lesser General Public
15  * License along with this library. If not, see <http://www.gnu.org/licenses/>.
16  */
17
18 #include "config.h"
19
20 #include "gdkeventtranslator.h"
21 #include "gdkwindow-x11.h"
22
23 typedef GdkEventTranslatorIface GdkEventTranslatorInterface;
24 G_DEFINE_INTERFACE (GdkEventTranslator, _gdk_x11_event_translator, G_TYPE_OBJECT);
25
26
27 static void
28 _gdk_x11_event_translator_default_init (GdkEventTranslatorInterface *iface)
29 {
30 }
31
32
33 GdkEvent *
34 _gdk_x11_event_translator_translate (GdkEventTranslator *translator,
35                                      GdkDisplay         *display,
36                                      XEvent             *xevent)
37 {
38   GdkEventTranslatorIface *iface;
39   GdkEvent *event;
40
41   g_return_val_if_fail (GDK_IS_EVENT_TRANSLATOR (translator), NULL);
42   g_return_val_if_fail (GDK_IS_DISPLAY (display), NULL);
43
44   iface = GDK_EVENT_TRANSLATOR_GET_IFACE (translator);
45
46   if (!iface->translate_event)
47     return NULL;
48
49   event = gdk_event_new (GDK_NOTHING);
50
51   if ((iface->translate_event) (translator, display, event, xevent))
52     return event;
53
54   gdk_event_free (event);
55
56   return NULL;
57 }
58
59 GdkEventMask
60 _gdk_x11_event_translator_get_handled_events (GdkEventTranslator *translator)
61 {
62   GdkEventTranslatorIface *iface;
63
64   g_return_val_if_fail (GDK_IS_EVENT_TRANSLATOR (translator), 0);
65
66   iface = GDK_EVENT_TRANSLATOR_GET_IFACE (translator);
67
68   if (iface->get_handled_events)
69     return iface->get_handled_events (translator);
70
71   return 0;
72 }
73
74 void
75 _gdk_x11_event_translator_select_window_events (GdkEventTranslator *translator,
76                                                 Window              window,
77                                                 GdkEventMask        event_mask)
78 {
79   GdkEventTranslatorIface *iface;
80
81   g_return_if_fail (GDK_IS_EVENT_TRANSLATOR (translator));
82
83   iface = GDK_EVENT_TRANSLATOR_GET_IFACE (translator);
84
85   if (iface->select_window_events)
86     iface->select_window_events (translator, window, event_mask);
87 }
88
89 GdkWindow *
90 _gdk_x11_event_translator_get_window (GdkEventTranslator *translator,
91                                       GdkDisplay         *display,
92                                       XEvent             *xevent)
93 {
94   GdkEventTranslatorIface *iface;
95
96   g_return_val_if_fail (GDK_IS_EVENT_TRANSLATOR (translator), NULL);
97
98   iface = GDK_EVENT_TRANSLATOR_GET_IFACE (translator);
99
100   if (iface->get_window)
101     return iface->get_window (translator, xevent);
102
103   return NULL;
104 }