static VALUE rg_m_owner_get(int argc, VALUE *argv, G_GNUC_UNUSED VALUE self) { VALUE selection; if (argc == 1) { rb_scan_args(argc, argv, "10", &selection); return GOBJ2RVAL(gdk_selection_owner_get(RVAL2ATOM(selection))); } else { VALUE display = Qnil; rb_scan_args(argc, argv, "20", &display, &selection); return GOBJ2RVAL(gdk_selection_owner_get_for_display(GDK_DISPLAY_OBJECT(RVAL2GOBJ(display)), RVAL2ATOM(selection))); } }
static void na_tray_manager_unmanage (NaTrayManager *manager) { #ifdef GDK_WINDOWING_X11 GdkDisplay *display; guint32 timestamp; GtkWidget *invisible; GdkWindow *window; if (manager->invisible == NULL) return; invisible = manager->invisible; window = gtk_widget_get_window (invisible); g_assert (GTK_IS_INVISIBLE (invisible)); g_assert (gtk_widget_get_realized (invisible)); g_assert (GDK_IS_WINDOW (window)); display = gtk_widget_get_display (invisible); if (gdk_selection_owner_get_for_display (display, manager->selection_atom) == window) { timestamp = gdk_x11_get_server_time (window); gdk_selection_owner_set_for_display (display, NULL, manager->selection_atom, timestamp, TRUE); } //FIXME: we should also use gdk_remove_client_message_filter when it's //available // See bug #351254 gdk_window_remove_filter (window, na_tray_manager_window_filter, manager); manager->invisible = NULL; /* prior to destroy for reentrancy paranoia */ gtk_widget_destroy (invisible); g_object_unref (G_OBJECT (invisible)); #endif }
static VALUE rg_m_owner_get(int argc, VALUE *argv, G_GNUC_UNUSED VALUE self) { VALUE selection; if (argc == 1) { rb_scan_args(argc, argv, "10", &selection); return GOBJ2RVAL(gdk_selection_owner_get(RVAL2ATOM(selection))); } else { #if GTK_CHECK_VERSION(2,2,0) VALUE display = Qnil; rb_scan_args(argc, argv, "20", &display, &selection); return GOBJ2RVAL(gdk_selection_owner_get_for_display(GDK_DISPLAY_OBJECT(RVAL2GOBJ(display)), RVAL2ATOM(selection))); #else rb_raise(rb_eArgError, "Wrong number of arguments: %d", argc); #endif } }
/** * gdk_selection_owner_get: * @selection: an atom indentifying a selection. * * Determines the owner of the given selection. * * Returns: (nullable) (transfer none): if there is a selection owner * for this window, and it is a window known to the current process, * the #GdkWindow that owns the selection, otherwise %NULL. Note * that the return value may be owned by a different process if a * foreign window was previously created for that window, but a new * foreign window will never be created by this call. */ GdkWindow* gdk_selection_owner_get (GdkAtom selection) { return gdk_selection_owner_get_for_display (gdk_display_get_default (), selection); }