forked from AuroraMiddleware/gtk
Proper fix for #396175:
2007-01-17 Tor Lillqvist <tml@novell.com> Proper fix for #396175: * gtk/gtkimmulticontext.c: Revert change by Hans Breuer below: Do include gtkprivate.h. On Win32 we do want to use the redefinition of GTK_LOCALEDIR as a call to the function _gtk_get_localedir(). * gtk/gtkimmodule.c: Instead, correct the prefix also on simple_context_info.domain_dirname. Do the prefix corrections always on Win32, not just when GTK_LIBDIR is defined. i.e., until now they were done only in the autoconfiscated gcc builds. Hans needs to make sure GTK_LIBDIR and GTK_LOCALEDIR are defined also in MSVC builds now. (correct_localedir_prefix): New function, like correct_libdir_prefix(), but for GTK_LOCALEDIR. (_gtk_im_module_list): Call correct_localedir_prefix() on simple_context_info.domain_dirname. svn path=/trunk/; revision=17161
This commit is contained in:
parent
2955a65dd7
commit
e6a490588f
19
ChangeLog
19
ChangeLog
@ -1,3 +1,22 @@
|
|||||||
|
2007-01-17 Tor Lillqvist <tml@novell.com>
|
||||||
|
|
||||||
|
Proper fix for #396175:
|
||||||
|
|
||||||
|
* gtk/gtkimmulticontext.c: Revert change by Hans Breuer below: Do
|
||||||
|
include gtkprivate.h. On Win32 we do want to use the redefinition
|
||||||
|
of GTK_LOCALEDIR as a call to the function _gtk_get_localedir().
|
||||||
|
|
||||||
|
* gtk/gtkimmodule.c: Instead, correct the prefix also on
|
||||||
|
simple_context_info.domain_dirname. Do the prefix corrections
|
||||||
|
always on Win32, not just when GTK_LIBDIR is defined. i.e., until
|
||||||
|
now they were done only in the autoconfiscated gcc builds. Hans
|
||||||
|
needs to make sure GTK_LIBDIR and GTK_LOCALEDIR are defined also
|
||||||
|
in MSVC builds now.
|
||||||
|
(correct_localedir_prefix): New function, like
|
||||||
|
correct_libdir_prefix(), but for GTK_LOCALEDIR.
|
||||||
|
(_gtk_im_module_list): Call correct_localedir_prefix() on
|
||||||
|
simple_context_info.domain_dirname.
|
||||||
|
|
||||||
2007-01-16 Matthias Clasen <mclasen@redhat.com>
|
2007-01-16 Matthias Clasen <mclasen@redhat.com>
|
||||||
|
|
||||||
* gtk/gtkrange.c (range_grab_remove): Queue a redraw when the
|
* gtk/gtkrange.c (range_grab_remove): Queue a redraw when the
|
||||||
|
@ -42,8 +42,8 @@
|
|||||||
#include "gtkalias.h"
|
#include "gtkalias.h"
|
||||||
|
|
||||||
/* Do *not* include "gtkprivate.h" in this file. If you do, the
|
/* Do *not* include "gtkprivate.h" in this file. If you do, the
|
||||||
* correct_libdir_prefix() function below will have to move somewhere
|
* correct_libdir_prefix() and correct_localedir_prefix() functions
|
||||||
* else.
|
* below will have to move somewhere else.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifdef __GTK_PRIVATE_H__
|
#ifdef __GTK_PRIVATE_H__
|
||||||
@ -217,12 +217,7 @@ add_module (GtkIMModule *module, GSList *infos)
|
|||||||
modules_list = g_slist_prepend (modules_list, module);
|
modules_list = g_slist_prepend (modules_list, module);
|
||||||
}
|
}
|
||||||
|
|
||||||
#if defined (G_OS_WIN32) && defined (GTK_LIBDIR)
|
#ifdef G_OS_WIN32
|
||||||
/* This is needes on Win32, but not wanted when compiling with MSVC,
|
|
||||||
* as the makefile.msc doesn't define any GTK_LIBDIR value.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#define DO_CORRECT_LIBDIR_PREFIX /* Flag to check below whether to call this */
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
correct_libdir_prefix (gchar **path)
|
correct_libdir_prefix (gchar **path)
|
||||||
@ -247,6 +242,21 @@ correct_libdir_prefix (gchar **path)
|
|||||||
g_free (tem);
|
g_free (tem);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
correct_localedir_prefix (gchar **path)
|
||||||
|
{
|
||||||
|
/* As above, but for GTK_LOCALEDIR. Use separate function in case
|
||||||
|
* GTK_LOCALEDIR isn't a subfolder of GTK_LIBDIR.
|
||||||
|
*/
|
||||||
|
if (strncmp (*path, GTK_LOCALEDIR, strlen (GTK_LOCALEDIR)) == 0)
|
||||||
|
{
|
||||||
|
extern const gchar *_gtk_get_localedir ();
|
||||||
|
gchar *tem = *path;
|
||||||
|
*path = g_strconcat (_gtk_get_localedir (), tem + strlen (GTK_LOCALEDIR), NULL);
|
||||||
|
g_free (tem);
|
||||||
|
}
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
@ -311,7 +321,7 @@ gtk_im_module_initialize (void)
|
|||||||
}
|
}
|
||||||
|
|
||||||
module->path = g_strdup (tmp_buf->str);
|
module->path = g_strdup (tmp_buf->str);
|
||||||
#ifdef DO_CORRECT_LIBDIR_PREFIX
|
#ifdef G_OS_WIN32
|
||||||
correct_libdir_prefix (&module->path);
|
correct_libdir_prefix (&module->path);
|
||||||
#endif
|
#endif
|
||||||
g_type_module_set_name (G_TYPE_MODULE (module), module->path);
|
g_type_module_set_name (G_TYPE_MODULE (module), module->path);
|
||||||
@ -337,8 +347,8 @@ gtk_im_module_initialize (void)
|
|||||||
if (!pango_scan_string (&p, tmp_buf))
|
if (!pango_scan_string (&p, tmp_buf))
|
||||||
goto context_error;
|
goto context_error;
|
||||||
info->domain_dirname = g_strdup (tmp_buf->str);
|
info->domain_dirname = g_strdup (tmp_buf->str);
|
||||||
#ifdef DO_CORRECT_LIBDIR_PREFIX
|
#ifdef G_OS_WIN32
|
||||||
correct_libdir_prefix ((char **) &info->domain_dirname);
|
correct_localedir_prefix ((char **) &info->domain_dirname);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (!pango_scan_string (&p, tmp_buf))
|
if (!pango_scan_string (&p, tmp_buf))
|
||||||
@ -402,7 +412,11 @@ _gtk_im_module_list (const GtkIMContextInfo ***contexts,
|
|||||||
{
|
{
|
||||||
int n = 0;
|
int n = 0;
|
||||||
|
|
||||||
static const GtkIMContextInfo simple_context_info = {
|
static
|
||||||
|
#ifndef G_OS_WIN32
|
||||||
|
const
|
||||||
|
#endif
|
||||||
|
GtkIMContextInfo simple_context_info = {
|
||||||
SIMPLE_ID,
|
SIMPLE_ID,
|
||||||
N_("Default"),
|
N_("Default"),
|
||||||
GETTEXT_PACKAGE,
|
GETTEXT_PACKAGE,
|
||||||
@ -414,9 +428,25 @@ _gtk_im_module_list (const GtkIMContextInfo ***contexts,
|
|||||||
""
|
""
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#ifdef G_OS_WIN32
|
||||||
|
static gboolean beenhere = FALSE;
|
||||||
|
#endif
|
||||||
|
|
||||||
if (!contexts_hash)
|
if (!contexts_hash)
|
||||||
gtk_im_module_initialize ();
|
gtk_im_module_initialize ();
|
||||||
|
|
||||||
|
#ifdef G_OS_WIN32
|
||||||
|
if (!beenhere)
|
||||||
|
{
|
||||||
|
beenhere = TRUE;
|
||||||
|
/* correct_localedir_prefix() requires its parameter to be a
|
||||||
|
* malloced string
|
||||||
|
*/
|
||||||
|
simple_context_info.domain_dirname = g_strdup (simple_context_info.domain_dirname);
|
||||||
|
correct_localedir_prefix ((char **) &simple_context_info.domain_dirname);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
if (n_contexts)
|
if (n_contexts)
|
||||||
*n_contexts = (n_loaded_contexts + 1);
|
*n_contexts = (n_loaded_contexts + 1);
|
||||||
|
|
||||||
|
@ -27,17 +27,9 @@
|
|||||||
#include "gtkmain.h"
|
#include "gtkmain.h"
|
||||||
#include "gtkradiomenuitem.h"
|
#include "gtkradiomenuitem.h"
|
||||||
#include "gtkintl.h"
|
#include "gtkintl.h"
|
||||||
|
#include "gtkprivate.h" /* To get redefinition of GTK_LOCALE_DIR on Win32 */
|
||||||
#include "gtkalias.h"
|
#include "gtkalias.h"
|
||||||
|
|
||||||
/* Do *not* include "gtkprivate.h" in this file. If you do, the
|
|
||||||
* the two definitions of GTK_LOCALEDIR will trigger a wrong
|
|
||||||
* warning in gtk_im_multicontext_append_menuitems()
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifdef __GTK_PRIVATE_H__
|
|
||||||
#error gtkprivate.h should not be included in this file
|
|
||||||
#endif
|
|
||||||
|
|
||||||
struct _GtkIMMulticontextPrivate
|
struct _GtkIMMulticontextPrivate
|
||||||
{
|
{
|
||||||
GdkWindow *client_window;
|
GdkWindow *client_window;
|
||||||
|
Loading…
Reference in New Issue
Block a user