1 /* GDK - The GIMP Drawing Kit
2 * Copyright (C) 2009 Carlos Garnacho <carlosg@gnome.org>
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.
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.
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/>.
20 #include "gdkeventtranslator.h"
21 #include "gdkwindow-x11.h"
23 typedef GdkEventTranslatorIface GdkEventTranslatorInterface;
24 G_DEFINE_INTERFACE (GdkEventTranslator, _gdk_x11_event_translator, G_TYPE_OBJECT);
28 _gdk_x11_event_translator_default_init (GdkEventTranslatorInterface *iface)
34 _gdk_x11_event_translator_translate (GdkEventTranslator *translator,
38 GdkEventTranslatorIface *iface;
41 g_return_val_if_fail (GDK_IS_EVENT_TRANSLATOR (translator), NULL);
42 g_return_val_if_fail (GDK_IS_DISPLAY (display), NULL);
44 iface = GDK_EVENT_TRANSLATOR_GET_IFACE (translator);
46 if (!iface->translate_event)
49 event = gdk_event_new (GDK_NOTHING);
51 if ((iface->translate_event) (translator, display, event, xevent))
54 gdk_event_free (event);
60 _gdk_x11_event_translator_get_handled_events (GdkEventTranslator *translator)
62 GdkEventTranslatorIface *iface;
64 g_return_val_if_fail (GDK_IS_EVENT_TRANSLATOR (translator), 0);
66 iface = GDK_EVENT_TRANSLATOR_GET_IFACE (translator);
68 if (iface->get_handled_events)
69 return iface->get_handled_events (translator);
75 _gdk_x11_event_translator_select_window_events (GdkEventTranslator *translator,
77 GdkEventMask event_mask)
79 GdkEventTranslatorIface *iface;
81 g_return_if_fail (GDK_IS_EVENT_TRANSLATOR (translator));
83 iface = GDK_EVENT_TRANSLATOR_GET_IFACE (translator);
85 if (iface->select_window_events)
86 iface->select_window_events (translator, window, event_mask);
90 _gdk_x11_event_translator_get_window (GdkEventTranslator *translator,
94 GdkEventTranslatorIface *iface;
96 g_return_val_if_fail (GDK_IS_EVENT_TRANSLATOR (translator), NULL);
98 iface = GDK_EVENT_TRANSLATOR_GET_IFACE (translator);
100 if (iface->get_window)
101 return iface->get_window (translator, xevent);