atk r1274 - in trunk: . atk



Author: tml
Date: Sat Sep 13 19:39:57 2008
New Revision: 1274
URL: http://svn.gnome.org/viewvc/atk?rev=1274&view=rev

Log:
2008-09-13  Tor Lillqvist  <tml novell com>

	* atk/atkobject.c: Don't use the deprectated
	g_win32_get_package_installation_subdirectory(). Use
	g_win32_get_package_installation_directory_of_module()
	instead. Also, don't use the deprecated silly
	G_WIN32_DLLMAIN_FOR_DLL_NAME() macro, but an explicit minimal
	DllMain() that just saves the DLL handle.



Modified:
   trunk/ChangeLog
   trunk/atk/atkobject.c

Modified: trunk/atk/atkobject.c
==============================================================================
--- trunk/atk/atkobject.c	(original)
+++ trunk/atk/atkobject.c	Sat Sep 13 19:39:57 2008
@@ -235,11 +235,22 @@
 
 #ifdef G_OS_WIN32
 
-#undef ATK_LOCALEDIR
+static HMODULE atk_dll;
 
-#define ATK_LOCALEDIR get_atk_locale_dir()
+BOOL WINAPI
+DllMain (HINSTANCE hinstDLL,
+	 DWORD     fdwReason,
+	 LPVOID    lpvReserved)
+{
+  switch (fdwReason)
+    {
+    case DLL_PROCESS_ATTACH:
+      atk_dll = (HMODULE) hinstDLL;
+      break;
+    }
 
-G_WIN32_DLLMAIN_FOR_DLL_NAME(static, dll_name)
+  return TRUE;
+}
 
 static const char *
 get_atk_locale_dir (void)
@@ -248,16 +259,35 @@
 
   if (!atk_localedir)
     {
-      gchar *temp;
-
-      temp = g_win32_get_package_installation_subdirectory
-        (NULL, dll_name, "lib\\locale");
+      const gchar *p;
+      gchar *root, *temp;
+      
+      /* ATK_LOCALEDIR might end in either /lib/locale or
+       * /share/locale. Scan for that slash.
+       */
+      p = ATK_LOCALEDIR + strlen (ATK_LOCALEDIR);
+      while (*--p != '/')
+	;
+      while (*--p != '/')
+	;
+
+      root = g_win32_get_package_installation_directory_of_module (atk_dll);
+      temp = g_build_filename (root, p, NULL);
+      g_free (root);
+
+      /* atk_localedir is passed to bindtextdomain() which isn't
+       * UTF-8-aware.
+       */
       atk_localedir = g_win32_locale_filename_from_utf8 (temp);
       g_free (temp);
     }
   return atk_localedir;
 }
 
+#undef ATK_LOCALEDIR
+
+#define ATK_LOCALEDIR get_atk_locale_dir()
+
 #endif
 
 static void



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]