Add Gdk/Pango-interaction
[cl-gtk2.git] / gdk / gdk.events.lisp
1 (in-package :gdk)
2
3 (defconstant +gdk-current-time+ 0)
4
5 (export '+gdk-current-time+)
6
7 (defconstant +gdk-priority-redraw+ (+ glib:+g-priority-high-idle+ 20))
8
9 (export '+gdk-priority-redraw+)
10
11 (defcfun (events-pending "gdk_events_pending") :boolean)
12
13 (export 'events-pending)
14
15 (defcfun (event-peek "gdk_event_peek") (g-boxed-foreign event :return))
16
17 (export 'event-peek)
18
19 (defcfun (event-get "gdk_event_get") (g-boxed-foreign event :return))
20
21 ;; ignored
22 ;; GdkEvent*           gdk_event_get_graphics_expose       (GdkWindow *window);
23
24 (defcfun (event-put "gdk_event_put") :void
25   (event (g-boxed-foreign event)))
26
27 (export 'event-put)
28
29 (defcfun (event-get-time "gdk_event_get_time") :uint32
30   (event (g-boxed-foreign event)))
31
32 (export 'event-get-time)
33
34 (defcfun gdk_event_get_state :boolean
35   (event (g-boxed-foreign event))
36   (state (:pointer modifier-type)))
37
38 (defun event-get-state (event)
39   (with-foreign-object (state 'modifier-type)
40     (when (gdk_event_get_state event state)
41       (mem-ref state 'modifier-type))))
42
43 (export 'event-get-state)
44
45 (defcfun gdk_event_get_axis :boolean
46   (event (g-boxed-foreign event))
47   (axis-use axis-use)
48   (value (:pointer :double)))
49
50 (defun event-get-axis (event axis)
51   (with-foreign-object (value :double)
52     (when (gdk_event_get_axis event axis value)
53       (mem-ref value :double))))
54
55 (export 'event-get-axis)
56
57 (defcfun gdk_event_get_coords :boolean
58   (event (g-boxed-foreign event))
59   (x-win (:pointer :double))
60   (y-win (:pointer :double)))
61
62 (defun event-get-coords (event)
63   (with-foreign-objects ((x :double) (y :double))
64     (when (gdk_event_get_coords event x y)
65       (values (mem-ref x :double) (mem-ref y :double)))))
66
67 (export 'event-get-coords)
68
69 (defcfun gdk_event_get_root_coords :boolean
70   (event (g-boxed-foreign event))
71   (x-win (:pointer :double))
72   (y-win (:pointer :double)))
73
74 (defun event-get-root-coords (event)
75   (with-foreign-objects ((x :double) (y :double))
76     (when (gdk_event_get_root_coords event x y)
77       (values (mem-ref x :double) (mem-ref y :double)))))
78
79 (export 'event-get-root-coords)
80
81 (defcfun (event-request-motions "gdk_event_request_motions") :void
82   (event (g-boxed-foreign event)))
83
84 (export 'event-request-motions)
85
86 (defcallback gdk-event-func-callback :void
87     ((event (g-boxed-foreign event)) (user-data :pointer))
88   (restart-case
89       (funcall (get-stable-pointer-value user-data) event)
90     (return-from-callback () nil)))
91
92 (defcfun gdk_event_handler_set :void
93   (func :pointer)
94   (data :pointer)
95   (destroy-notify :pointer))
96
97 (defun event-handler-set (fn)
98   (gdk_event_handler_set (callback gdk-event-func-callback)
99                          (allocate-stable-pointer fn)
100                          (callback stable-pointer-free-destroy-notify-callback)))
101
102 (export 'event-handler-set)
103
104 (defcfun (event-send-client-message "gdk_event_send_client_message") :boolean
105   (event (g-boxed-foreign event))
106   (window-id native-window))
107
108 (export 'event-send-client-message)
109
110 (defcfun (event-send-client-message-for-display "gdk_event_send_client_message_for_display") :boolean
111   (display (g-object display))
112   (event (g-boxed-foreign event))
113   (window-id native-window))
114
115 (export 'event-send-client-message-for-display)
116
117 (defcfun (event-send-client-message-to-all "gdk_event_send_clientmessage_toall") :void
118   (event (g-boxed-foreign event)))
119
120 (export 'event-send-client-message-to-all)
121
122 ;; void                gdk_add_client_message_filter       (GdkAtom message_type,
123 ;;                                                          GdkFilterFunc func,
124 ;;                                                          gpointer data);
125
126 (defcfun gdk-get-show-events :boolean)
127
128 (export 'gdk-get-show-events)
129
130 (defcfun gdk-set-show-events :void
131   (show-events :boolean))
132
133 (export 'gdk-set-show-events)
134
135 ;; ignored:
136 ;; void                gdk_event_set_screen                (GdkEvent *event,
137 ;;                                                          GdkScreen *screen);
138 ;; GdkScreen *         gdk_event_get_screen                (const GdkEvent *event);
139
140 (defcfun gdk_setting_get :boolean
141   (name :string)
142   (value (:pointer g-value)))
143
144 (defun gdk-get-setting (name)
145   (with-foreign-object (value 'g-value)
146     (g-value-zero value)
147     (when (gdk_setting_get name value)
148       (prog1 (parse-g-value value)
149         (g-value-unset value)))))
150
151 (export 'gdk-get-setting)