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: Separate ibus-ui-gtk3 as ibus-panel sub package depended on libdbusmenu
Date: Sun, 31 May 2026 02:08:16 GMT [thread overview]
Message-ID: <178019329633.1.8775597688523002184.rpms-ibus-b38ab9abe342@fedoraproject.org> (raw)
A new commit has been pushed.
Repo : rpms/ibus
Branch : autotool
Commit : b38ab9abe342d0461383c1cdd6adf4fa03239b18
Author : Takao Fujiwara <tfujiwar@redhat.com>
Date : 2023-08-18T20:12:30+09:00
Stats : +264/-4 in 2 file(s)
URL : https://src.fedoraproject.org/rpms/ibus/c/b38ab9abe342d0461383c1cdd6adf4fa03239b18?branch=autotool
Log:
Separate ibus-ui-gtk3 as ibus-panel sub package depended on libdbusmenu
- Update autogen.sh for Fedora 39
- Fix cursor position with GTK4 in Xorg
---
diff --git a/ibus-HEAD.patch b/ibus-HEAD.patch
index e69de29..06a7e3b 100644
--- a/ibus-HEAD.patch
+++ b/ibus-HEAD.patch
@@ -0,0 +1,240 @@
+From f05c12dafef83cdd6b0f988d86e4411794c7e44f Mon Sep 17 00:00:00 2001
+From: fujiwarat <takao.fujiwara1@gmail.com>
+Date: Wed, 9 Aug 2023 11:35:21 +0900
+Subject: [PATCH] github/workflows: Fix Fedora 39 DNF
+
+- Check latest gnome-shell-extension-no-overview
+- Add various configure options
+---
+ autogen.sh | 7 ++++---
+ 1 files changed, 4 insertions(+), 3 deletions(-)
+
+diff --git a/autogen.sh b/autogen.sh
+index 4ea8d757..05682f47 100755
+--- a/autogen.sh
++++ b/autogen.sh
+@@ -47,9 +47,10 @@ cd "$srcdir"
+ rpm -q $FEDORA_PKG1 || exit 1
+ rpm -q $FEDORA_PKG2 || exit 1
+ rpm -q $FEDORA_PKG3 || exit 1
+- dnf update --assumeno $FEDORA_PKG1 || exit 1
+- dnf update --assumeno $FEDORA_PKG2 || exit 1
+- dnf update --assumeno $FEDORA_PKG3 || exit 1
++ (grep -qE '37|38' /etc/fedora-release) && DNF=dnf || DNF=dnf5
++ $DNF update --assumeno $FEDORA_PKG1 || exit 1
++ $DNF update --assumeno $FEDORA_PKG2 || exit 1
++ $DNF update --assumeno $FEDORA_PKG3 || exit 1
+ }
+ }
+
+--
+2.41.0
+
+From 86d9bb9a1cbd4ffbd6bc2a4de85cb76a43bc2ced Mon Sep 17 00:00:00 2001
+From: Peng Wu <pwu@redhat.com>
+Date: Mon, 24 Jul 2023 14:04:12 +0800
+Subject: [PATCH] client/gtk2: Update set_cursor_location function to use Gdk
+ functions
+
+For ibus-gtk4, use the Gdk functions to get the inner cursor location.
+The inner cursor location is translated by XTranslateCoordinates
+for X Window.
+For ibus-gtk3, use gdk_window_get_root_coords function to translate the
+inner cursor location for X Window.
+In Wayland, the set_cursor_location_relative function is called.
+In X Window, the set_cursor_location function is called.
+
+Fixes: https://github.com/ibus/ibus/commit/d0a47c3
+Fixes: https://github.com/ibus/ibus/commit/a823161
+
+BUG=https://github.com/ibus/ibus/pull/2549
+BUG=https://gitlab.gnome.org/GNOME/gtk/-/issues/3024#note_987835
+---
+ client/gtk2/ibusimcontext.c | 141 +++++++++++++++---------------------
+ 1 file changed, 58 insertions(+), 83 deletions(-)
+
+diff --git a/client/gtk2/ibusimcontext.c b/client/gtk2/ibusimcontext.c
+index 7ccc129d..b5a44da0 100644
+--- a/client/gtk2/ibusimcontext.c
++++ b/client/gtk2/ibusimcontext.c
+@@ -27,6 +27,7 @@
+
+ #include <string.h>
+ #include <gtk/gtk.h>
++#include <gdk/gdk.h>
+ #include <gdk/gdkkeysyms.h>
+ #include <ibus.h>
+ #include "ibusimcontext.h"
+@@ -1612,8 +1613,13 @@ static gboolean
+ _set_cursor_location_internal (IBusIMContext *ibusimcontext)
+ {
+ GdkRectangle area;
++ GdkDisplay *display = NULL;
+ #if GTK_CHECK_VERSION (3, 98, 4)
+ GtkWidget *root;
++ GtkNative *native;
++ graphene_point_t p;
++ int tx = 0, ty = 0;
++ double nx = 0., ny = 0.;
+ #endif
+
+ if(ibusimcontext->client_window == NULL ||
+@@ -1623,103 +1629,72 @@ _set_cursor_location_internal (IBusIMContext *ibusimcontext)
+
+ area = ibusimcontext->cursor_area;
+
+-#ifdef GDK_WINDOWING_WAYLAND
+ #if GTK_CHECK_VERSION (3, 98, 4)
+ root = GTK_WIDGET (gtk_widget_get_root (ibusimcontext->client_window));
+- /* FIXME: GTK_STYLE_CLASS_TITLEBAR is available in GTK3 but not GTK4.
+- * gtk_css_boxes_get_content_rect() is available in GTK4 but it's an
+- * internal API and calculate the window edge 32 in GTK3.
+- */
+- area.y += 32;
+- area.width = 50; /* FIXME: Why 50 meets the cursor position? */
+- area.height = gtk_widget_get_height (root);
+- area.height += 32;
+- if (GDK_IS_WAYLAND_DISPLAY (gdk_display_get_default ())) {
+- ibus_input_context_set_cursor_location_relative (
+- ibusimcontext->ibuscontext,
+- area.x,
+- area.y,
+- area.width,
+- area.height);
+- return FALSE;
+- }
+-#else
+- if (GDK_IS_WAYLAND_DISPLAY (gdk_display_get_default ())) {
+- gdouble px, py;
+- GdkWindow *parent;
+- GdkWindow *window = ibusimcontext->client_window;
+-
+- while ((parent = gdk_window_get_effective_parent (window)) != NULL) {
+- gdk_window_coords_to_parent (window, area.x, area.y, &px, &py);
+- area.x = px;
+- area.y = py;
+- window = parent;
+- }
+-
+- _set_rect_scale_factor_with_window (&area,
+- ibusimcontext->client_window);
+- ibus_input_context_set_cursor_location_relative (
+- ibusimcontext->ibuscontext,
+- area.x,
+- area.y,
+- area.width,
+- area.height);
+- return FALSE;
++ /* Translates the given point in client_window coordinates to coordinates
++ relative to root coordinate system. */
++ if (!gtk_widget_compute_point (ibusimcontext->client_window,
++ root,
++ &GRAPHENE_POINT_INIT (area.x, area.y),
++ &p)) {
++ graphene_point_init (&p, area.x, area.y);
+ }
+-#endif
+-#endif
+
+-#if GTK_CHECK_VERSION (3, 98, 4)
+-#elif GTK_CHECK_VERSION (2, 91, 0)
+- if (area.x == -1 && area.y == -1 && area.width == 0 && area.height == 0) {
+- area.x = 0;
+- area.y += gdk_window_get_height (ibusimcontext->client_window);
+- }
+-#else
+- if (area.x == -1 && area.y == -1 && area.width == 0 && area.height == 0) {
+- gint w, h;
+- gdk_drawable_get_size (ibusimcontext->client_window, &w, &h);
+- area.y += h;
+- area.x = 0;
+- }
+-#endif
++ native = gtk_widget_get_native (ibusimcontext->client_window);
++ /* Translates from the surface coordinates into the widget coordinates. */
++ gtk_native_get_surface_transform (native, &nx, &ny);
+
+-#if GTK_CHECK_VERSION (3, 98, 4)
+-#if defined(GDK_WINDOWING_X11)
+- GdkDisplay *display = gtk_widget_get_display (ibusimcontext->client_window);
++ display = gtk_widget_get_display (ibusimcontext->client_window);
+ if (GDK_IS_X11_DISPLAY (display)) {
+- Display *xdisplay = gdk_x11_display_get_xdisplay (display);
+- Window root_window = gdk_x11_display_get_xrootwindow (display);
+- GtkNative *native = gtk_widget_get_native (
+- ibusimcontext->client_window);
+- GdkSurface *surface = gtk_native_get_surface (native);
+- /* The window is the toplevel window but not the inner text widget.
+- * Unfortunatelly GTK4 cannot get the coordinate of the text widget.
+- */
+- Window window = gdk_x11_surface_get_xid (surface);
++ GdkSurface *surface = gtk_native_get_surface
++ (gtk_widget_get_native (ibusimcontext->client_window));
+ Window child;
+- int x, y;
+- XTranslateCoordinates (xdisplay, window, root_window,
+- 0, 0, &x, &y, &child);
+- XWindowAttributes xwa;
+- XGetWindowAttributes (xdisplay, window, &xwa);
+- area.x = x - xwa.x + area.x;
+- area.y = y - xwa.y + area.y;
+- area.width = 50; /* FIXME: Why 50 meets the cursor position? */
+- area.height = xwa.height;
++ int scale_factor = gtk_widget_get_scale_factor
++ (ibusimcontext->client_window);
++
++ XTranslateCoordinates (GDK_DISPLAY_XDISPLAY (display),
++ GDK_SURFACE_XID (surface),
++ gdk_x11_display_get_xrootwindow (display),
++ 0, 0, &tx, &ty,
++ &child);
++
++ tx = tx / scale_factor;
++ ty = ty / scale_factor;
+ }
+-#endif
++
++ area.x = p.x + nx + tx;
++ area.y = p.y + ny + ty;
+ #else
+ gdk_window_get_root_coords (ibusimcontext->client_window,
+ area.x, area.y,
+ &area.x, &area.y);
+ #endif
++
+ _set_rect_scale_factor_with_window (&area, ibusimcontext->client_window);
+- ibus_input_context_set_cursor_location (ibusimcontext->ibuscontext,
+- area.x,
+- area.y,
+- area.width,
+- area.height);
++
++#ifdef GDK_WINDOWING_WAYLAND
++#if !GTK_CHECK_VERSION (3, 98, 4)
++ display = gdk_window_get_display (ibusimcontext->client_window);
++#endif
++
++ if (GDK_IS_WAYLAND_DISPLAY (display)) {
++ ibus_input_context_set_cursor_location_relative (ibusimcontext->ibuscontext,
++ area.x,
++ area.y,
++ area.width,
++ area.height);
++
++ } else {
++#endif
++ ibus_input_context_set_cursor_location (ibusimcontext->ibuscontext,
++ area.x,
++ area.y,
++ area.width,
++ area.height);
++#ifdef GDK_WINDOWING_WAYLAND
++ }
++#endif
++
+ return FALSE;
+ }
+
+--
+2.41.0
+
diff --git a/ibus.spec b/ibus.spec
index d5e6393..446fdd6 100644
--- a/ibus.spec
+++ b/ibus.spec
@@ -52,7 +52,7 @@
Name: ibus
Version: 1.5.29~beta2
-Release: 1%{?dist}
+Release: 2%{?dist}
Summary: Intelligent Input Bus for Linux OS
License: LGPL-2.1-or-later
URL: https://github.com/ibus/%name/wiki
@@ -60,6 +60,7 @@ Source0: https://github.com/ibus/%name/releases/download/%{source_version
Source1: %{name}-xinput
Source2: %{name}.conf.5
# Patch0: %%{name}-HEAD.patch
+Patch0: %{name}-HEAD.patch
# Under testing #1349148 #1385349 #1350291 #1406699 #1432252 #1601577
Patch1: %{name}-1385349-segv-bus-proxy.patch
%if 0%{?fedora:0}%{?rhel:1}
@@ -97,7 +98,6 @@ BuildRequires: intltool
BuildRequires: git
BuildRequires: vala
BuildRequires: iso-codes-devel
-BuildRequires: libdbusmenu-gtk3-devel
BuildRequires: libnotify-devel
BuildRequires: wayland-devel
BuildRequires: cldr-emoji-annotation
@@ -247,6 +247,17 @@ Requires: %{name}-libs%{?_isa} = %{version}-%{release}
%description wayland
This package contains IBus IM module for Wayland
+%package panel
+Summary: IBus Panel icon
+Requires: %{name}%{?_isa} = %{version}-%{release}
+BuildRequires: libdbusmenu-gtk3-devel
+
+%description panel
+This package contains IBus Panel icon using GtkStatusIcon or AppIndicator
+in non-GNOME desktop sessions likes XFCE or Plasma because gnome-shell
+shows the IBus Icon. This package depends on libdbusmenu-gtk3 for Wayland
+desktop sessions.
+
%package devel
Summary: Development tools for ibus
Requires: %{name}-libs%{?_isa} = %{version}-%{release}
@@ -297,6 +308,8 @@ the functionality of the installed %{name} package.
# cp client/gtk2/ibusimcontext.c client/gtk3/ibusimcontext.c || :
# cp client/gtk2/ibusim.c client/gtk3/ibusim.c || :
# cp client/gtk2/ibusimcontext.c client/gtk4/ibusimcontext.c || :
+cp client/gtk2/ibusimcontext.c client/gtk3/ibusimcontext.c || :
+cp client/gtk2/ibusimcontext.c client/gtk4/ibusimcontext.c || :
# prep test
@@ -441,7 +454,6 @@ dconf update || :
%{_bindir}/ibus-daemon
%{_datadir}/applications/org.freedesktop.IBus.Panel.Emojier.desktop
%{_datadir}/applications/org.freedesktop.IBus.Panel.Extension.Gtk3.desktop
-%{_datadir}/applications/org.freedesktop.IBus.Panel.Wayland.Gtk3.desktop
%{_datadir}/bash-completion/completions/ibus.bash
%{_datadir}/dbus-1/services/*.service
%{_datadir}/GConf/gsettings/*
@@ -462,7 +474,6 @@ dconf update || :
%{_libexecdir}/ibus-portal
%{_libexecdir}/ibus-extension-gtk3
%{_libexecdir}/ibus-ui-emojier
-%{_libexecdir}/ibus-ui-gtk3
%{_libexecdir}/ibus-x11
%{_sysconfdir}/dconf/db/ibus.d
%{_sysconfdir}/dconf/profile/ibus
@@ -526,6 +537,10 @@ dconf update || :
%files wayland
%{_libexecdir}/ibus-wayland
+%files panel
+%{_datadir}/applications/org.freedesktop.IBus.Panel.Wayland.Gtk3.desktop
+%{_libexecdir}/ibus-ui-gtk3
+
%files devel
%{_libdir}/ibus
%{_libdir}/lib*.so
@@ -557,6 +572,11 @@ dconf update || :
%{_datadir}/installed-tests/ibus
%changelog
+* Fri Aug 18 2023 Takao Fujiwara <tfujiwar@redhat.com> - 1.5.29~beta2-2
+- Separate ibus-ui-gtk3 as ibus-panel sub package depended on libdbusmenu
+- Update autogen.sh for Fedora 39
+- Fix cursor position with GTK4 in Xorg
+
* Tue Aug 08 2023 Takao Fujiwara <tfujiwar@redhat.com> - 1.5.29~beta2-1
- Distinguish Arabic XKB and Keypad XKB options
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=178019329633.1.8775597688523002184.rpms-ibus-b38ab9abe342@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