]> Pileus Git - ~andy/gtk/blobdiff - gdk/x11/gdkim-x11.c
xi2: Improve device hierarchy handling
[~andy/gtk] / gdk / x11 / gdkim-x11.c
index 875e36241d0826760ff6e468480601e80066c4d9..389e653ec006446b92f0f4c65c87baf1a08deb23 100644 (file)
  * GTK+ at ftp://ftp.gtk.org/pub/gtk/. 
  */
 
-#include <locale.h>
-#include <stdlib.h>
+#include "config.h"
 
-#include "gdk.h"               /* For gdk_flush() */
-#include "gdkpixmap.h"
+#include "gdkx.h"
+#include "gdkmain.h"
 #include "gdkinternals.h"
-#include "gdkprivate-x11.h"
+#include "gdkdisplay-x11.h"
 
-#if HAVE_CONFIG_H
-#  include <config.h>
-#  if STDC_HEADERS
-#    include <string.h>
-#  endif
-#endif
+#include <locale.h>
+#include <stdlib.h>
+#include <string.h>
 
 
 /* If this variable is FALSE, it indicates that we should
@@ -63,11 +59,8 @@ _gdk_x11_initialize_locale (void)
   g_free (last_locale);
   last_locale = g_strdup (current_locale);
 
-  if (!XSupportsLocale ())
-    g_warning ("locale not supported by Xlib");
-  
-  if (!XSetLocaleModifiers (""))
-    g_warning ("can not set locale modifiers");
+  if (XSupportsLocale ())
+    XSetLocaleModifiers ("");
 
   if ((strcmp (current_locale, "C")) && (strcmp (current_locale, "POSIX")))
     {
@@ -84,7 +77,8 @@ _gdk_x11_initialize_locale (void)
          result == 0x765)
        {
          if ((strlen (current_locale) < 4) ||
-             g_strcasecmp (current_locale + strlen(current_locale) - 4, "utf8"))
+             g_ascii_strcasecmp (current_locale + strlen(current_locale) - 4,
+                                 "utf8"))
            gdk_use_mb = FALSE;
        }
 #endif /* X_LOCALE */
@@ -107,118 +101,3 @@ gdk_set_locale (void)
   
   return setlocale (LC_ALL, NULL);
 }
-
-/*
- * gdk_wcstombs 
- *
- * Returns a multi-byte string converted from the specified array
- * of wide characters. The string is newly allocated. The array of
- * wide characters must be null-terminated. If the conversion is
- * failed, it returns NULL.
- */
-gchar *
-gdk_wcstombs (const GdkWChar *src)
-{
-  gchar *mbstr;
-
-  if (gdk_use_mb)
-    {
-      XTextProperty tpr;
-
-      if (sizeof(wchar_t) != sizeof(GdkWChar))
-       {
-         gint i;
-         wchar_t *src_alt;
-         for (i=0; src[i]; i++);
-         src_alt = g_new (wchar_t, i+1);
-         for (; i>=0; i--)
-           src_alt[i] = src[i];
-         if (XwcTextListToTextProperty (gdk_display, &src_alt, 1, XTextStyle, &tpr)
-             != Success)
-           {
-             g_free (src_alt);
-             return NULL;
-           }
-         g_free (src_alt);
-       }
-      else
-       {
-         if (XwcTextListToTextProperty (gdk_display, (wchar_t**)&src, 1,
-                                        XTextStyle, &tpr) != Success)
-           {
-             return NULL;
-           }
-       }
-      /*
-       * We must copy the string into an area allocated by glib, because
-       * the string 'tpr.value' must be freed by XFree().
-       */
-      mbstr = g_strdup(tpr.value);
-      XFree (tpr.value);
-    }
-  else
-    {
-      gint length = 0;
-      gint i;
-
-      while (src[length] != 0)
-       length++;
-      
-      mbstr = g_new (gchar, length + 1);
-
-      for (i=0; i<length+1; i++)
-       mbstr[i] = src[i];
-    }
-
-  return mbstr;
-}
-  
-/*
- * gdk_mbstowcs
- *
- * Converts the specified string into wide characters, and, returns the
- * number of wide characters written. The string 'src' must be
- * null-terminated. If the conversion is failed, it returns -1.
- */
-gint
-gdk_mbstowcs (GdkWChar *dest, const gchar *src, gint dest_max)
-{
-  if (gdk_use_mb)
-    {
-      XTextProperty tpr;
-      wchar_t **wstrs, *wstr_src;
-      gint num_wstrs;
-      gint len_cpy;
-      if (XmbTextListToTextProperty (gdk_display, (char **)&src, 1, XTextStyle,
-                                    &tpr)
-         != Success)
-       {
-         /* NoMem or LocaleNotSupp */
-         return -1;
-       }
-      if (XwcTextPropertyToTextList (gdk_display, &tpr, &wstrs, &num_wstrs)
-         != Success)
-       {
-         /* InvalidChar */
-         XFree(tpr.value);
-         return -1;
-       }
-      XFree(tpr.value);
-      if (num_wstrs == 0)
-       return 0;
-      wstr_src = wstrs[0];
-      for (len_cpy=0; len_cpy<dest_max && wstr_src[len_cpy]; len_cpy++)
-       dest[len_cpy] = wstr_src[len_cpy];
-      XwcFreeStringList (wstrs);
-      return len_cpy;
-    }
-  else
-    {
-      gint i;
-
-      for (i=0; i<dest_max && src[i]; i++)
-       dest[i] = src[i];
-
-      return i;
-    }
-}