From e08ec45e28946654ded1d2c6eb43d94d0fb9a885 Mon Sep 17 00:00:00 2001 From: Takao Fujiwara Date: Jul 14 2014 07:52:35 +0000 Subject: Updated ibus-HEAD.patch from upstream. Fixed ibus-setup SEGV when an engine is selected. Fixed ibus-setup deprecated warnings with the latest python3-gobject. Integrated the 'IBUS_SETUP_XID' environment variable for each engine setup. Set prgname 'ibus-setup' for ibus-setup. --- diff --git a/ibus-530711-preload-sys.patch b/ibus-530711-preload-sys.patch index 790cbe0..d1869c4 100644 --- a/ibus-530711-preload-sys.patch +++ b/ibus-530711-preload-sys.patch @@ -1,6 +1,6 @@ -From a6d4b9ac9a22c5b88c362b659eaf6fd59a0cf5bd Mon Sep 17 00:00:00 2001 +From 91f6d9f3d0fc854711c2ba151c0dc5105a0a9152 Mon Sep 17 00:00:00 2001 From: fujiwarat -Date: Tue, 14 Jan 2014 15:30:24 +0900 +Date: Mon, 14 Jul 2014 16:20:21 +0900 Subject: [PATCH] Reload preload engines until users customize the list. The idea is, if users don't customize the preload_engines with ibus-setup, @@ -18,14 +18,14 @@ IBUS_PRELOAD_ENGINE_MODE_USER and users can customize the value 'preload-engines'. --- data/ibus.schemas.in | 24 ++++++++++++++ - setup/main.py | 70 +++++++++++++++++++++++++++++++++++---- + setup/main.py | 72 ++++++++++++++++++++++++++++++++++++---- setup/setup.ui | 22 +++++++++++-- src/ibustypes.h | 10 ++++++ ui/gtk3/panel.vala | 93 ++++++++++++++++++++++++++++++++++++++++++++++++++++ - 5 files changed, 210 insertions(+), 9 deletions(-) + 5 files changed, 212 insertions(+), 9 deletions(-) diff --git a/data/ibus.schemas.in b/data/ibus.schemas.in -index 8fd7e15..28d2219 100644 +index 1e4776b..9ee0b1a 100644 --- a/data/ibus.schemas.in +++ b/data/ibus.schemas.in @@ -2,6 +2,30 @@ @@ -60,7 +60,7 @@ index 8fd7e15..28d2219 100644 /desktop/ibus/general/preload_engines ibus diff --git a/setup/main.py b/setup/main.py -index d3f4414..235ef9c 100644 +index dee7be4..a991438 100644 --- a/setup/main.py +++ b/setup/main.py @@ -190,16 +190,30 @@ class Setup(object): @@ -124,7 +124,7 @@ index d3f4414..235ef9c 100644 def __treeview_notify_cb(self, treeview, prop): if prop.name not in ("active-engine", "engines"): return -@@ -321,6 +343,43 @@ class Setup(object): +@@ -321,6 +343,44 @@ class Setup(object): del self.__engine_setup_exec_list[name] self.__engine_setup_exec_list[name] = os.spawnl(os.P_NOWAIT, *args) @@ -140,9 +140,10 @@ index d3f4414..235ef9c 100644 + "cleared immediately and the list will be " \ + "configured by the login language every time. " \ + "Do you agree with this?") -+ dlg = Gtk.MessageDialog(type = Gtk.MessageType.QUESTION, ++ dlg = Gtk.MessageDialog(message_type = Gtk.MessageType.QUESTION, ++ transient_for = self.__window, + buttons = Gtk.ButtonsType.YES_NO, -+ message_format = message) ++ text = message) + id = dlg.run() + dlg.destroy() + self.__flush_gtk_events() @@ -169,7 +170,7 @@ index d3f4414..235ef9c 100644 self.__bus = IBus.Bus() if self.__bus.is_connected(): diff --git a/setup/setup.ui b/setup/setup.ui -index 65dcee4..a6a001b 100644 +index 5ffbe47..7c60b72 100644 --- a/setup/setup.ui +++ b/setup/setup.ui @@ -677,7 +677,23 @@ @@ -197,7 +198,7 @@ index 65dcee4..a6a001b 100644 horizontal True False -@@ -868,7 +884,7 @@ +@@ -869,7 +885,7 @@ True True @@ -206,7 +207,7 @@ index 65dcee4..a6a001b 100644 -@@ -916,7 +932,7 @@ +@@ -917,7 +933,7 @@ False True @@ -237,7 +238,7 @@ index 86fc2cc..cb9eb22 100644 * @x: x coordinate. * @y: y coordinate. diff --git a/ui/gtk3/panel.vala b/ui/gtk3/panel.vala -index 1da7966..fc60fd4 100644 +index 7a15049..e6c128a 100644 --- a/ui/gtk3/panel.vala +++ b/ui/gtk3/panel.vala @@ -141,6 +141,10 @@ class Panel : IBus.PanelService { @@ -349,5 +350,5 @@ index 1da7966..fc60fd4 100644 private void update_xkb_engines() { -- -1.8.0 +1.8.5.3 diff --git a/ibus-HEAD.patch b/ibus-HEAD.patch index e249604..316e140 100644 --- a/ibus-HEAD.patch +++ b/ibus-HEAD.patch @@ -212,7 +212,7 @@ index 1b617f8..c16f86a 100644 From 9bad0c944162a1700dcb6615aab2a6a9cfd9eff5 Mon Sep 17 00:00:00 2001 From: fujiwarat Date: Thu, 12 Jun 2014 11:38:43 +0900 -Subject: [PATCH 1/8] Fix escape key with Ctrl+Shift+U ISO 14755. +Subject: [PATCH] Fix escape key with Ctrl+Shift+U ISO 14755. GtkIMContextSimple uses gdk_keymap_get_for_display() to check the readable hex codes but IBusEngineSimple ignored it because does not have the display @@ -314,7 +314,7 @@ index 8c076ac..300a828 100644 From b6afffbd1a06ecf17af009f1de3e513988ecb92e Mon Sep 17 00:00:00 2001 From: fujiwarat Date: Wed, 18 Jun 2014 11:42:34 +0900 -Subject: [PATCH 2/8] Update ibuscomposetable.h for pt-br. +Subject: [PATCH] Update ibuscomposetable.h for pt-br. pt_BR.UTF-8/Compose file is updated: http://cgit.freedesktop.org/xorg/lib/libX11/commit/?id=e3dc0d1733 @@ -1000,7 +1000,7 @@ index 2ba3571..22aab48 100644 From a5300750e38b5327bdd255d777544d0c0ebcb4d9 Mon Sep 17 00:00:00 2001 From: fujiwarat Date: Tue, 24 Jun 2014 11:24:40 +0900 -Subject: [PATCH 4/8] Do not sort ibus engines when they are saved by +Subject: [PATCH] Do not sort ibus engines when they are saved by ibus-setup. ibus 1.5 changes the engine order with Super+space shortcut key @@ -1099,7 +1099,7 @@ index dee7be4..1d89f3d 100644 From 8ef258ec31f12405e4f5ded6a7a4d80114a219d4 Mon Sep 17 00:00:00 2001 From: Osamu Aoki Date: Thu, 3 Jul 2014 11:39:32 +0900 -Subject: [PATCH 5/8] Use "keycode Linux_keycode = X11_keysym" format +Subject: [PATCH] Use "keycode Linux_keycode = X11_keysym" format Delete non-Linux keyboard compatibility. @@ -1150,7 +1150,7 @@ index 2c78347..e5546fa 100644 From 3dcf24742216d6234a45ace1b433b864efdf08a2 Mon Sep 17 00:00:00 2001 From: fujiwarat Date: Fri, 4 Jul 2014 16:03:57 +0900 -Subject: [PATCH 7/8] Add ibus reset-config and read-config sub-commands. +Subject: [PATCH] Add ibus reset-config and read-config sub-commands. BUG=rhbz#530711 TEST=tools/ibus @@ -1243,17 +1243,20 @@ index db4fd23..ecce80a 100644 -- 1.8.5.3 -From 4c245bbbac3edea90980a0f47ef2d5c0c070f936 Mon Sep 17 00:00:00 2001 +From 9e5a2bd2c40f9eed8d99710b63b3dab737aa9b95 Mon Sep 17 00:00:00 2001 From: fujiwarat -Date: Mon, 7 Jul 2014 16:17:25 +0900 -Subject: [PATCH 8/8] Update ibus(1) for read-config and reset-config. +Date: Tue, 8 Jul 2014 11:42:12 +0900 +Subject: [PATCH] Update ibus(1) for read-config and reset-config. +TEST=tools/ibus.1.gz + +Review URL: https://codereview.appspot.com/111900044 --- tools/ibus.1.in | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/tools/ibus.1.in b/tools/ibus.1.in -index ab99db4..f777f65 100644 +index ab99db4..6ac92ff 100644 --- a/tools/ibus.1.in +++ b/tools/ibus.1.in @@ -85,6 +85,13 @@ directories, separated by ':'. @@ -1261,7 +1264,7 @@ index ab99db4..f777f65 100644 Show the D-Bus address of ibus-daemon. .TP +\fBread\-config\fR -+Show the setting values in a gsettings configuration file. ++Print the setting values in a gsettings configuration file. +.TP +\fBreset\-config\fR +Reset the user setting values to the default ones in a gsettings @@ -1273,3 +1276,414 @@ index ab99db4..f777f65 100644 -- 1.8.5.3 +From 10483bfebd1f51ffa52ad7d017193ae728f93bf5 Mon Sep 17 00:00:00 2001 +From: fujiwarat +Date: Thu, 10 Jul 2014 11:54:30 +0900 +Subject: [PATCH] Fix ibus-setup SEGV in enginetreeview.py + +When an engine is added on ibus-setup, enginetreeview.append_engine() +calls self.__model.append(None) and it causes engine == None in +__icon_cell_data_cb() and __name_cell_data_cb() in enginetreeview +with python3-gobject 3.13.x which version has implemented several +deprecated warnings in gi/overrides/Gtk.py . +I think this problem also could happen in the old versions if +the system would be slow. + +BUG=rhbz#1048429 +TEST=setup in Fedora 21 + +Review URL: https://codereview.appspot.com/104620043 +--- + setup/enginetreeview.py | 15 +++++++++++++-- + 1 file changed, 13 insertions(+), 2 deletions(-) + +diff --git a/setup/enginetreeview.py b/setup/enginetreeview.py +index 3ab81b7..afb23fc 100644 +--- a/setup/enginetreeview.py ++++ b/setup/enginetreeview.py +@@ -128,12 +128,25 @@ class EngineTreeView(Gtk.TreeView): + def __icon_cell_data_cb(self, celllayout, renderer, model, it, data): + engine = self.__model.get_value(it, 0) + ++ # When append_engine() is called, self.__model.append(None) ++ # is called internally and engine == None could happen in ++ # a slow system. ++ if engine == None: ++ return ++ + icon_size = Gtk.icon_size_lookup(Gtk.IconSize.LARGE_TOOLBAR)[0] + pixbuf = load_icon(engine.get_icon(), Gtk.IconSize.LARGE_TOOLBAR) + renderer.set_property("pixbuf", pixbuf) + + def __name_cell_data_cb(self, celllayout, renderer, model, it, data): + engine = self.__model.get_value(it, 0) ++ ++ # When append_engine() is called, self.__model.append(None) ++ # is called internally and engine == None could happen in ++ # a slow system. ++ if engine == None: ++ return ++ + renderer.set_property("sensitive", True) + language = IBus.get_language_name(engine.get_language()) + renderer.set_property("text", +@@ -215,7 +228,6 @@ class EngineTreeView(Gtk.TreeView): + it = self.__model.prepend(None) + self.__model.set(it, 0, engine) + self.__engines = [engine] + self.__engines +- self.scroll_to_cell(self.__model[0].path, None) + + def append_engine(self, engine): + if engine == None or engine in self.__engines: +@@ -223,7 +235,6 @@ class EngineTreeView(Gtk.TreeView): + it = self.__model.append(None) + self.__model.set(it, 0, engine) + self.__engines.append(engine) +- self.scroll_to_cell(self.__model[-1].path, None) + + def remove_engine(self): + it = self.get_selected_iter() +-- +1.8.5.3 + +From a17dc8e8bd288adedb77ae417d6825419337daae Mon Sep 17 00:00:00 2001 +From: fujiwarat +Date: Fri, 11 Jul 2014 11:45:05 +0900 +Subject: [PATCH] Fix deprecated warnings with python3-gobject 3.13.3. + +python3-gobject adds several warnings in gi/overrides/Gtk.py + +/usr/share/ibus/setup/main.py:74: PyGIDeprecationWarning: +Using positional arguments with the GObject constructor has been +deprecated. Please specify keyword(s) for "schema" or use a class +specific constructor. +See: https://wiki.gnome.org/PyGObject/InitializerDeprecations + +/usr/share/ibus/setup/main.py:364: PyGTKDeprecationWarning: +The keyword(s) "type" have been deprecated in favor of "message_type" +respectively. +See: https://wiki.gnome.org/PyGObject/InitializerDeprecations + +TEST=setup + +Review URL: https://codereview.appspot.com/110990044 +--- + setup/engineabout.py | 12 +++++++----- + setup/keyboardshortcut.py | 32 ++++++++++++++++++-------------- + setup/main.py | 30 ++++++++++++++++++------------ + setup/setup.ui | 2 ++ + 4 files changed, 45 insertions(+), 31 deletions(-) + +diff --git a/setup/engineabout.py b/setup/engineabout.py +index 50ab001..09e9b5c 100644 +--- a/setup/engineabout.py ++++ b/setup/engineabout.py +@@ -29,12 +29,14 @@ from gi.repository import Pango + from i18n import _, N_ + + class EngineAbout(Gtk.Dialog): +- def __init__(self, enginedesc): +- self.__engine_desc = enginedesc +- super(EngineAbout, self).__init__(_("About"), None, +- Gtk.DialogFlags.MODAL, +- (_("_Close"), Gtk.ResponseType.CLOSE)) ++ def __init__(self, engine, transient_for = None): ++ self.__engine_desc = engine ++ super(EngineAbout, self).__init__( ++ title = _("About"), ++ transient_for = transient_for) + ++ buttons = (_("_Close"), Gtk.ResponseType.CLOSE) ++ self.add_buttons(*buttons) + self.__init_ui() + + def __init_ui(self): +diff --git a/setup/keyboardshortcut.py b/setup/keyboardshortcut.py +index d82fea8..91595f7 100644 +--- a/setup/keyboardshortcut.py ++++ b/setup/keyboardshortcut.py +@@ -49,7 +49,8 @@ class KeyboardShortcutSelection(Gtk.Box): + # self.pack_start(label, False, True, 4) + + # shortcuts view +- self.__shortcut_view = Gtk.TreeView(Gtk.ListStore(GObject.TYPE_STRING)) ++ self.__shortcut_view = Gtk.TreeView( ++ model = Gtk.ListStore(GObject.TYPE_STRING)) + self.__shortcut_view.set_size_request(-1, 100) + renderer = Gtk.CellRendererText() + column = Gtk.TreeViewColumn(_("Keyboard shortcuts"), renderer, text = 0) +@@ -63,7 +64,7 @@ class KeyboardShortcutSelection(Gtk.Box): + + # key code + hbox = Gtk.Box(orientation=Gtk.Orientation.HORIZONTAL) +- label = Gtk.Label(_("Key code:")) ++ label = Gtk.Label(label = _("Key code:")) + label.set_justify(Gtk.Justification.LEFT) + label.set_alignment(0.0, 0.5) + hbox.pack_start(label, False, True, 4) +@@ -71,19 +72,19 @@ class KeyboardShortcutSelection(Gtk.Box): + self.__keycode_entry = Gtk.Entry() + self.__keycode_entry.connect("notify::text", self.__keycode_entry_notify_cb) + hbox.pack_start(self.__keycode_entry, True, True, 4) +- self.__keycode_button = Gtk.Button("...") ++ self.__keycode_button = Gtk.Button(label = "...") + self.__keycode_button.connect("clicked", self.__keycode_button_clicked_cb) + hbox.pack_start(self.__keycode_button, False, True, 4) + self.pack_start(hbox, False, True, 4) + + # modifiers + hbox = Gtk.Box(orientation=Gtk.Orientation.HORIZONTAL) +- label = Gtk.Label(_("Modifiers:")) ++ label = Gtk.Label(label = _("Modifiers:")) + label.set_justify(Gtk.Justification.LEFT) + label.set_alignment(0.0, 0.5) + hbox.pack_start(label, False, True, 4) + +- table = Gtk.Table(4, 2) ++ table = Gtk.Table(n_rows = 4, n_columns = 2) + self.__modifier_buttons = [] + self.__modifier_buttons.append(("Control", + Gtk.CheckButton.new_with_mnemonic("_Control"), +@@ -250,8 +251,10 @@ class KeyboardShortcutSelection(Gtk.Box): + + def __keycode_button_clicked_cb(self, button): + out = [] +- dlg = Gtk.MessageDialog(parent = self.get_toplevel(), buttons = Gtk.ButtonsType.CLOSE) +- message = _("Please press a key (or a key combination).\nThe dialog will be closed when the key is released.") ++ dlg = Gtk.MessageDialog(transient_for = self.get_toplevel(), ++ buttons = Gtk.ButtonsType.CLOSE) ++ message = _("Please press a key (or a key combination).\n" \ ++ "The dialog will be closed when the key is released.") + dlg.set_markup(message) + dlg.set_title(_("Please press a key (or a key combination)")) + sw = Gtk.ScrolledWindow() +@@ -265,7 +268,7 @@ class KeyboardShortcutSelection(Gtk.Box): + model = Gtk.ListStore(GObject.TYPE_INT, + GObject.TYPE_UINT, + GObject.TYPE_UINT) +- accel_view = Gtk.TreeView(model) ++ accel_view = Gtk.TreeView(model = model) + sw.add(accel_view) + column = Gtk.TreeViewColumn() + renderer = Gtk.CellRendererAccel(accel_mode=Gtk.CellRendererAccelMode.OTHER, +@@ -315,8 +318,9 @@ class KeyboardShortcutSelection(Gtk.Box): + self.__apply_button.set_sensitive(False) + + class KeyboardShortcutSelectionDialog(Gtk.Dialog): +- def __init__(self, title = None, parent = None, flags = 0, buttons = None): +- super(KeyboardShortcutSelectionDialog, self).__init__(title, parent, flags, buttons) ++ def __init__(self, title = None, transient_for = None, flags = 0): ++ super(KeyboardShortcutSelectionDialog, self).__init__( ++ title = title, transient_for = transient_for, flags = flags) + self.__selection_view = KeyboardShortcutSelection() + self.vbox.pack_start(self.__selection_view, False, True, 0) + self.vbox.show_all() +@@ -333,10 +337,10 @@ class KeyboardShortcutSelectionDialog(Gtk.Dialog): + + + if __name__ == "__main__": +- dlg = KeyboardShortcutSelectionDialog( +- title = "Select test", +- buttons = (_("_Cancel"), Gtk.ResponseType.CANCEL, +- _("_OK"), Gtk.ResponseType.OK)) ++ dlg = KeyboardShortcutSelectionDialog(title = "Select test") ++ buttons = (_("_Cancel"), Gtk.ResponseType.CANCEL, ++ _("_OK"), Gtk.ResponseType.OK) ++ dlg.add_buttons(buttons) + dlg.add_shortcut("Control+Shift+space") + dlg.set_shortcuts(None) + print((dlg.run())) +diff --git a/setup/main.py b/setup/main.py +index 1d89f3d..1bc9cfb 100644 +--- a/setup/main.py ++++ b/setup/main.py +@@ -70,10 +70,12 @@ class Setup(object): + def __init__(self): + super(Setup, self).__init__() + +- self.__settings_general = Gio.Settings("org.freedesktop.ibus.general"); ++ self.__settings_general = Gio.Settings( ++ schema = "org.freedesktop.ibus.general"); + self.__settings_hotkey = Gio.Settings( +- "org.freedesktop.ibus.general.hotkey"); +- self.__settings_panel = Gio.Settings("org.freedesktop.ibus.panel"); ++ schema = "org.freedesktop.ibus.general.hotkey"); ++ self.__settings_panel = Gio.Settings( ++ schema = "org.freedesktop.ibus.panel"); + + # IBus.Bus() calls ibus_bus_new(). + # Gtk.Builder().add_from_file() also calls ibus_bus_new_async() +@@ -300,7 +302,7 @@ class Setup(object): + def __button_engine_about_cb(self, button): + engine = self.__treeview.get_active_engine() + if engine: +- about = EngineAbout(engine) ++ about = EngineAbout(engine = engine, transient_for = self.__window) + about.run() + about.destroy() + +@@ -328,7 +330,7 @@ class Setup(object): + return + + message = _("The IBus daemon is not running. Do you wish to start it?") +- dlg = Gtk.MessageDialog(type = Gtk.MessageType.QUESTION, ++ dlg = Gtk.MessageDialog(message_type = Gtk.MessageType.QUESTION, + buttons = Gtk.ButtonsType.YES_NO, + text = message) + id = dlg.run() +@@ -354,7 +356,7 @@ class Setup(object): + " export XMODIFIERS=@im=ibus\n" + " export QT_IM_MODULE=ibus" + ) +- dlg = Gtk.MessageDialog(type = Gtk.MessageType.INFO, ++ dlg = Gtk.MessageDialog(message_type = Gtk.MessageType.INFO, + buttons = Gtk.ButtonsType.OK, + text = message) + id = dlg.run() +@@ -363,7 +365,7 @@ class Setup(object): + else: + # Translators: %d == 5 currently + message = _("IBus daemon could not be started in %d seconds") +- dlg = Gtk.MessageDialog(type = Gtk.MessageType.INFO, ++ dlg = Gtk.MessageDialog(message_type = Gtk.MessageType.INFO, + buttons = Gtk.ButtonsType.OK, + text = message % timeout) + id = dlg.run() +@@ -378,7 +380,9 @@ class Setup(object): + # Translators: Title of the window + title2 = _("switching input methods") + title = title1 % title2 +- dialog = keyboardshortcut.KeyboardShortcutSelectionDialog(buttons = buttons, title = title) ++ dialog = keyboardshortcut.KeyboardShortcutSelectionDialog( ++ title = title, transient_for = self.__window) ++ dialog.add_buttons(*buttons) + text = entry.get_text() + if text: + shortcuts = text.split("; ") +@@ -409,9 +413,10 @@ class Setup(object): + try: + self.__bus.register_start_engine(data[DATA_LANG], data[DATA_NAME]) + except Exception as e: +- dlg = Gtk.MessageDialog(type = Gtk.MessageType.ERROR, ++ dlg = Gtk.MessageDialog(message_type = Gtk.MessageType.ERROR, ++ transient_for = self.__window, + buttons = Gtk.ButtonsType.CLOSE, +- message_format = str(e)) ++ text = str(e)) + dlg.run() + dlg.destroy() + self.__flush_gtk_events() +@@ -420,9 +425,10 @@ class Setup(object): + try: + self.__bus.register_stop_engine(data[DATA_LANG], data[DATA_NAME]) + except Exception as e: +- dlg = Gtk.MessageDialog(type = Gtk.MessageType.ERROR, ++ dlg = Gtk.MessageDialog(message_type = Gtk.MessageType.ERROR, ++ transient_for = self.__window, + buttons = Gtk.ButtonsType.CLOSE, +- message_format = str(e)) ++ text = str(e)) + dlg.run() + dlg.destroy() + self.__flush_gtk_events() +diff --git a/setup/setup.ui b/setup/setup.ui +index bb78433..d7801ea 100644 +--- a/setup/setup.ui ++++ b/setup/setup.ui +@@ -62,6 +62,8 @@ + False + center-always + ibus-setup ++ ++ True + + + vertical +-- +1.8.5.3 + +From b1b4e2946682e3d53aa396d8469c7fa16a2dbca8 Mon Sep 17 00:00:00 2001 +From: fujiwarat +Date: Fri, 11 Jul 2014 11:50:04 +0900 +Subject: [PATCH] Export the 'IBUS_SETUP_XID' environment variable for each + engine setup. + +Follow GNOME_CONTROL_CENTER_XID. +https://wiki.gnome.org/AllanDay/IMEGuidelines + +TEST=setup + +Review URL: https://codereview.appspot.com/112920044 +--- + setup/main.py | 6 ++++++ + 1 file changed, 6 insertions(+) + +diff --git a/setup/main.py b/setup/main.py +index 1bc9cfb..e4ddd45 100644 +--- a/setup/main.py ++++ b/setup/main.py +@@ -28,6 +28,7 @@ import signal + import sys + import time + ++from gi.repository import GdkX11 + from gi.repository import Gio + from gi.repository import GLib + from gi.repository import Gtk +@@ -233,6 +234,7 @@ class Setup(object): + # add icon search path + self.__window = self.__builder.get_object("window_preferences") + self.__window.connect("delete-event", Gtk.main_quit) ++ self.__window.connect("notify::window", self.__gdk_window_set_cb) + + self.__button_close = self.__builder.get_object("button_close") + self.__button_close.connect("clicked", Gtk.main_quit) +@@ -248,6 +250,10 @@ class Setup(object): + self.__init_panel() + self.__init_general() + ++ def __gdk_window_set_cb(self, object, pspec): ++ str = '%u' % GdkX11.X11Window.get_xid(object.get_window()) ++ GLib.setenv('IBUS_SETUP_XID', str, True) ++ + def __combobox_notify_active_engine_cb(self, combobox, property): + engine = self.__combobox.get_active_engine() + button = self.__builder.get_object("button_engine_add") +-- +1.8.5.3 + +From 9b2004efcd26e11bbd56cf51656fe326fc11be8e Mon Sep 17 00:00:00 2001 +From: fujiwarat +Date: Mon, 14 Jul 2014 11:45:25 +0900 +Subject: [PATCH] Call GLib.set_prgname('ibus-setup') for ibus-setup + main.py + +TEST=xlsclients + +Review URL: https://codereview.appspot.com/108550043 +--- + setup/main.py | 6 +++++- + 1 file changed, 5 insertions(+), 1 deletion(-) + +diff --git a/setup/main.py b/setup/main.py +index e4ddd45..9bd0af1 100644 +--- a/setup/main.py ++++ b/setup/main.py +@@ -28,9 +28,13 @@ import signal + import sys + import time + ++from gi.repository import GLib ++# set_prgname before importing other modules to show the name in warning ++# messages when import modules are failed. ++GLib.set_prgname('ibus-setup') ++ + from gi.repository import GdkX11 + from gi.repository import Gio +-from gi.repository import GLib + from gi.repository import Gtk + from gi.repository import IBus + from os import path +-- +1.8.5.3 + diff --git a/ibus-xx-setup-frequent-lang.patch b/ibus-xx-setup-frequent-lang.patch index f96430a..35600c9 100644 --- a/ibus-xx-setup-frequent-lang.patch +++ b/ibus-xx-setup-frequent-lang.patch @@ -1,6 +1,6 @@ -From 6c5b4f197afde5185c23ed725eecb36da43507e6 Mon Sep 17 00:00:00 2001 +From 79587f187998b6e89c478ac23c7dbcba56a91637 Mon Sep 17 00:00:00 2001 From: fujiwarat -Date: Tue, 14 Jan 2014 15:30:54 +0900 +Date: Mon, 14 Jul 2014 16:21:19 +0900 Subject: [PATCH] Enable ibus-setup to show the frequently used languages only in IME list. @@ -10,7 +10,7 @@ Subject: [PATCH] Enable ibus-setup to show the frequently used languages 2 files changed, 292 insertions(+), 24 deletions(-) diff --git a/data/ibus.schemas.in b/data/ibus.schemas.in -index 28d2219..0600133 100644 +index 9ee0b1a..c638e7d 100644 --- a/data/ibus.schemas.in +++ b/data/ibus.schemas.in @@ -384,6 +384,174 @@ se,si,sk,sy,sy(ku),th,tj,tr,ua,uz,vn @@ -189,7 +189,7 @@ index 28d2219..0600133 100644 /desktop/ibus/panel/custom_font ibus diff --git a/setup/enginecombobox.py b/setup/enginecombobox.py -index b45ad56..830f0e8 100644 +index 2a2a677..a203b25 100644 --- a/setup/enginecombobox.py +++ b/setup/enginecombobox.py @@ -24,6 +24,7 @@ import locale @@ -207,7 +207,7 @@ index b45ad56..830f0e8 100644 + self.__all_model = None + self.__show_sub_lang = False + self.__settings_xkblayoutconfig = Gio.Settings( -+ "org.freedesktop.ibus.general.xkblayoutconfig"); ++ schema = "org.freedesktop.ibus.general.xkblayoutconfig"); renderer = Gtk.CellRendererPixbuf() renderer.set_property("xalign", 0) @@ -217,17 +217,6 @@ index b45ad56..830f0e8 100644 - def set_engines(self, engines): - self.__model = Gtk.TreeStore(object) -- -- iter1 = self.__model.append(None) -- self.__model.set(iter1, 0, 0) -- langs = {} -- for e in engines: -- l = IBus.get_language_name(e.get_language()) -- if l == None: -- l = "" -- if l not in langs: -- langs[l] = [] -- langs[l].append(e) + def __gconf_get_lang_list_from_locale(self): + common_list = ['en', 'Other'] + loc = None @@ -256,7 +245,17 @@ index b45ad56..830f0e8 100644 + if lang_list == None: + return [loc] + common_list + return lang_list + common_list -+ + +- iter1 = self.__model.append(None) +- self.__model.set(iter1, 0, 0) +- langs = {} +- for e in engines: +- l = IBus.get_language_name(e.get_language()) +- if l == None: +- l = "" +- if l not in langs: +- langs[l] = [] +- langs[l].append(e) + def __has_engine_in_lang_list(self, engine, lang_list): + retval = False + for lang in lang_list: @@ -410,5 +409,5 @@ index b45ad56..830f0e8 100644 raise AttributeError('unknown property %s' % property.name) -- -1.8.0 +1.8.5.3 diff --git a/ibus.spec b/ibus.spec index c7f74c9..ffc99f6 100644 --- a/ibus.spec +++ b/ibus.spec @@ -36,7 +36,7 @@ Name: ibus Version: 1.5.7 -Release: 5%{?dist} +Release: 6%{?dist} Summary: Intelligent Input Bus for Linux OS License: LGPLv2+ Group: System Environment/Libraries @@ -466,6 +466,13 @@ fi %{_datadir}/gtk-doc/html/* %changelog +* Mon Jul 14 2014 Takao Fujiwara - 1.5.7-6 +- Updated ibus-HEAD.patch from upstream. + Fixed ibus-setup SEGV when an engine is selected. + Fixed ibus-setup deprecated warnings with the latest python3-gobject. + Integrated the 'IBUS_SETUP_XID' environment variable for each engine setup. + Set prgname 'ibus-setup' for ibus-setup. + * Mon Jul 07 2014 Takao Fujiwara - 1.5.7-5 - Updated ibus-HEAD.patch from upstream. Added pl(qwertz).