diff dep/animone/src/a11y/win32.cc @ 342:adb79bdde329

dep/animone: fix tons of issues for example, the window ID stuff was just... completely wrong. since we're supporting multiple different window systems, it *has* to be a union rather than just a single integer type. HWND is also not a DWORD, it's a pointer(!), so now it's stored as a std::uintptr_t. (this probably breaks things)
author Paper <paper@paper.us.eu.org>
date Thu, 20 Jun 2024 03:03:05 -0400
parents 052ec053ee37
children 1faa72660932
line wrap: on
line diff
--- a/dep/animone/src/a11y/win32.cc	Wed Jun 19 23:21:19 2024 -0400
+++ b/dep/animone/src/a11y/win32.cc	Thu Jun 20 03:03:05 2024 -0400
@@ -1,12 +1,14 @@
 #include <functional>
 #include <string>
 #include <vector>
+#include <memory>
 
 #include <windows.h>
 #include <uiautomation.h>
 
 #include "animone/a11y.h"
 #include "animone/a11y/win32.h"
+#include "animone/util/win32.h"
 
 namespace animone::internal::win32 {
 
@@ -25,9 +27,9 @@
 
 template <typename T>
 struct ComInterfaceDeleter {
-  static_assert(std::is_base_of<IUnknown, T>::value, "Invalid COM interface");
-  using pointer = T*;
-  void operator()(pointer p) const { if (p) p->Release(); }
+	static_assert(std::is_base_of<IUnknown, T>::value, "Invalid COM interface");
+	using pointer = T*;
+	void operator()(pointer p) const { if (p) p->Release(); }
 };
 
 template <typename T>
@@ -234,7 +236,7 @@
 	if (!InitializeUIAutomation())
 		return false;
 
-	ComInterface<Element> parent(GetElementFromHandle(hwnd));
+	ComInterface<Element> parent(GetElementFromHandle(reinterpret_cast<HWND>(window.id.win32)));
 	if (!parent)
 		return false;