rpms/ibus/devel ibus-HEAD.patch,1.2,1.3 ibus.spec,1.42,1.43
Huang Peng
phuang at fedoraproject.org
Sun Feb 15 08:21:34 UTC 2009
Author: phuang
Update of /cvs/pkgs/rpms/ibus/devel
In directory cvs1.fedora.phx.redhat.com:/tmp/cvs-serv14457
Modified Files:
ibus-HEAD.patch ibus.spec
Log Message:
Recreate the ibus-HEAD.patch from upstream git source tree.
ibus-HEAD.patch:
Index: ibus-HEAD.patch
===================================================================
RCS file: /cvs/pkgs/rpms/ibus/devel/ibus-HEAD.patch,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- ibus-HEAD.patch 13 Feb 2009 06:15:14 -0000 1.2
+++ ibus-HEAD.patch 15 Feb 2009 08:21:33 -0000 1.3
@@ -1,5 +1,18 @@
+diff --git a/bus/engineproxy.c b/bus/engineproxy.c
+index 6fc111f..647845b 100644
+--- a/bus/engineproxy.c
++++ b/bus/engineproxy.c
+@@ -636,7 +636,7 @@ bus_engine_proxy_set_capabilities (BusEngineProxy *engine,
+ g_assert (BUS_IS_ENGINE_PROXY (engine));
+
+ ibus_proxy_call ((IBusProxy *) engine,
+- "SetCapabilites",
++ "SetCapabilities",
+ G_TYPE_UINT, &caps,
+ G_TYPE_INVALID);
+
diff --git a/bus/ibusimpl.c b/bus/ibusimpl.c
-index e92b373..3af090d 100644
+index e92b373..7f51130 100644
--- a/bus/ibusimpl.c
+++ b/bus/ibusimpl.c
@@ -21,6 +21,7 @@
@@ -18,15 +31,15 @@
+ glong timeout;
+ gint status;
+ gboolean flag;
-+
++
+ bus_registry_stop_all_components (ibus->registry);
+
+ pid = 0;
+ timeout = 0;
+ flag = FALSE;
+ while (1) {
-+ while ((pid = waitpid (0, &status, WNOHANG)) > 0);
-+
++ while ((pid = waitpid (0, &status, WNOHANG)) > 0);
++
+ if (pid == -1) { /* all children finished */
+ break;
+ }
@@ -61,7 +74,16 @@
IBUS_OBJECT_CLASS(parent_class)->destroy (IBUS_OBJECT (ibus));
}
-@@ -832,7 +868,6 @@ _ibus_list_active_engines (BusIBusImpl *ibus,
+@@ -662,6 +698,8 @@ _ibus_create_input_context (BusIBusImpl *ibus,
+ context = bus_input_context_new (connection, client);
+ ibus->contexts = g_list_append (ibus->contexts, context);
+
++ _context_request_engine_cb (context, NULL, ibus);
++
+ static const struct {
+ gchar *name;
+ GCallback callback;
+@@ -832,7 +870,6 @@ _ibus_list_active_engines (BusIBusImpl *ibus,
return reply;
}
@@ -69,7 +91,16 @@
static IBusMessage *
_ibus_exit (BusIBusImpl *ibus,
-@@ -859,32 +894,28 @@ _ibus_exit (BusIBusImpl *ibus,
+@@ -842,7 +879,7 @@ _ibus_exit (BusIBusImpl *ibus,
+ IBusMessage *reply;
+ IBusError *error;
+ gboolean restart;
+-
++
+ if (!ibus_message_get_args (message,
+ &error,
+ G_TYPE_BOOLEAN, &restart,
+@@ -859,32 +896,28 @@ _ibus_exit (BusIBusImpl *ibus,
ibus_connection_flush ((IBusConnection *) connection);
ibus_message_unref (reply);
@@ -108,7 +139,8 @@
g_warning ("execv %s failed!", g_argv[0]);
exit (-1);
}
-
+-
++
+ /* should not reach here */
+ g_assert_not_reached ();
+
@@ -116,7 +148,7 @@
}
diff --git a/bus/inputcontext.c b/bus/inputcontext.c
-index be45bbe..e8fc1da 100644
+index be45bbe..bdc7d75 100644
--- a/bus/inputcontext.c
+++ b/bus/inputcontext.c
@@ -100,6 +100,8 @@ static gboolean bus_input_context_send_signal (BusInputContext *context
@@ -150,6 +182,62 @@
BusInputContextPrivate *priv;
priv = BUS_INPUT_CONTEXT_GET_PRIVATE (call_data->context);
+@@ -596,8 +594,6 @@ _ic_process_key_event (BusInputContext *context,
+ BusInputContextPrivate *priv;
+ priv = BUS_INPUT_CONTEXT_GET_PRIVATE (context);
+
+-
+- error = ibus_error_new ();
+ retval = ibus_message_get_args (message,
+ &error,
+ G_TYPE_UINT, &keyval,
+@@ -612,8 +608,6 @@ _ic_process_key_event (BusInputContext *context,
+ return reply;
+ }
+
+- ibus_error_free (error);
+-
+ retval = bus_input_context_filter_keyboard_shortcuts (context, keyval, modifiers);
+
+ if (retval) {
+@@ -623,12 +617,16 @@ _ic_process_key_event (BusInputContext *context,
+ G_TYPE_INVALID);
+ }
+ else if (priv->enabled && priv->engine) {
+- CallData *call_data = g_slice_new (CallData);
+- call_data->context = context;
+- call_data->message = message;
++ CallData *call_data;
++
++ call_data = g_slice_new (CallData);
++
+ g_object_ref (context);
+ ibus_message_ref (message);
+
++ call_data->context = context;
++ call_data->message = message;
++
+ bus_engine_proxy_process_key_event (priv->engine,
+ keyval,
+ modifiers,
+@@ -1012,7 +1010,7 @@ bus_input_context_focus_in (BusInputContext *context)
+
+ priv->has_focus = TRUE;
+
+- if (priv->engine) {
++ if (priv->engine && priv->enabled) {
+ bus_engine_proxy_focus_in (priv->engine);
+ }
+
+@@ -1034,7 +1032,7 @@ bus_input_context_focus_out (BusInputContext *context)
+
+ priv->has_focus = FALSE;
+
+- if (priv->engine) {
++ if (priv->engine && priv->enabled) {
+ bus_engine_proxy_focus_out (priv->engine);
+ }
+
@@ -1122,7 +1120,7 @@ _engine_destroy_cb (BusEngineProxy *engine,
g_assert (priv->engine == engine);
@@ -159,8 +247,20 @@
}
static void
-@@ -1408,6 +1406,48 @@ bus_input_context_disable (BusInputContext *context)
+@@ -1391,7 +1389,6 @@ bus_input_context_disable (BusInputContext *context)
+ BusInputContextPrivate *priv;
+ priv = BUS_INPUT_CONTEXT_GET_PRIVATE (context);
+
+- priv->enabled = FALSE;
+
+ if (priv->engine) {
+ if (priv->has_focus) {
+@@ -1406,8 +1403,52 @@ bus_input_context_disable (BusInputContext *context)
+ g_signal_emit (context,
+ context_signals[DISABLED],
0);
++
++ priv->enabled = FALSE;
}
+const static struct {
@@ -208,7 +308,7 @@
void
bus_input_context_set_engine (BusInputContext *context,
-@@ -1420,56 +1460,25 @@ bus_input_context_set_engine (BusInputContext *context,
+@@ -1420,56 +1461,25 @@ bus_input_context_set_engine (BusInputContext *context,
priv = BUS_INPUT_CONTEXT_GET_PRIVATE (context);
if (priv->engine != NULL) {
@@ -279,7 +379,7 @@
context_signals[ENGINE_CHANGED],
0);
diff --git a/bus/main.c b/bus/main.c
-index eec1df0..71c8dbe 100644
+index eec1df0..8757af5 100644
--- a/bus/main.c
+++ b/bus/main.c
@@ -29,6 +29,7 @@ gchar **g_argv = NULL;
@@ -324,7 +424,7 @@
+ /* create a new process group */
+ setpgrp ();
-+
++
g_type_init ();
+ /* check if ibus-daemon is running in this session */
@@ -342,13 +442,225 @@
+ }
+ g_object_unref (bus);
+ bus = NULL;
-+
++
+ /* create ibus server */
server = bus_server_get_default ();
bus_server_listen (server);
+diff --git a/client/gtk2/ibusim.c b/client/gtk2/ibusim.c
+index 56f593a..75b02a5 100644
+--- a/client/gtk2/ibusim.c
++++ b/client/gtk2/ibusim.c
+@@ -33,13 +33,11 @@ static const GtkIMContextInfo ibus_im_info = {
+ "ja:ko:zh"
+ };
+
+-static const GtkIMContextInfo * info_list[] = {
++static const GtkIMContextInfo *info_list[] = {
+ &ibus_im_info
+ };
+
+-
+-G_MODULE_EXPORT const gchar* g_module_check_init (GModule *module);
+-const gchar*
++G_MODULE_EXPORT const gchar*
+ g_module_check_init (GModule *module)
+ {
+ return glib_check_version (GLIB_MAJOR_VERSION,
+@@ -47,7 +45,7 @@ g_module_check_init (GModule *module)
+ GLIB_MICRO_VERSION);
+ }
+
+-void
++G_MODULE_EXPORT void
+ im_module_init (GTypeModule *type_module)
+ {
+ /* make module resident */
+@@ -56,25 +54,25 @@ im_module_init (GTypeModule *type_module)
+ ibus_im_context_register_type (type_module);
+ }
+
+-void
++G_MODULE_EXPORT void
+ im_module_exit (void)
+ {
+ }
+
+-GtkIMContext *
++G_MODULE_EXPORT GtkIMContext *
+ im_module_create (const gchar *context_id)
+ {
+ if (g_strcmp0 (context_id, "ibus") == 0) {
+ IBusIMContext *context;
+ context = ibus_im_context_new ();
+- return GTK_IM_CONTEXT(context);
++ return (GtkIMContext *) context;
+ }
+ return NULL;
+ }
+
+-void
++G_MODULE_EXPORT void
+ im_module_list (const GtkIMContextInfo ***contexts,
+- int *n_contexts)
++ gint *n_contexts)
+ {
+ *contexts = info_list;
+ *n_contexts = G_N_ELEMENTS (info_list);
+diff --git a/configure.ac b/configure.ac
+index 7481739..4437fd2 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -177,7 +177,7 @@ AC_ARG_ENABLE(qt4-immodule,
+ if test x"$IBUS_HAS_QT4" != x"yes"; then
+ enable_qt4=no
+ fi
+-enable_qt=no
++enable_qt4=no
+ AM_CONDITIONAL(IBUS_BUILD_QT4, [test x"$enable_qt4" = x"yes" ])
+
+ PKG_CHECK_MODULES(GCONF,
+diff --git a/ibus.spec.in b/ibus.spec.in
+index 65dfced..d9d5dba 100644
+--- a/ibus.spec.in
++++ b/ibus.spec.in
+@@ -20,7 +20,7 @@ BuildRequires: libtool
+ BuildRequires: python
+ BuildRequires: gtk2-devel
+ BuildRequires: dbus-devel
+-BuildRequires: qt-devel
++# BuildRequires: qt-devel
+ BuildRequires: dbus-glib-devel
+ BuildRequires: desktop-file-utils
+
+@@ -29,10 +29,10 @@ Requires(post): %{_sbindir}/alternatives
+ Requires(postun): desktop-file-utils
+ Requires(postun): %{_sbindir}/alternatives
+
++Requires: %{name}-libs = %{version}-%{release}
+ Requires: glib2 >= %{glib_ver}
+ Requires: pygtk2
+ Requires: dbus-python >= 0.83.0
+-Requires: gnome-python2-gconf
+ Requires: notification-daemon
+ Requires: pyxdg
+ Requires: iso-codes
+@@ -44,6 +44,14 @@ IBus means Intelligent Input Bus. It is a new input framework for Linux OS. It p
+ full featured and user friendly input method user interface. It also may help
+ developers to develop input method easily.
+
++%package libs
++Summary: IBus libraries
++Group: System Environment/Libraries
++
++%description libs
++This package contains ibus libraries.
++
++
+ %package gtk
+ Summary: IBus im module for gtk2
+ Group: System Environment/Libraries
+@@ -52,14 +60,14 @@ Requires: %{name} = %{version}-%{release}
+ %description gtk
+ This package contains ibus im module for gtk2
+
+-%package qt
+-Summary: IBus im module for qt4
+-Group: System Environment/Libraries
+-Requires: %{name} = %{version}-%{release}
+-Requires: qt >= 4.4.2
+-
+-%description qt
+-This package contains ibus im module for qt4
++# %package qt
++# Summary: IBus im module for qt4
++# Group: System Environment/Libraries
++# Requires: %{name} = %{version}-%{release}
++# Requires: qt >= 4.4.2
++#
++# %description qt
++# This package contains ibus im module for qt4
+
+ %package devel
+ Summary: Development tools for ibus
+@@ -123,13 +131,10 @@ fi
+ %files -f %{name}.lang
+ %defattr(-,root,root,-)
+ %doc AUTHORS COPYING README
+-%dir %{python_sitelib}/ibus
+-%{python_sitelib}/ibus/*
+-%dir %{_datadir}/ibus/
++%{python_sitelib}/ibus
+ %{_bindir}/ibus-daemon
+ %{_bindir}/ibus-setup
+-%{_libdir}/libibus.so*
+-%{_datadir}/ibus/*
++%{_datadir}/ibus
+ %{_datadir}/applications/*
+ %{_datadir}/pixmaps/*
+ %{_libexecdir}/ibus-gconf
+@@ -137,13 +142,18 @@ fi
+ %{_libexecdir}/ibus-x11
+ %config %{_xinputconf}
+
++
++%files libs
++%defattr(-,root,root,-)
++%{_libdir}/libibus.so*
++
+ %files gtk
+ %defattr(-,root,root,-)
+ %{_libdir}/gtk-2.0/%{gtk_binary_version}/immodules/im-ibus.so
+
+-%files qt
+-%defattr(-,root,root,-)
+-%{_libdir}/qt4/plugins/inputmethods/libibus.so
++# %files qt
++# %defattr(-,root,root,-)
++# %{_libdir}/qt4/plugins/inputmethods/libibus.so
+
+ %files devel
+ %defattr(-,root,root,-)
+diff --git a/ibus/engine.py b/ibus/engine.py
+index d52c97e..f8c0447 100644
+--- a/ibus/engine.py
++++ b/ibus/engine.py
+@@ -44,6 +44,9 @@ class EngineBase(object.Object):
+ def set_cursor_location(self, x, y, w, h):
+ pass
+
++ def set_capabilities(self, cap):
++ pass
++
+ def reset(self):
+ pass
+
+@@ -158,6 +161,9 @@ class EngineProxy(interface.IEngine):
+ def SetCursorLocation(self, x, y, w, h):
+ return self.__engine.set_cursor_location(x, y, w, h)
+
++ def SetCapabilities(self, caps):
++ return self.__engine.set_capabilities(caps)
++
+ def Reset(self):
+ return self.__engine.reset()
+
+diff --git a/ibus/interface/iengine.py b/ibus/interface/iengine.py
+index 32ba998..63d6c0e 100644
+--- a/ibus/interface/iengine.py
++++ b/ibus/interface/iengine.py
+@@ -49,6 +49,9 @@ class IEngine(dbus.service.Object):
+ @method(in_signature="iiii")
+ def SetCursorLocation(self, x, y, w, h): pass
+
++ @method(in_signature="u")
++ def SetCapabilities(self, cap): pass
++
+ @method()
+ def FocusIn(self): pass
+
diff --git a/src/ibusbus.c b/src/ibusbus.c
-index 9965761..a567359 100644
+index 9965761..0ebdf66 100644
--- a/src/ibusbus.c
+++ b/src/ibusbus.c
@@ -639,15 +639,20 @@ ibus_bus_exit (IBusBus *bus,
@@ -357,7 +669,7 @@
+ IBusBusPrivate *priv;
+ priv = IBUS_BUS_GET_PRIVATE (bus);
-+
++
gboolean result;
result = ibus_bus_call (bus,
IBUS_SERVICE_IBUS,
@@ -369,23 +681,283 @@
G_TYPE_INVALID,
G_TYPE_INVALID);
+ ibus_connection_flush (priv->connection);
-+
++
return result;
}
-diff --git a/src/ibuscomponent.c b/src/ibuscomponent.c
-index 9ca487d..59690b8 100644
---- a/src/ibuscomponent.c
-+++ b/src/ibuscomponent.c
-@@ -679,7 +679,7 @@ ibus_component_start (IBusComponent *component)
-
- error = NULL;
- retval = g_spawn_async (NULL, argv, NULL,
-- G_SPAWN_DO_NOT_REAP_CHILD | G_SPAWN_STDOUT_TO_DEV_NULL | G_SPAWN_STDERR_TO_DEV_NULL,
-+ G_SPAWN_DO_NOT_REAP_CHILD /* | G_SPAWN_STDOUT_TO_DEV_NULL | G_SPAWN_STDERR_TO_DEV_NULL */,
- NULL, NULL,
- &(component->pid), &error);
- g_strfreev (argv)
+diff --git a/src/ibuslookuptable.c b/src/ibuslookuptable.c
+index e2935b8..37342c5 100644
+--- a/src/ibuslookuptable.c
++++ b/src/ibuslookuptable.c
+@@ -121,7 +121,7 @@ ibus_lookup_table_serialize (IBusLookupTable *table,
+
+ retval = ibus_message_iter_append (iter, G_TYPE_BOOLEAN, &table->cursor_visible);
+ g_return_val_if_fail (retval, FALSE);
+-
++
+ retval = ibus_message_iter_append (iter, G_TYPE_BOOLEAN, &table->round);
+ g_return_val_if_fail (retval, FALSE);
+
+@@ -168,7 +168,7 @@ ibus_lookup_table_deserialize (IBusLookupTable *table,
+
+ retval = ibus_message_iter_get (iter, G_TYPE_BOOLEAN, &table->cursor_visible);
+ g_return_val_if_fail (retval, FALSE);
+-
++
+ retval = ibus_message_iter_get (iter, G_TYPE_BOOLEAN, &table->round);
+ g_return_val_if_fail (retval, FALSE);
+
+@@ -223,6 +223,8 @@ ibus_lookup_table_new (guint page_size,
+ gboolean cursor_visible,
+ gboolean round)
+ {
++ g_assert (page_size > 0);
++
+ IBusLookupTable *table;
+
+ table= g_object_new (IBUS_TYPE_LOOKUP_TABLE, NULL);
+@@ -278,15 +280,150 @@ ibus_lookup_table_set_cursor_pos (IBusLookupTable *table,
+ guint cursor_pos)
+ {
+ g_assert (IBUS_IS_LOOKUP_TABLE (table));
++ g_assert (cursor_pos < table->candidates->len);
+
+ table->cursor_pos = cursor_pos;
+ }
++
++guint
++ibus_lookup_table_get_cursor_pos (IBusLookupTable *table)
++{
++ g_assert (IBUS_IS_LOOKUP_TABLE (table));
++
++ return table->cursor_pos;
++}
++
++guint
++ibus_lookup_table_get_cursor_in_page (IBusLookupTable *table)
++{
++ g_assert (IBUS_IS_LOOKUP_TABLE (table));
++
++ return table->cursor_pos % table->page_size;
++}
++
++void
++ibus_lookup_table_set_cursor_visible (IBusLookupTable *table,
++ gboolean visible)
++{
++ g_assert (IBUS_IS_LOOKUP_TABLE (table));
++
++ table->cursor_visible = visible;
++}
++
++gboolean
++ibus_lookup_table_is_cursor_visible (IBusLookupTable *table)
++{
++ g_assert (IBUS_IS_LOOKUP_TABLE (table));
++
++ return table->cursor_visible;
++}
++
+ void
+ ibus_lookup_table_set_page_size (IBusLookupTable *table,
+ guint page_size)
+ {
+ g_assert (IBUS_IS_LOOKUP_TABLE (table));
++ g_assert (page_size > 0);
+
+ table->page_size = page_size;
+ }
+
++guint
++ibus_lookup_table_get_page_size (IBusLookupTable *table)
++{
++ g_assert (IBUS_IS_LOOKUP_TABLE (table));
++
++ return table->page_size;
++}
++
++gboolean
++ibus_lookup_table_page_up (IBusLookupTable *table)
++{
++ g_assert (IBUS_IS_LOOKUP_TABLE (table));
++
++ if (table->cursor_pos < table->page_size) {
++ gint i;
++ gint page_nr;
++
++ if (!table->round) {
++ return FALSE;
++ }
++
++ /* cursor index in page */
++ i = table->cursor_pos % table->page_size;
++ page_nr = (table->candidates->len + table->page_size - 1) / table->page_size;
++
++ table->cursor_pos = page_nr * table->page_size + i;
++ if (table->cursor_pos >= table->candidates->len) {
++ table->cursor_pos = table->candidates->len - 1;
++ }
++ return TRUE;
++ }
++
++ table->cursor_pos -= table->page_size;
++ return TRUE;
++}
++
++gboolean
++ibus_lookup_table_page_down (IBusLookupTable *table)
++{
++ g_assert (IBUS_IS_LOOKUP_TABLE (table));
++
++ gint i;
++ gint page;
++ gint page_nr;
++
++ /* cursor index in page */
++ i = table->cursor_pos % table->page_size;
++ page = table->cursor_pos / table->page_size;
++ page_nr = (table->candidates->len + table->page_size - 1) / table->page_size;
++
++ if (page == page_nr - 1) {
++ if (!table->round)
++ return FALSE;
++
++ table->cursor_pos = i;
++ return TRUE;
++ }
++
++ table->cursor_pos += table->page_size;
++ if (table->cursor_pos > table->candidates->len - 1) {
++ table->cursor_pos = table->candidates->len - 1;
++ }
++ return TRUE;
++}
++
++gboolean
++ibus_lookup_table_cursor_up (IBusLookupTable *table)
++{
++ g_assert (IBUS_IS_LOOKUP_TABLE (table));
++
++ if (table->cursor_pos == 0) {
++ if (!table->round)
++ return FALSE;
++
++ table->cursor_pos = table->candidates->len - 1;
++ return TRUE;
++ }
++
++ table->cursor_pos --;
++
++ return TRUE;
++}
++
++gboolean
++ibus_lookup_table_cursor_down (IBusLookupTable *table)
++{
++ g_assert (IBUS_IS_LOOKUP_TABLE (table));
++
++ if (table->cursor_pos == table->candidates->len - 1) {
++ if (!table->round)
++ return FALSE;
++
++ table->cursor_pos = 0;
++ return TRUE;
++ }
++
++ table->cursor_pos ++;
++ return TRUE;
++}
+diff --git a/src/ibuslookuptable.h b/src/ibuslookuptable.h
+index 62ca7d8..ede02b1 100644
+--- a/src/ibuslookuptable.h
++++ b/src/ibuslookuptable.h
+@@ -76,10 +76,26 @@ IBusText *ibus_lookup_table_get_candidate
+ void ibus_lookup_table_set_cursor_pos
+ (IBusLookupTable *table,
+ guint cursor_pos);
++guint ibus_lookup_table_get_cursor_pos
++ (IBusLookupTable *table);
++void ibus_lookup_table_set_cursor_visible
++ (IBusLookupTable *table,
++ gboolean visible);
++gboolean ibus_lookup_table_is_cursor_visible
++ (IBusLookupTable *table);
++guint ibus_lookup_table_get_cursor_in_page
++ (IBusLookupTable *table);
+ void ibus_lookup_table_set_page_size
+ (IBusLookupTable *table,
+ guint page_size);
++guint ibus_lookup_table_get_page_size
++ (IBusLookupTable *table);
+ void ibus_lookup_table_clear (IBusLookupTable *table);
++gboolean ibus_lookup_table_page_up (IBusLookupTable *table);
++gboolean ibus_lookup_table_page_down(IBusLookupTable *table);
++gboolean ibus_lookup_table_cursor_up(IBusLookupTable *table);
++gboolean ibus_lookup_table_cursor_down
++ (IBusLookupTable *table);
+ G_END_DECLS
+ #endif
+
+diff --git a/ui/gtk/languagebar.py b/ui/gtk/languagebar.py
+index 3546ef7..2a10a43 100644
+--- a/ui/gtk/languagebar.py
++++ b/ui/gtk/languagebar.py
+@@ -65,11 +65,11 @@ class LanguageBar(gtk.Toolbar):
+
+ root = gdk.get_default_root_window()
+ try:
+- workarea = root.property_get("_NET_WORKAREA")[2]
+- right, bottom = workarea[0] + workarea[2], workarea[1] + workarea[3]
++ self.__work_area = root.property_get("_NET_WORKAREA")[2]
+ except:
+- right, bottom = root.get_size()
+- self.__position = right - 20, bottom - 20
++ w, h = root.get_size()
++ self.__work_area = 0, 0, w, h
++ self.__position = self.__work_area[0] + self.__work_area[2] - 20, self.__work_area[1] + self.__work_area[3] - 20
+ self.__toplevel.move(*self.__position)
+
+ def __create_ui(self):
+@@ -106,13 +106,19 @@ class LanguageBar(gtk.Toolbar):
+
+ def __toplevel_size_allocate_cb(self, toplevel, allocation):
+ x, y = self.__position
+- self.__toplevel.move(x - allocation.width, y - allocation.height)
++ if x - self.__work_area[0] >= self.__work_area[2] - 80:
++ self.__toplevel.move(x - allocation.width, y - allocation.height)
+
+ def __remove_properties(self):
+ # reset all properties
+ map(lambda i: i.destroy(), self.__properties)
+ self.__properties = []
+
++ def __set_opacity(self, opacity):
++ if self.__toplevel.window == None:
++ self.__toplevel.realize()
++ self.__toplevel.window.set_opacity(opacity)
++
+ def do_show(self):
+ gtk.Toolbar.do_show(self)
+
+@@ -128,10 +134,14 @@ class LanguageBar(gtk.Toolbar):
+
+ def set_enabled(self, enabled):
+ self.__enabled = enabled
+- if self.__enabled and self.__has_focus:
+- self.show_all()
+- if not self.__enabled and self.__auto_hide:
+- self.hide_all()
++ if self.__enabled:
++ self.__set_opacity(1.0)
++ if self.__has_focus:
++ self.show_all()
++ else:
++ self.__set_opacity(0.5)
++ if self.__auto_hide:
++ self.hide_all()
+
+ def is_enabled(self):
+ return self.__enabled
diff --git a/ui/gtk/menu.py b/ui/gtk/menu.py
index 9a3b30a..6f6c7d1 100644
--- a/ui/gtk/menu.py
@@ -409,7 +981,7 @@
self.set_active (self._prop._state == ibus.PROP_STATE_CHECKED)
diff --git a/ui/gtk/panel.py b/ui/gtk/panel.py
-index e7850e6..d3cd249 100644
+index e7850e6..d968393 100644
--- a/ui/gtk/panel.py
+++ b/ui/gtk/panel.py
@@ -74,9 +74,7 @@ class Panel(ibus.PanelBase):
@@ -423,6 +995,14 @@
self.__language_bar = LanguageBar()
self.__language_bar.connect("property-activate",
+@@ -193,6 +191,7 @@ class Panel(ibus.PanelBase):
+ def focus_out(self, ic):
+ self.reset()
+ self.__focus_ic = None
++ self.__language_bar.set_enabled(False)
+ self.__language_bar.focus_out()
+ self.__set_im_icon(self.__ibus_icon)
+
diff --git a/ui/gtk/toolitem.py b/ui/gtk/toolitem.py
index 0e4e4ad..09ad686 100644
--- a/ui/gtk/toolitem.py
Index: ibus.spec
===================================================================
RCS file: /cvs/pkgs/rpms/ibus/devel/ibus.spec,v
retrieving revision 1.42
retrieving revision 1.43
diff -u -r1.42 -r1.43
--- ibus.spec 15 Feb 2009 04:36:54 -0000 1.42
+++ ibus.spec 15 Feb 2009 08:21:34 -0000 1.43
@@ -3,7 +3,7 @@
%define mod_path ibus-1.1
Name: ibus
Version: 1.1.0.20090211
-Release: 4%{?dist}
+Release: 5%{?dist}
Summary: Intelligent Input Bus for Linux OS
License: LGPLv2+
Group: System Environment/Libraries
@@ -180,6 +180,9 @@
%{_libdir}/pkgconfig/*
%changelog
+* Sun Feb 15 2009 Huang Peng <shawn.p.huang at gmail.com> - 1.1.0.20090211-5
+- Recreate the ibus-HEAD.patch from upstream git source tree.
+
* Sun Feb 15 2009 Huang Peng <shawn.p.huang at gmail.com> - 1.1.0.20090211-4
- Remove gnome-python2-gconf from requires.
More information about the fedora-extras-commits
mailing list