gboolean CopyPasteDnDX11::Init(ToolsAppCtx *ctx) { TRACE_CALL(); CopyPasteDnDWrapper *wrapper = CopyPasteDnDWrapper::GetInstance(); ASSERT(ctx); int argc = 1; const char *argv[] = {"", NULL}; m_main = new Gtk::Main(&argc, (char ***) &argv, false); if (wrapper) { BlockService::GetInstance()->Init(ctx); } gUserMainWidget = gtk_invisible_new(); #ifndef GTK3 gXDisplay = GDK_WINDOW_XDISPLAY(gUserMainWidget->window); #else gXDisplay = GDK_WINDOW_XDISPLAY(gtk_widget_get_window(gUserMainWidget)); #endif gXRoot = RootWindow(gXDisplay, DefaultScreen(gXDisplay)); /* * Register legacy (backdoor) version of copy paste. */ CopyPaste_SetVersion(1); CopyPaste_Register(gUserMainWidget, ctx); return TRUE; }
gboolean CopyPasteDnDX11::Init(ToolsAppCtx *ctx) { TRACE_CALL(); #if GTK_MAJOR_VERSION > 3 || (GTK_MAJOR_VERSION == 3 && GTK_MINOR_VERSION >= 10) /* * On recent distros, Wayland is the default display server. If the obtained * display or window is a wayland one, applying X11 specific functions on them * will result in crashes. Before migrating the X11 specific code to Wayland, * force using X11 as the backend of Gtk+3. gdk_set_allowed_backends() is * introduced since Gtk+3.10 and Wayland is supported from Gtk+3.10. */ gdk_set_allowed_backends("x11"); #endif CopyPasteDnDWrapper *wrapper = CopyPasteDnDWrapper::GetInstance(); ASSERT(ctx); int argc = 1; const char *argv[] = {"", NULL}; m_main = new Gtk::Main(&argc, (char ***) &argv, false); if (wrapper) { BlockService::GetInstance()->Init(ctx); } gUserMainWidget = gtk_invisible_new(); #ifndef GTK3 gXDisplay = GDK_WINDOW_XDISPLAY(gUserMainWidget->window); #else gXDisplay = GDK_WINDOW_XDISPLAY(gtk_widget_get_window(gUserMainWidget)); #endif gXRoot = RootWindow(gXDisplay, DefaultScreen(gXDisplay)); /* * Register legacy (backdoor) version of copy paste. */ CopyPaste_SetVersion(1); CopyPaste_Register(gUserMainWidget, ctx); return TRUE; }