public inbox for git-commits@fedoraproject.org
help / color / mirror / Atom feed
From: Takao Fujiwara <tfujiwar@redhat.com>
To: git-commits@fedoraproject.org
Subject: [rpms/ibus] autotool: Fixed Bug 677856 - left ibus snooper when im client is switched.
Date: Sun, 31 May 2026 02:05:03 GMT	[thread overview]
Message-ID: <178019310371.1.2273264857109957399.rpms-ibus-38194ccce141@fedoraproject.org> (raw)

A new commit has been pushed.

Repo   : rpms/ibus
Branch : autotool
Commit : 38194ccce1416f338e922d156b2c77450b105f05
Author : Takao Fujiwara <tfujiwar@redhat.com>
Date   : 2011-02-17T16:30:49+09:00
Stats  : +196/-6 in 4 file(s)
URL    : https://src.fedoraproject.org/rpms/ibus/c/38194ccce1416f338e922d156b2c77450b105f05?branch=autotool

Log:
Fixed Bug 677856 - left ibus snooper when im client is switched.

---
diff --git a/ibus-530711-preload-sys.patch b/ibus-530711-preload-sys.patch
index 86d9bb0..a30d069 100644
--- a/ibus-530711-preload-sys.patch
+++ b/ibus-530711-preload-sys.patch
@@ -40,7 +40,7 @@ index cbcf7f4..1bb159e 100644
  static void     bus_ibus_impl_set_use_sys_layout
                                                  (BusIBusImpl        *ibus,
                                                   GVariant           *value);
-@@ -270,6 +273,123 @@ _panel_destroy_cb (BusPanelProxy *panel,
+@@ -270,6 +273,126 @@ _panel_destroy_cb (BusPanelProxy *panel,
      g_object_unref (panel);
  }
  
@@ -131,7 +131,10 @@ index cbcf7f4..1bb159e 100644
 +
 +    g_assert (BUS_IS_IBUS_IMPL (ibus));
 +
-+    lang = g_strdup (setlocale (LC_ALL, NULL));
++    lang = g_strdup (setlocale (LC_CTYPE, NULL));
++    if (lang == NULL) {
++        return;
++    }
 +    p = index (lang, '.');
 +    if (p) {
 +        *p = '\0';
@@ -164,7 +167,7 @@ index cbcf7f4..1bb159e 100644
  static void
  bus_ibus_impl_set_hotkey (BusIBusImpl *ibus,
                            GQuark       hotkey,
-@@ -354,34 +474,32 @@ static void
+@@ -354,34 +477,32 @@ static void
  bus_ibus_impl_set_preload_engines (BusIBusImpl *ibus,
                                     GVariant    *value)
  {
@@ -218,7 +221,7 @@ index cbcf7f4..1bb159e 100644
  }
  
  /**
-@@ -459,82 +577,48 @@ bus_ibus_impl_set_use_global_engine (BusIBusImpl *ibus,
+@@ -459,82 +580,48 @@ bus_ibus_impl_set_use_global_engine (BusIBusImpl *ibus,
      }
  }
  
@@ -324,7 +327,7 @@ index cbcf7f4..1bb159e 100644
  #endif
  }
  
-@@ -548,6 +632,7 @@ const static struct {
+@@ -548,6 +635,7 @@ const static struct {
      { "general/hotkey", "next_engine_in_menu",  bus_ibus_impl_set_next_engine_in_menu },
      { "general/hotkey", "previous_engine",      bus_ibus_impl_set_previous_engine },
      { "general", "preload_engines",             bus_ibus_impl_set_preload_engines },

diff --git a/ibus-HEAD.patch b/ibus-HEAD.patch
index 1955588..cdb4df4 100644
--- a/ibus-HEAD.patch
+++ b/ibus-HEAD.patch
@@ -94,3 +94,50 @@ index 88357af..9f593ab 100644
 -- 
 1.7.3.2
 
+From 6575fab67eaf6f8e483a001f26dbfd61c3258e0a Mon Sep 17 00:00:00 2001
+From: fujiwarat <takao.fujiwara1@gmail.com>
+Date: Thu, 17 Feb 2011 14:46:45 +0900
+Subject: [PATCH] Call gtk_key_snooper_remove when GTK IM client is switched.
+
+---
+ client/gtk2/ibusimcontext.c |   10 ++++++++++
+ 1 files changed, 10 insertions(+), 0 deletions(-)
+
+diff --git a/client/gtk2/ibusimcontext.c b/client/gtk2/ibusimcontext.c
+index bb5ae5c..bb9cb3d 100644
+--- a/client/gtk2/ibusimcontext.c
++++ b/client/gtk2/ibusimcontext.c
+@@ -258,6 +258,8 @@ _key_snooper_cb (GtkWidget   *widget,
+     IBusIMContext *ibusimcontext = (IBusIMContext *) _focus_im_context;
+     IBusInputContext *ibuscontext = NULL;
+ 
++    g_return_val_if_fail (IBUS_IS_IM_CONTEXT (ibusimcontext), FALSE);
++
+     if (ibusimcontext != NULL &&
+         ibusimcontext->has_focus == TRUE) {
+         /* has IC with focus and use_key_snooper is true */
+@@ -620,6 +622,12 @@ ibus_im_context_finalize (GObject *obj)
+         pango_attr_list_unref (ibusimcontext->preedit_attrs);
+     }
+ 
++    if (_key_snooper_id != 0) {
++        IDEBUG ("snooper is terminated.");
++        gtk_key_snooper_remove (_key_snooper_id);
++        _key_snooper_id = 0;
++    }
++
+     G_OBJECT_CLASS(parent_class)->finalize (obj);
+ }
+ 
+@@ -631,6 +639,8 @@ ibus_im_context_filter_keypress (GtkIMContext *context,
+ 
+     IBusIMContext *ibusimcontext = IBUS_IM_CONTEXT (context);
+ 
++    g_return_val_if_fail (IBUS_IS_IM_CONTEXT (ibusimcontext), FALSE);
++
+     if (G_LIKELY (ibusimcontext->ibuscontext && ibusimcontext->has_focus)) {
+         /* If context does not have focus, ibus will process key event in sync mode.
+          * It is a workaround for increase search in treeview.
+-- 
+1.7.4
+

diff --git a/ibus-xx-gtk-legacy-icon.patch b/ibus-xx-gtk-legacy-icon.patch
new file mode 100644
index 0000000..22b354f
--- /dev/null
+++ b/ibus-xx-gtk-legacy-icon.patch
@@ -0,0 +1,133 @@
+From e2b07deb05182355f7bdecdd69a731a566ad832c Mon Sep 17 00:00:00 2001
+From: fujiwarat <takao.fujiwara1@gmail.com>
+Date: Thu, 17 Feb 2011 15:16:21 +0900
+Subject: [PATCH] Use gtk_icon_factory_lookup_default for GTK stock
+
+gtk_icon_theme_load_icon doesn't load GTK legacy stock ids because
+The stock legacy symlinks are removed in the latst GTK.
+---
+ ui/gtk/engineabout.py |   13 ++++++++++---
+ ui/gtk/icon.py        |   40 ++++++++++++++++++++++++++++++++++++----
+ ui/gtk/panel.py       |    4 ++--
+ 3 files changed, 48 insertions(+), 9 deletions(-)
+
+diff --git a/ui/gtk/engineabout.py b/ui/gtk/engineabout.py
+index a34e930..1af806c 100644
+--- a/ui/gtk/engineabout.py
++++ b/ui/gtk/engineabout.py
+@@ -24,6 +24,7 @@ import gtk
+ from gtk import gdk
+ import pango
+ import ibus
++import icon as _icon
+ 
+ from i18n import _, N_
+ 
+@@ -35,7 +36,9 @@ class EngineAbout(gtk.Dialog):
+         self.__init_ui()
+ 
+     def __init_ui(self):
+-        self.set_icon_name("gtk-about")
++        # Gtk stock symlink is legacy.
++        pixbufs = _icon.icon_set_get_pixbufs_default(None, gtk.STOCK_ABOUT)
++        self.set_icon_list(*pixbufs)
+         sw = gtk.ScrolledWindow()
+         sw.set_shadow_type(gtk.SHADOW_ETCHED_IN)
+         sw.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
+@@ -96,6 +99,10 @@ class EngineAbout(gtk.Dialog):
+             theme = gtk.icon_theme_get_default()
+             icon = theme.lookup_icon("ibus-engine", 48, 0)
+             if icon == None:
+-                icon = theme.lookup_icon("gtk-missing-image", 48, 0)
+-            pixbuf = icon.load_icon()
++                # Gtk stock symlink is legacy.
++                pixbuf = _icon.icon_set_get_pixbuf_default(None,
++                                                           gtk.STOCK_MISSING_IMAGE,
++                                                           48)
++            else:
++                pixbuf = icon.load_icon()
+         return pixbuf
+diff --git a/ui/gtk/icon.py b/ui/gtk/icon.py
+index 5b5f97f..d91fe4a 100644
+--- a/ui/gtk/icon.py
++++ b/ui/gtk/icon.py
+@@ -22,6 +22,32 @@
+ 
+ import gtk
+ import gtk.gdk as gdk
++import sys
++
++def icon_set_get_pixbuf_default(icon_set, stock_id, size, state=gtk.STATE_NORMAL):
++    if icon_set == None:
++        icon_set = gtk.icon_factory_lookup_default(stock_id)
++    if icon_set == None:
++        return None
++    return icon_set.render_icon(gtk.widget_get_default_style(),
++                                gtk.widget_get_default_direction(),
++                                state,
++                                size,
++                                None, None)
++
++def icon_set_get_pixbufs_default(icon_set, stock_id, state=gtk.STATE_NORMAL):
++    if icon_set == None:
++        icon_set = gtk.icon_factory_lookup_default(stock_id)
++    pixbufs = []
++    if icon_set == None:
++        return []
++    for size in icon_set.get_sizes():
++        pixbufs.append(icon_set.render_icon(gtk.widget_get_default_style(),
++                                            gtk.widget_get_default_direction(),
++                                            state,
++                                            size,
++                                            None, None))
++    return pixbufs
+ 
+ class IconWidget(gtk.Image):
+     def __init__(self, icon, size):
+@@ -31,11 +57,17 @@ class IconWidget(gtk.Image):
+             if icon.startswith("/"):
+                 pixbuf = gdk.pixbuf_new_from_file(icon)
+             else:
+-                theme = gtk.icon_theme_get_default()
+-                pixbuf = theme.load_icon(icon, size, 0)
++                # Gtk stock symlink is legacy.
++                icon_set = gtk.icon_factory_lookup_default(icon)
++                if icon_set != None:
++                    pixbuf = icon_set_get_pixbuf_default(icon_set, icon, size)
++                else:
++                    theme = gtk.icon_theme_get_default()
++                    pixbuf = theme.load_icon(icon, size, 0)
+         except:
+-            theme = gtk.icon_theme_get_default()
+-            pixbuf = theme.load_icon(gtk.STOCK_MISSING_IMAGE, size, 0)
++            print >> sys.stderr, "Not Found Icon", icon, size
++            # Gtk stock symlink is legacy.
++            pixbuf = icon_set_get_pixbuf_default(None, gtk.STOCK_MISSING_IMAGE, size)
+ 
+         width = pixbuf.get_width()
+         height = pixbuf.get_height()
+diff --git a/ui/gtk/panel.py b/ui/gtk/panel.py
+index 07b0fa2..2244455 100644
+--- a/ui/gtk/panel.py
++++ b/ui/gtk/panel.py
+@@ -412,7 +412,7 @@ class Panel(ibus.PanelBase):
+             menu.add(item)
+ 
+         item = gtk.ImageMenuItem(_("Turn off input method"))
+-        item.set_image(_icon.IconWidget("gtk-close", size[0]))
++        item.set_image(_icon.IconWidget(gtk.STOCK_CLOSE, size[0]))
+         item.connect("activate", self.__im_menu_item_activate_cb, None)
+         if self.__focus_ic == None or not self.__focus_ic.is_enabled():
+             item.set_sensitive(False)
+@@ -452,7 +452,7 @@ class Panel(ibus.PanelBase):
+             menu = gtk.Menu()
+             item = gtk.ImageMenuItem(_("No input window"))
+             size = gtk.icon_size_lookup(gtk.ICON_SIZE_MENU)
+-            item.set_image(_icon.IconWidget("gtk-info", size[0]))
++            item.set_image(_icon.IconWidget(gtk.STOCK_INFO, size[0]))
+             menu.add(item)
+             menu.show_all()
+         else:
+-- 
+1.7.4
+

diff --git a/ibus.spec b/ibus.spec
index 44f458e..0946fb0 100644
--- a/ibus.spec
+++ b/ibus.spec
@@ -12,7 +12,7 @@
 
 Name:       ibus
 Version:    1.3.99.20110206
-Release:    1%{?dist}
+Release:    2%{?dist}
 Summary:    Intelligent Input Bus for Linux OS
 License:    LGPLv2+
 Group:      System Environment/Libraries
@@ -29,6 +29,8 @@ Patch4:     ibus-657165-panel-libs.patch
 Patch5:     ibus-657165-gjs-plugins.patch
 # This will be removed after the new gnome-shell is integrated.
 Patch99:    ibus-675503-gnome-shell-workaround.patch
+# The latest gnome-icon-theme removes the legacy gtk-stock symlinks.
+Patch100:   ibus-xx-gtk-legacy-icon.patch
 
 BuildRoot:  %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
 
@@ -141,6 +143,7 @@ The ibus-devel-docs package contains developer documentation for ibus
 bzcat %SOURCE2 | tar xf -
 %patch0 -p1
 %patch99 -p1 -b .g-s-typo
+%patch100 -p1 -b .legacy-stock
 # start surrounding patch
 %patch1 -p1 -b .surrounding
 cp client/gtk2/ibusimcontext.c client/gtk3/ibusimcontext.c
@@ -311,6 +314,10 @@ fi
 %{_datadir}/gtk-doc/html/*
 
 %changelog
+* Thu Feb 17 2011 Takao Fujiwara <tfujiwar@redhat.com> - 1.3.99.20110206-2
+- Fixed Bug 677856 - left ibus snooper when im client is switched.
+- Added ibus-xx-gtk-legacy-icon.patch to work without legacy gtk stock.
+
 * Mon Feb 14 2011 Takao Fujiwara <tfujiwar@redhat.com> - 1.3.99.20110206-1
 - Integrated the part of gjs in Bug 657165 ibus for gnome-shell.
   Added ibus-ui-gjs-plugins-20110214.tar.bz2

                 reply	other threads:[~2026-05-31  2:05 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=178019310371.1.2273264857109957399.rpms-ibus-38194ccce141@fedoraproject.org \
    --to=tfujiwar@redhat.com \
    --cc=git-commits@fedoraproject.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox