From 4419e367bcbe8c1b248e88eab8096f0b8ac4707c Mon Sep 17 00:00:00 2001
From: callum <none@none>
Date: Wed, 18 Nov 2009 21:15:44 -0800
Subject: [PATCH] Add support for removing the Windows specific drag/drop code
 from the codebase via a new CMake file (DragDrop.cmake).

---
 indra/cmake/DragDrop.cmake         | 25 +++++++++++++++++++++++++
 indra/llwindow/CMakeLists.txt      |  1 +
 indra/llwindow/lldragdropwin32.cpp |  7 ++++++-
 indra/llwindow/lldragdropwin32.h   | 29 ++++++++++++++++++++++++++---
 indra/newview/CMakeLists.txt       |  1 +
 5 files changed, 59 insertions(+), 4 deletions(-)
 create mode 100644 indra/cmake/DragDrop.cmake

diff --git a/indra/cmake/DragDrop.cmake b/indra/cmake/DragDrop.cmake
new file mode 100644
index 00000000000..a2d7df13129
--- /dev/null
+++ b/indra/cmake/DragDrop.cmake
@@ -0,0 +1,25 @@
+# -*- cmake -*-
+
+if (VIEWER)
+
+  OPTION (OS_DRAG_DROP
+  "Build the viewer with OS level drag and drop turned on or off"
+  OFF)
+
+  if (OS_DRAG_DROP)
+
+    if (WINDOWS)
+      add_definitions(-DLL_OS_DRAGDROP_ENABLED=1)
+    endif (WINDOWS)
+
+    if (DARWIN)
+      add_definitions(-DLL_OS_DRAGDROP_ENABLED=0)
+    endif (DARWIN)
+
+    if (LINUX)
+      add_definitions(-DLL_OS_DRAGDROP_ENABLED=0)
+    endif (LINUX)
+
+  endif (OS_DRAG_DROP)
+
+endif (VIEWER)
diff --git a/indra/llwindow/CMakeLists.txt b/indra/llwindow/CMakeLists.txt
index b4a3f744512..77c6fa57b6c 100644
--- a/indra/llwindow/CMakeLists.txt
+++ b/indra/llwindow/CMakeLists.txt
@@ -12,6 +12,7 @@ project(llwindow)
 
 include(00-Common)
 include(DirectX)
+include(DragDrop)
 include(LLCommon)
 include(LLImage)
 include(LLMath)
diff --git a/indra/llwindow/lldragdropwin32.cpp b/indra/llwindow/lldragdropwin32.cpp
index aac68e71af2..471c88675df 100644
--- a/indra/llwindow/lldragdropwin32.cpp
+++ b/indra/llwindow/lldragdropwin32.cpp
@@ -32,6 +32,8 @@
 
 #if LL_WINDOWS
 
+#if LL_OS_DRAGDROP_ENABLED
+
 #include "linden_common.h"
 
 #include "llwindowwin32.h"
@@ -272,4 +274,7 @@ void LLDragDropWin32::reset()
 	OleUninitialize();
 }
 
-#endif
+#endif // LL_OS_DRAGDROP_ENABLED
+
+#endif // LL_WINDOWS
+
diff --git a/indra/llwindow/lldragdropwin32.h b/indra/llwindow/lldragdropwin32.h
index 624f4ad24bc..26c8e4aeff5 100644
--- a/indra/llwindow/lldragdropwin32.h
+++ b/indra/llwindow/lldragdropwin32.h
@@ -30,11 +30,13 @@
  * $/LicenseInfo$
  */
 
+#if LL_WINDOWS
+
+#if LL_OS_DRAGDROP_ENABLED
+
 #ifndef LL_LLDRAGDROP32_H
 #define LL_LLDRAGDROP32_H
 
-#if LL_WINDOWS
-
 #include <windows.h>
 #include <ole2.h>
 
@@ -51,7 +53,28 @@ class LLDragDropWin32
 		IDropTarget* mDropTarget;
 		HWND mDropWindowHandle;
 };
+#endif // LL_LLDRAGDROP32_H
 
-#endif // LL_WINDOWS
+#else // LL_OS_DRAGDROP_ENABLED
 
+#ifndef LL_LLDRAGDROP32_H
+#define LL_LLDRAGDROP32_H
+
+#include <windows.h>
+#include <ole2.h>
+
+// imposter class that does nothing 
+class LLDragDropWin32
+{
+	public:
+		LLDragDropWin32() {};
+		~LLDragDropWin32() {};
+
+		bool init( HWND hWnd ) { return false; };
+		void reset() { };
+};
 #endif // LL_LLDRAGDROP32_H
+
+#endif // LL_OS_DRAGDROP_ENABLED
+
+#endif // LL_WINDOWS
diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt
index b129bca1f39..352e9a93820 100644
--- a/indra/newview/CMakeLists.txt
+++ b/indra/newview/CMakeLists.txt
@@ -7,6 +7,7 @@ include(Boost)
 include(BuildVersion)
 include(DBusGlib)
 include(DirectX)
+include(DragDrop)
 include(ELFIO)
 include(FMOD)
 include(OPENAL)
-- 
GitLab