/*********************************************************
- * Copyright (c) 2010-2024 Broadcom. All Rights Reserved.
+ * Copyright (c) 2010-2025 Broadcom. All Rights Reserved.
* The term "Broadcom" refers to Broadcom Inc. and/or its subsidiaries.
*
* This program is free software; you can redistribute it and/or modify it
#include <string.h>
#include <gtk/gtk.h>
#include <X11/Xlib.h>
-#if GTK_MAJOR_VERSION == 4
+#ifdef GTK4
#include <gdk/x11/gdkx.h>
#else
#include <gdk/gdkx.h>
#endif
#define LOCK_ATOM_NAME "vmware-user-lock"
-#if GTK_MAJOR_VERSION == 4
+#ifdef GTK4
#define GDK_GET_XDISPLAY(X) gdk_x11_display_get_xdisplay(X)
#else
#define GDK_GET_XDISPLAY(X) gdk_x11_get_default_xdisplay()
Window myRootWindow;
XSetWindowAttributes attr;
GdkDisplay *gdkDisplay;
-#if GTK_MAJOR_VERSION == 4
+#ifdef GTK4
GdkSurface *gdkLeader;
#else
GdkWindow *gdkLeader;
ASSERT(rootWindow);
gdkDisplay = gdk_display_get_default();
-#if GTK_MAJOR_VERSION == 4
+#ifdef GTK4
gdkLeader = gdk_x11_display_get_default_group(gdkDisplay);
myGroupLeader = gdk_x11_surface_get_xid(gdkLeader);
/*
gdkLeader = gdk_display_get_default_group(gdkDisplay);
myGroupLeader = GDK_WINDOW_XID(gdkLeader);
myRootWindow = GDK_ROOT_WINDOW();
+ /* set gdkDisplay to NULL for non-GTK4 for GDK_GET_XDISPLAY macro */
+ gdkDisplay = NULL;
#endif
ASSERT(myGroupLeader);
/* XXX: With g_set_prgname() being called, this can probably go away. */
XStoreName(GDK_GET_XDISPLAY(gdkDisplay), myGroupLeader, VMUSER_TITLE);
-
/*
* Confidence check: Set the override redirect property on our group leader
* window (not default), then re-parent it to the root window (default).
unsigned int index;
Bool alreadyLocked = FALSE; // Set to TRUE if we discover lock is held.
Bool retval = FALSE;
- GdkDisplay *gdkDisplay;
-#if GTK_MAJOR_VERSION == 4
- gdkDisplay = gdk_display_get_default();
+#ifdef GTK4
+ GdkDisplay *gdkDisplay = gdk_display_get_default();
+ defaultDisplay = GDK_GET_XDISPLAY(gdkDisplay);
#else
- gdkDisplay = NULL;
+ defaultDisplay = gdk_x11_get_default_xdisplay();
#endif
- defaultDisplay = GDK_GET_XDISPLAY(gdkDisplay);
/*
* Reset some of our main window's settings & fetch Xlib handles for
X11Lock_Init(ToolsAppCtx *ctx,
ToolsPluginData *pdata)
{
+#ifndef GTK4
+ int argc = 0;
+#endif
char *argv[] = { NULL, NULL };
if (!TOOLS_IS_USER_SERVICE(ctx)) {
gdk_set_allowed_backends("x11");
#endif
/* XXX: is calling gtk_init() multiple times safe? */
-#if GTK_MAJOR_VERSION == 4
+#ifdef GTK4
gtk_init();
#else
- int argc = 0;
gtk_init(&argc, (char ***) &argv);
#endif
return TRUE;
}
-
* selection text.
*/
-# if !defined(GTK2) && !defined(GTK3)
-# error "This should only build with GTK2 or GTK3"
-# endif
+#if !defined(GTK2) && !defined(GTK3)
+#error "This should only build with GTK2 or GTK3"
+#endif
#define G_LOG_DOMAIN "dndcp"
#include "dndPluginIntX11.h"
*/
#define G_LOG_DOMAIN "dndcp"
-#define VMTOOLS_USE_LEGACY_GTK
#include "copyPasteDnDWrapper.h"
#include "copyPasteDnDX11.h"
-#ifdef GTK4
-#undef VMTOOLS_USE_LEGACY_GTK
-#include "dndCPMsgV4.h"
-#endif
#include "copyPasteUIX11.h"
#include "tracer.hh"
#include "dndPluginIntX11.h"
*/
CopyPasteDnDX11::CopyPasteDnDX11() :
-#ifdef VMTOOLS_USE_LEGACY_GTK
+#if defined(GTK2) || defined(GTK3)
m_main(NULL),
#endif
m_copyPasteUI(NULL),
#ifdef GTK4
Gtk::Application::create("com.tools.gtk4");
-#endif
-
-#ifdef VMTOOLS_USE_LEGACY_GTK
+#else
int argc = 1;
const char *argv[] = {"", NULL};
m_main = new Gtk::Main(&argc, (char ***) &argv, false);
gGdkDisplay = gdk_display_get_default();
gXDisplay = gdk_x11_display_get_xdisplay(gGdkDisplay);
gXRoot = gdk_x11_display_get_xrootwindow(gGdkDisplay);
-#endif
-
-#ifdef VMTOOLS_USE_LEGACY_GTK
- gUserMainWidget = gtk_invisible_new();
-#ifndef GTK3
- gXDisplay = GDK_WINDOW_XDISPLAY(gUserMainWidget->window);
#else
+ gUserMainWidget = gtk_invisible_new();
+#ifdef GTK3
gXDisplay = GDK_WINDOW_XDISPLAY(gtk_widget_get_window(gUserMainWidget));
+#endif
+#ifdef GTK2
+ gXDisplay = GDK_WINDOW_XDISPLAY(gUserMainWidget->window);
#endif
gXRoot = RootWindow(gXDisplay, DefaultScreen(gXDisplay));
#endif
{
delete m_copyPasteUI;
delete m_dndUI;
-
-#ifdef VMTOOLS_USE_LEGACY_GTK
+#if defined(GTK2) || defined(GTK3)
delete m_main;
#endif
CopyPaste_Unregister(gUserMainWidget);
if (gUserMainWidget) {
-#ifdef VMTOOLS_USE_LEGACY_GTK
- gtk_widget_destroy(gUserMainWidget);
-#endif
#ifdef GTK4
gtk_window_destroy(GTK_WINDOW(gUserMainWidget));
+#else
+ gtk_widget_destroy(gUserMainWidget);
#endif
}
* ignore everything else.
*/
-# if !defined(GTK2) && !defined(GTK3)
-# error "This could only build with GTK2 or GTK3"
-# endif
+#if !defined(GTK2) && !defined(GTK3)
+#error "This could only build with GTK2 or GTK3"
+#endif
#define G_LOG_DOMAIN "dndcp"
#include <X11/Xlib.h>
#include <gtk/gtk.h>
-#define VMTOOLS_USE_LEGACY_GTK
-
#ifdef GTK4
-#undef VMTOOLS_USE_LEGACY_GTK
#include <gdk/x11/gdkx.h>
-#endif
-#ifdef VMTOOLS_USE_LEGACY_GTK
+#else
#include <gdk/gdkx.h>
#endif
utf::string post);
void LocalSetFileListToClipboard(const char* desktop);
void LocalGetFileContentsRequest();
-#endif
-
-#ifdef VMTOOLS_USE_LEGACY_GTK
+#else
void LocalGetFileRequestCB(Gtk::SelectionData& selection_data, guint info);
void LocalGetTextOrRTFRequestCB(Gtk::SelectionData& sd, guint info);
void LocalGetSelectionFileList(const Gtk::SelectionData& sd);
const Glib::RefPtr<Gdk::Clipboard>& clipboard);
void GuestDefaultClipboardChangedCb();
void GuestPrimaryClipboardChangedCb();
-#endif
-#ifdef VMTOOLS_USE_LEGACY_GTK
+#else
void LocalClipboardTimestampCB(const Gtk::SelectionData& sd);
void LocalPrimTimestampCB(const Gtk::SelectionData& sd);
void LocalReceivedFileListCB(const Gtk::SelectionData& selection_data);
Glib::RefPtr<Gdk::Clipboard> mDftClipboardPtr;
Glib::RefPtr<Gdk::Clipboard> mPrimClipboardPtr;
Glib::RefPtr<Gio::InputStream> mCpStream;
-#endif
-#ifdef VMTOOLS_USE_LEGACY_GTK
+#else
std::vector<Gtk::TargetEntry> mListTargets;
GdkAtom mGHSelection;
bool mIsClipboardOwner;
utf::string mHGCopiedUriListGnome;
utf::string mHGCopiedUriListKde;
utf::string mHGCopiedUriListNautilus;
-#endif
-
-#ifdef VMTOOLS_USE_LEGACY_GTK
+#else
utf::string mHGCopiedUriList;
utf::string mHGTextData;
std::string mHGRTFData;
#ifndef __COPYPASTEDNDX11_H__
#define __COPYPASTEDNDX11_H__
-#define VMTOOLS_USE_LEGACY_GTK
-
-#ifdef GTK4
-#undef VMTOOLS_USE_LEGACY_GTK
-#endif
-
#include "dnd.h" /* for DnDBlockControl */
#ifdef GTK4
#include <gtkmm/application.h>
#include "dndUIX11GTK4.h"
-
-#endif
-
-#ifdef VMTOOLS_USE_LEGACY_GTK
+#else
#include "dndUIX11.h"
#endif
virtual void DnDVersionChanged(int version);
virtual void CopyPasteVersionChanged(int version);
virtual uint32 GetCaps();
-#ifdef VMTOOLS_USE_LEGACY_GTK
+#if defined(GTK2) || defined(GTK3)
void SetUnityMode(Bool mode) {m_dndUI->SetUnityMode(mode);};
#endif
void SetDnDAllowed(bool allowed);
private:
CopyPasteUIX11 *m_copyPasteUI;
DnDUIX11 *m_dndUI;
-#ifdef VMTOOLS_USE_LEGACY_GTK
+#if defined(GTK2) || defined(GTK3)
Gtk::Main *m_main;
#endif
};
#ifndef __DNDPLUGIN_INTX11_H__
#define __DNDPLUGIN_INTX11_H__
-#define VMTOOLS_USE_LEGACY_GTK
-
-#ifdef GTK4
-#undef VMTOOLS_USE_LEGACY_GTK
-#endif
-
#include <X11/Xlib.h>
#include <gtk/gtk.h>
#ifdef GTK4
#include <gdk/x11/gdkx.h>
-#endif
-
-#ifdef VMTOOLS_USE_LEGACY_GTK
+#else
#include <gdk/gdkx.h>
#endif