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: Resolve #2188800 Error handling with display == null
Date: Sun, 31 May 2026 02:08:21 GMT [thread overview]
Message-ID: <178019330152.1.11956496626351928539.rpms-ibus-31e3c61bbd9c@fedoraproject.org> (raw)
A new commit has been pushed.
Repo : rpms/ibus
Branch : autotool
Commit : 31e3c61bbd9cb906e9029b3f21a1b026b13d0b72
Author : Takao Fujiwara <tfujiwar@redhat.com>
Date : 2023-11-25T14:11:26+09:00
Stats : +114/-14 in 2 file(s)
URL : https://src.fedoraproject.org/rpms/ibus/c/31e3c61bbd9cb906e9029b3f21a1b026b13d0b72?branch=autotool
Log:
Resolve #2188800 Error handling with display == null
- Enhance #2237486 Implement preedit color in Plasma Wayland
---
diff --git a/ibus-HEAD.patch b/ibus-HEAD.patch
index 4481854..15759b7 100644
--- a/ibus-HEAD.patch
+++ b/ibus-HEAD.patch
@@ -1,6 +1,6 @@
-From db829f4aee399e5472bd55dc630a94425e72bacd Mon Sep 17 00:00:00 2001
+From 59944ddbfe915f195e757c509246b597048116cf Mon Sep 17 00:00:00 2001
From: fujiwarat <takao.fujiwara1@gmail.com>
-Date: Sat, 30 Sep 2023 09:51:43 +0900
+Date: Sat, 25 Nov 2023 13:42:31 +0900
Subject: [PATCH] client/wayland: Implement preedit color in Plasma Wayland
Wayland input-method protocol version 1 supports the preedit style
@@ -18,10 +18,10 @@ Rf. https://github.com/ibus/ibus/wiki/Wayland-Colors
BUG=rhbz#2237486
---
client/wayland/Makefile.am | 1 +
- client/wayland/ibuswaylandim.c | 176 +++-
+ client/wayland/ibuswaylandim.c | 204 ++++-
.../text-input-unstable-v1-client-protocol.h | 847 ++++++++++++++++++
src/ibusattribute.h | 52 +-
- 4 files changed, 1073 insertions(+), 3 deletions(-)
+ 4 files changed, 1101 insertions(+), 3 deletions(-)
create mode 100644 client/wayland/text-input-unstable-v1-client-protocol.h
diff --git a/client/wayland/Makefile.am b/client/wayland/Makefile.am
@@ -37,7 +37,7 @@ index 7e8d18af..94e357b4 100644
ibus_wayland_SOURCES = \
diff --git a/client/wayland/ibuswaylandim.c b/client/wayland/ibuswaylandim.c
-index ffc20de1..37966dd6 100644
+index 8f938288..9e8f651e 100644
--- a/client/wayland/ibuswaylandim.c
+++ b/client/wayland/ibuswaylandim.c
@@ -32,6 +32,7 @@
@@ -56,7 +56,7 @@ index ffc20de1..37966dd6 100644
IBusModifierType modifiers;
struct xkb_context *xkb_context;
-@@ -266,12 +268,176 @@ _context_forward_key_event_cb (IBusInputContext *context,
+@@ -266,12 +268,204 @@ _context_forward_key_event_cb (IBusInputContext *context,
}
@@ -77,6 +77,8 @@ index ffc20de1..37966dd6 100644
+ guint i;
+ const char *str;
+ uint32_t whole_wstyle = ZWP_TEXT_INPUT_V1_PREEDIT_STYLE_DEFAULT;
++ uint32_t prev_start = 0;
++ uint32_t prev_end = 0;
+
+ g_return_if_fail (IBUS_IS_WAYLAND_IM (wlim));
+ priv = ibus_wayland_im_get_instance_private (wlim);
@@ -175,14 +177,40 @@ index ffc20de1..37966dd6 100644
+ whole_wstyle = wstyle;
+ continue;
+ }
-+ if (start > end) {
-+ g_warning ("Wrong start %d and end %d for %s", start, end, str);
++ if (end < prev_start) {
++ if (priv->log) {
++ fprintf (priv->log,
++ "Reverse order is not supported in end %d for %s "
++ "against start %d.\n", end, str, prev_start);
++ fflush (priv->log);
++ }
++ continue;
++ }
++ if (prev_end > end) {
++ if (priv->log) {
++ fprintf (priv->log,
++ "Nested styles are not supported in end %d for %s "
++ "against end %d.\n", end, str, prev_end);
++ fflush (priv->log);
++ }
++ continue;
++ }
++ if (prev_end > start && prev_start >= start)
++ start = prev_end;
++ if (start >= end) {
++ if (priv->log) {
++ fprintf (priv->log, "Wrong start %d and end %d for %s.\n",
++ start, end, str);
++ fflush (priv->log);
++ }
+ return;
+ }
+ zwp_input_method_context_v1_preedit_styling (priv->context,
+ start,
+ end - start,
+ wstyle);
++ prev_start = start;
++ prev_end = end;
+ }
+ if (whole_wstyle != ZWP_TEXT_INPUT_V1_PREEDIT_STYLE_DEFAULT) {
+ uint32_t whole_start = 0;
@@ -233,7 +261,7 @@ index ffc20de1..37966dd6 100644
g_return_if_fail (IBUS_IS_WAYLAND_IM (wlim));
priv = ibus_wayland_im_get_instance_private (wlim);
/* CURSOR is byte offset. */
-@@ -282,10 +448,13 @@ _context_show_preedit_text_cb (IBusInputContext *context,
+@@ -282,10 +476,13 @@ _context_show_preedit_text_cb (IBusInputContext *context,
zwp_input_method_context_v1_preedit_cursor (priv->context,
cursor);
@@ -248,7 +276,7 @@ index ffc20de1..37966dd6 100644
}
-@@ -308,6 +477,7 @@ _context_update_preedit_text_cb (IBusInputContext *context,
+@@ -308,6 +505,7 @@ _context_update_preedit_text_cb (IBusInputContext *context,
IBusText *text,
gint cursor_pos,
gboolean visible,
@@ -256,7 +284,7 @@ index ffc20de1..37966dd6 100644
IBusWaylandIM *wlim)
{
IBusWaylandIMPrivate *priv;
-@@ -317,6 +487,7 @@ _context_update_preedit_text_cb (IBusInputContext *context,
+@@ -317,6 +515,7 @@ _context_update_preedit_text_cb (IBusInputContext *context,
g_object_unref (priv->preedit_text);
priv->preedit_text = g_object_ref_sink (text);
priv->preedit_cursor_pos = cursor_pos;
@@ -264,7 +292,7 @@ index ffc20de1..37966dd6 100644
if (visible)
_context_show_preedit_text_cb (context, wlim);
-@@ -977,7 +1148,7 @@ _create_input_context_done (GObject *object,
+@@ -971,7 +1170,7 @@ _create_input_context_done (GObject *object,
G_CALLBACK (_context_forward_key_event_cb),
wlim);
@@ -273,7 +301,7 @@ index ffc20de1..37966dd6 100644
G_CALLBACK (_context_update_preedit_text_cb),
wlim);
g_signal_connect (priv->ibuscontext, "show-preedit-text",
-@@ -994,6 +1165,7 @@ _create_input_context_done (GObject *object,
+@@ -988,6 +1187,7 @@ _create_input_context_done (GObject *object,
capabilities |= IBUS_CAP_SYNC_PROCESS_KEY_V2;
ibus_input_context_set_capabilities (priv->ibuscontext,
capabilities);
@@ -1240,3 +1268,71 @@ index b5a44da0..cfc08c20 100644
--
2.41.0
+From 0a7a4d1dfa580dfcc65d76a697f40094085e55a2 Mon Sep 17 00:00:00 2001
+From: fujiwarat <takao.fujiwara1@gmail.com>
+Date: Sat, 25 Nov 2023 13:42:07 +0900
+Subject: [PATCH] ui/gtk3: Error handling with display == null
+
+BUG=rhbz#2188800
+---
+ ui/gtk3/bindingcommon.vala | 6 +++++-
+ ui/gtk3/panel.vala | 14 ++++++++++----
+ 2 files changed, 15 insertions(+), 5 deletions(-)
+
+diff --git a/ui/gtk3/bindingcommon.vala b/ui/gtk3/bindingcommon.vala
+index da324f70..588be17a 100644
+--- a/ui/gtk3/bindingcommon.vala
++++ b/ui/gtk3/bindingcommon.vala
+@@ -263,10 +263,14 @@ class BindingCommon {
+ return m_default_is_xdisplay;
+ }
+
+- public static Gdk.X11.Display get_xdisplay() {
++ public static Gdk.X11.Display? get_xdisplay() {
+ if (m_xdisplay != null)
+ return m_xdisplay;
+ var display = Gdk.Display.get_default();
++ if (display == null) {
++ error("You should open a display for IBus panel.");
++ return null;
++ }
+ Type instance_type = display.get_type();
+ Type x11_type = typeof(Gdk.X11.Display);
+ if (instance_type.is_a(x11_type)) {
+diff --git a/ui/gtk3/panel.vala b/ui/gtk3/panel.vala
+index f1bbd720..783ec842 100644
+--- a/ui/gtk3/panel.vala
++++ b/ui/gtk3/panel.vala
+@@ -1422,9 +1422,12 @@ class Panel : IBus.PanelService {
+
+ Gdk.Display display_backup = null;
+ if (use_x11 && !BindingCommon.default_is_xdisplay()) {
++ var display = BindingCommon.get_xdisplay();
+ display_backup = Gdk.Display.get_default();
+- Gdk.DisplayManager.get().set_default_display(
+- (Gdk.Display)BindingCommon.get_xdisplay());
++ if (display != null) {
++ Gdk.DisplayManager.get().set_default_display(
++ (Gdk.Display)display);
++ }
+ }
+
+ // Show system menu
+@@ -1476,9 +1479,12 @@ class Panel : IBus.PanelService {
+ private Gtk.Menu create_activate_menu(bool use_x11 = false) {
+ Gdk.Display display_backup = null;
+ if (use_x11 && !BindingCommon.default_is_xdisplay()) {
++ var display = BindingCommon.get_xdisplay();
+ display_backup = Gdk.Display.get_default();
+- Gdk.DisplayManager.get().set_default_display(
+- (Gdk.Display)BindingCommon.get_xdisplay());
++ if (display != null) {
++ Gdk.DisplayManager.get().set_default_display(
++ (Gdk.Display)display);
++ }
+ }
+ m_ime_menu = new Gtk.Menu();
+
+--
+2.41.0
+
diff --git a/ibus.spec b/ibus.spec
index cd7dbb5..b910b6c 100644
--- a/ibus.spec
+++ b/ibus.spec
@@ -58,7 +58,7 @@
Name: ibus
Version: 1.5.29~rc2
-Release: 2%{?dist}
+Release: 3%{?dist}
Summary: Intelligent Input Bus for Linux OS
License: LGPL-2.1-or-later
URL: https://github.com/ibus/%name/wiki
@@ -580,6 +580,10 @@ dconf update || :
%{_datadir}/installed-tests/ibus
%changelog
+* Sat Nov 25 2023 Takao Fujiwara <tfujiwar@redhat.com> - 1.5.29~rc2-3
+- Resolve #2188800 Error handling with display == null
+- Enhance #2237486 Implement preedit color in Plasma Wayland
+
* Wed Nov 15 2023 Takao Fujiwara <tfujiwar@redhat.com> - 1.5.29~rc2-2
- Call strdup() after g_return_if_fail() in im-ibus.so
reply other threads:[~2026-05-31 2:08 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=178019330152.1.11956496626351928539.rpms-ibus-31e3c61bbd9c@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