1 // Generated by gtkmmproc -- DO NOT MODIFY!
4 #include <gdkmm/display.h>
5 #include <gdkmm/private/display_p.h>
7 #include <gdk/gdkenumtypes.h>
13 * Copyright 1998-2002 The gtkmm Development Team
15 * This library is free software; you can redistribute it and/or
16 * modify it under the terms of the GNU Library General Public
17 * License as published by the Free Software Foundation; either
18 * version 2 of the License, or (at your option) any later version.
20 * This library is distributed in the hope that it will be useful,
21 * but WITHOUT ANY WARRANTY; without even the implied warranty of
22 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
23 * Library General Public License for more details.
25 * You should have received a copy of the GNU Library General Public
26 * License along with this library; if not, write to the Free
27 * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
30 #include <gdkmm/window.h>
31 #include <gdk/gdkdisplay.h>
36 bool Display::set_selection_owner(const Glib::RefPtr<Window>& owner, Glib::ustring& selection, guint32 time_, bool send_event)
38 return gdk_selection_owner_set_for_display(gobj(), owner->gobj(), Gdk::AtomString::to_c_type(selection), time_, (gboolean)send_event);
41 Glib::RefPtr<Window> Display::get_selection_owner(const Glib::ustring& selection)
43 return Glib::wrap( (GdkWindowObject*)gdk_selection_owner_get_for_display(gobj(), Gdk::AtomString::to_c_type(selection)) , true);
46 void Display::selection_send_notify(guint32 requestor, Glib::ustring& selection, Glib::ustring& target, Glib::ustring& property, guint32 time_)
48 gdk_selection_send_notify_for_display(gobj(), requestor, Gdk::AtomString::to_c_type(selection), Gdk::AtomString::to_c_type(target), Gdk::AtomString::to_c_type(property), time_);
51 void Display::get_pointer(Glib::RefPtr<Screen>& screen, int& x, int& y, ModifierType& mask)
53 GdkScreen* cScreen = 0;
54 GdkModifierType cMask = (GdkModifierType)mask;
55 gdk_display_get_pointer(gobj(), &cScreen, &x, &y, &cMask);
56 screen = Glib::wrap(cScreen);
57 mask = (ModifierType)cMask;
60 void Display::get_pointer(int& x, int& y, ModifierType& mask)
62 GdkModifierType cMask = (GdkModifierType)mask;
63 gdk_display_get_pointer(gobj(), 0, &x, &y, &cMask);
64 mask = (ModifierType)cMask;
68 Glib::RefPtr<Window> Display::get_window_at_pointer()
71 Glib::RefPtr<Window> retvalue = Glib::wrap((GdkWindowObject*)(gdk_display_get_window_at_pointer(gobj(), 0, 0)));
74 retvalue->reference(); //The function does not do a ref for us.
78 Glib::RefPtr<const Window> Display::get_window_at_pointer() const
81 Glib::RefPtr<const Window> retvalue = Glib::wrap((GdkWindowObject*)(gdk_display_get_window_at_pointer(const_cast<GdkDisplay*>(gobj()), 0, 0)));
84 retvalue->reference(); //The function does not do a ref for us.
88 GdkDisplayPointerHooks* Display::unset_pointer_hooks()
90 return gdk_display_set_pointer_hooks(gobj(), 0 /* See GDK docs */);
93 void Display::store_clipboard(const Glib::RefPtr<Gdk::Window>& clipboard_window, guint32 time_)
95 gdk_display_store_clipboard(gobj(), clipboard_window->gobj(), time_, 0 /* see the C docs */, 0);
98 void Display::store_clipboard(const Glib::RefPtr<Gdk::Window>& clipboard_window, guint32 time_, const Glib::StringArrayHandle& targets)
100 //Put it into a real container that we can use:
101 std::vector<Glib::ustring> targets_copy = targets;
103 //Create array of target GdkAtoms from target strings:
104 if(!targets_copy.empty())
106 GdkAtom* pAtoms = new GdkAtom[targets_copy.size()];
108 for(guint i = 0; i < targets_copy.size(); ++i)
110 *pAtoms = Gdk::AtomString::to_c_type(targets_copy[i]);
113 gdk_display_store_clipboard(gobj(), clipboard_window->gobj(), time_, 0 /* see the C docs */, 0);
126 static void Display_signal_closed_callback(GdkDisplay* self, gboolean p0,void* data)
129 typedef sigc::slot< void,bool > SlotType;
131 // Do not try to call a signal on a disassociated wrapper.
132 if(Glib::ObjectBase::_get_current_wrapper((GObject*) self))
134 #ifdef GLIBMM_EXCEPTIONS_ENABLED
137 #endif //GLIBMM_EXCEPTIONS_ENABLED
138 if(sigc::slot_base *const slot = Glib::SignalProxyNormal::data_to_slot(data))
139 (*static_cast<SlotType*>(slot))(p0
141 #ifdef GLIBMM_EXCEPTIONS_ENABLED
145 Glib::exception_handlers_invoke();
147 #endif //GLIBMM_EXCEPTIONS_ENABLED
151 static const Glib::SignalProxyInfo Display_signal_closed_info =
154 (GCallback) &Display_signal_closed_callback,
155 (GCallback) &Display_signal_closed_callback
159 } // anonymous namespace
165 Glib::RefPtr<Gdk::Display> wrap(GdkDisplay* object, bool take_copy)
167 return Glib::RefPtr<Gdk::Display>( dynamic_cast<Gdk::Display*> (Glib::wrap_auto ((GObject*)(object), take_copy)) );
168 //We use dynamic_cast<> in case of multiple inheritance.
171 } /* namespace Glib */
178 /* The *_Class implementation: */
180 const Glib::Class& Display_Class::init()
182 if(!gtype_) // create the GType if necessary
184 // Glib::Class has to know the class init function to clone custom types.
185 class_init_func_ = &Display_Class::class_init_function;
187 // This is actually just optimized away, apparently with no harm.
188 // Make sure that the parent type has been created.
189 //CppClassParent::CppObjectType::get_type();
191 // Create the wrapper type, with the same class/instance size as the base type.
192 register_derived_type(gdk_display_get_type());
194 // Add derived versions of interfaces, if the C type implements any interfaces:
200 void Display_Class::class_init_function(void* g_class, void* class_data)
202 BaseClassType *const klass = static_cast<BaseClassType*>(g_class);
203 CppClassParent::class_init_function(klass, class_data);
205 #ifdef GLIBMM_VFUNCS_ENABLED
206 #endif //GLIBMM_VFUNCS_ENABLED
208 #ifdef GLIBMM_DEFAULT_SIGNAL_HANDLERS_ENABLED
209 klass->closed = &closed_callback;
210 #endif //GLIBMM_DEFAULT_SIGNAL_HANDLERS_ENABLED
213 #ifdef GLIBMM_VFUNCS_ENABLED
214 #endif //GLIBMM_VFUNCS_ENABLED
216 #ifdef GLIBMM_DEFAULT_SIGNAL_HANDLERS_ENABLED
217 void Display_Class::closed_callback(GdkDisplay* self, gboolean p0)
219 Glib::ObjectBase *const obj_base = static_cast<Glib::ObjectBase*>(
220 Glib::ObjectBase::_get_current_wrapper((GObject*)self));
222 // Non-gtkmmproc-generated custom classes implicitly call the default
223 // Glib::ObjectBase constructor, which sets is_derived_. But gtkmmproc-
224 // generated classes can use this optimisation, which avoids the unnecessary
225 // parameter conversions if there is no possibility of the virtual function
227 if(obj_base && obj_base->is_derived_())
229 CppObjectType *const obj = dynamic_cast<CppObjectType* const>(obj_base);
230 if(obj) // This can be NULL during destruction.
232 #ifdef GLIBMM_EXCEPTIONS_ENABLED
233 try // Trap C++ exceptions which would normally be lost because this is a C callback.
235 #endif //GLIBMM_EXCEPTIONS_ENABLED
236 // Call the virtual member method, which derived classes might override.
240 #ifdef GLIBMM_EXCEPTIONS_ENABLED
244 Glib::exception_handlers_invoke();
246 #endif //GLIBMM_EXCEPTIONS_ENABLED
250 BaseClassType *const base = static_cast<BaseClassType*>(
251 g_type_class_peek_parent(G_OBJECT_GET_CLASS(self)) // Get the parent class of the object class (The original underlying C class).
254 // Call the original underlying C function:
255 if(base && base->closed)
256 (*base->closed)(self, p0);
258 #endif //GLIBMM_DEFAULT_SIGNAL_HANDLERS_ENABLED
261 Glib::ObjectBase* Display_Class::wrap_new(GObject* object)
263 return new Display((GdkDisplay*)object);
267 /* The implementation: */
269 GdkDisplay* Display::gobj_copy()
275 Display::Display(const Glib::ConstructParams& construct_params)
277 Glib::Object(construct_params)
280 Display::Display(GdkDisplay* castitem)
282 Glib::Object((GObject*)(castitem))
289 Display::CppClassType Display::display_class_; // initialize static member
291 GType Display::get_type()
293 return display_class_.init().get_type();
296 GType Display::get_base_type()
298 return gdk_display_get_type();
304 // Mark this class as non-derived to allow C++ vfuncs to be skipped.
306 Glib::Object(Glib::ConstructParams(display_class_.init()))
310 Glib::RefPtr<Display> Display::open(const Glib::ustring& display_name)
313 Glib::RefPtr<Display> retvalue = Glib::wrap(gdk_display_open(display_name.c_str()));
316 retvalue->reference(); //The function does not do a ref for us.
321 Glib::ustring Display::get_name() const
323 return Glib::convert_const_gchar_ptr_to_ustring(gdk_display_get_name(const_cast<GdkDisplay*>(gobj())));
326 int Display::get_n_screens() const
328 return gdk_display_get_n_screens(const_cast<GdkDisplay*>(gobj()));
331 Glib::RefPtr<Screen> Display::get_screen(int screen_num)
334 Glib::RefPtr<Screen> retvalue = Glib::wrap(gdk_display_get_screen(gobj(), screen_num));
336 retvalue->reference(); //The function does not do a ref for us.
341 Glib::RefPtr<const Screen> Display::get_screen(int screen_num) const
343 return const_cast<Display*>(this)->get_screen(screen_num);
346 Glib::RefPtr<Screen> Display::get_default_screen()
349 Glib::RefPtr<Screen> retvalue = Glib::wrap(gdk_display_get_default_screen(gobj()));
351 retvalue->reference(); //The function does not do a ref for us.
356 Glib::RefPtr<const Screen> Display::get_default_screen() const
358 return const_cast<Display*>(this)->get_default_screen();
361 void Display::pointer_ungrab(guint32 timestamp)
363 gdk_display_pointer_ungrab(gobj(), timestamp);
366 void Display::keyboard_ungrab(guint32 timestamp)
368 gdk_display_keyboard_ungrab(gobj(), timestamp);
371 bool Display::pointer_is_grabbed() const
373 return gdk_display_pointer_is_grabbed(const_cast<GdkDisplay*>(gobj()));
378 gdk_display_beep(gobj());
383 gdk_display_sync(gobj());
386 void Display::close()
388 gdk_display_close(gobj());
391 Glib::ListHandle< Glib::RefPtr<Device> > Display::list_devices()
393 return Glib::ListHandle< Glib::RefPtr<Device> >(gdk_display_list_devices(gobj()), Glib::OWNERSHIP_NONE);
396 Glib::ListHandle< Glib::RefPtr<const Device> > Display::list_devices() const
398 return Glib::ListHandle< Glib::RefPtr<const Device> >(gdk_display_list_devices(const_cast<GdkDisplay*>(gobj())), Glib::OWNERSHIP_NONE);
401 GdkEvent* Display::get_event()
403 return gdk_display_get_event(gobj());
406 const GdkEvent* Display::get_event() const
408 return const_cast<Display*>(this)->get_event();
411 GdkEvent* Display::peek_event()
413 return gdk_display_peek_event(gobj());
416 GdkEvent* Display::peek_event() const
418 return const_cast<Display*>(this)->peek_event();
421 void Display::put_event(GdkEvent* event)
423 gdk_display_put_event(gobj(), event);
426 void Display::add_client_message_filter(Glib::ustring& message_type, GdkFilterFunc func, gpointer data)
428 gdk_display_add_client_message_filter(gobj(), Gdk::AtomString::to_c_type(message_type), func, data);
431 void Display::set_double_click_time(guint msec)
433 gdk_display_set_double_click_time(gobj(), msec);
436 void Display::set_double_click_distance(guint distance)
438 gdk_display_set_double_click_distance(gobj(), distance);
441 Glib::RefPtr<Display> Display::get_default()
444 Glib::RefPtr<Display> retvalue = Glib::wrap(gdk_display_get_default());
447 retvalue->reference(); //The function does not do a ref for us.
452 Glib::RefPtr<Device> Display::get_core_pointer()
455 Glib::RefPtr<Device> retvalue = Glib::wrap(gdk_display_get_core_pointer(gobj()));
457 retvalue->reference(); //The function does not do a ref for us.
462 Glib::RefPtr<const Device> Display::get_core_pointer() const
465 Glib::RefPtr<const Device> retvalue = Glib::wrap(gdk_display_get_core_pointer(const_cast<GdkDisplay*>(gobj())));
467 retvalue->reference(); //The function does not do a ref for us.
472 Glib::RefPtr<Window> Display::get_window_at_pointer(int& win_x, int& win_y)
475 Glib::RefPtr<Window> retvalue = Glib::wrap((GdkWindowObject*)(gdk_display_get_window_at_pointer(gobj(), &win_x, &win_y)));
477 retvalue->reference(); //The function does not do a ref for us.
482 Glib::RefPtr<const Window> Display::get_window_at_pointer(int& win_x, int& win_y) const
484 return const_cast<Display*>(this)->get_window_at_pointer(win_x, win_y);
487 void Display::warp_pointer(const Glib::RefPtr<Screen>& screen, int x, int y)
489 gdk_display_warp_pointer(gobj(), Glib::unwrap(screen), x, y);
492 GdkDisplayPointerHooks* Display::set_pointer_hooks(const GdkDisplayPointerHooks* new_hooks)
494 return gdk_display_set_pointer_hooks(gobj(), new_hooks);
497 Glib::RefPtr<Display> Display::open_default_libgtk_only()
500 Glib::RefPtr<Display> retvalue = Glib::wrap(gdk_display_open_default_libgtk_only());
503 retvalue->reference(); //The function does not do a ref for us.
508 guint32 Display::get_drag_protocol(guint32 xid, GdkDragProtocol& protocol)
510 return gdk_drag_get_protocol_for_display(gobj(), xid, &(protocol));
513 GdkKeymap* Display::get_keymap()
515 return gdk_keymap_get_for_display(gobj());
518 const GdkKeymap* Display::get_keymap() const
520 return const_cast<Display*>(this)->get_keymap();
523 Glib::RefPtr<Pixmap> Display::lookup_pixmap(NativeWindow anid)
525 return Glib::wrap((GdkPixmapObject*)(gdk_pixmap_lookup_for_display(gobj(), (GdkNativeWindow)(anid))));
528 Glib::RefPtr<const Pixmap> Display::lookup_pixmap(NativeWindow anid) const
530 return const_cast<Display*>(this)->lookup_pixmap(anid);
533 void Display::flush()
535 gdk_display_flush(gobj());
538 bool Display::supports_cursor_alpha() const
540 return gdk_display_supports_cursor_alpha(const_cast<GdkDisplay*>(gobj()));
543 bool Display::supports_cursor_color() const
545 return gdk_display_supports_cursor_color(const_cast<GdkDisplay*>(gobj()));
548 guint Display::get_default_cursor_size() const
550 return gdk_display_get_default_cursor_size(const_cast<GdkDisplay*>(gobj()));
553 void Display::get_maximal_cursor_size(guint& width, guint& height)
555 gdk_display_get_maximal_cursor_size(gobj(), &(width), &(height));
558 Glib::RefPtr<Window> Display::get_default_group()
561 Glib::RefPtr<Window> retvalue = Glib::wrap((GdkWindowObject*)(gdk_display_get_default_group(gobj())));
563 retvalue->reference(); //The function does not do a ref for us.
568 Glib::RefPtr<const Window> Display::get_default_group() const
570 return const_cast<Display*>(this)->get_default_group();
573 bool Display::supports_selection_notification() const
575 return gdk_display_supports_selection_notification(const_cast<GdkDisplay*>(gobj()));
578 bool Display::request_selection_notification(const Glib::ustring& selection)
580 return gdk_display_request_selection_notification(gobj(), Gdk::AtomString::to_c_type(selection));
583 bool Display::supports_clipboard_persistence() const
585 return gdk_display_supports_clipboard_persistence(const_cast<GdkDisplay*>(gobj()));
588 bool Display::supports_shapes() const
590 return gdk_display_supports_shapes(const_cast<GdkDisplay*>(gobj()));
593 bool Display::supports_input_shapes() const
595 return gdk_display_supports_input_shapes(const_cast<GdkDisplay*>(gobj()));
598 bool Display::supports_composite() const
600 return gdk_display_supports_composite(const_cast<GdkDisplay*>(gobj()));
604 Glib::SignalProxy1< void,bool > Display::signal_closed()
606 return Glib::SignalProxy1< void,bool >(this, &Display_signal_closed_info);
610 #ifdef GLIBMM_DEFAULT_SIGNAL_HANDLERS_ENABLED
611 void Gdk::Display::on_closed(bool is_error)
613 BaseClassType *const base = static_cast<BaseClassType*>(
614 g_type_class_peek_parent(G_OBJECT_GET_CLASS(gobject_)) // Get the parent class of the object class (The original underlying C class).
617 if(base && base->closed)
618 (*base->closed)(gobj(),static_cast<int>(is_error));
620 #endif //GLIBMM_DEFAULT_SIGNAL_HANDLERS_ENABLED
622 #ifdef GLIBMM_VFUNCS_ENABLED
623 #endif //GLIBMM_VFUNCS_ENABLED