Add RHEL code reviews

- Fix Hangul preedit with mouse click for RHEL 8
This commit is contained in:
Takao Fujiwara 2019-12-11 19:50:30 +09:00
parent 66e07d2dbc
commit b60ce10e89
2 changed files with 404 additions and 1 deletions

View File

@ -2755,3 +2755,401 @@ index 43990d5f..378388d9 100644
--
2.21.0
From bccf94d5ec1c5fc80d5aeac622f2ab8007d5a28a Mon Sep 17 00:00:00 2001
From: fujiwarat <takao.fujiwara1@gmail.com>
Date: Fri, 29 Nov 2019 20:28:49 +0900
Subject: [PATCH] src/tests: RHEL codereview for ibus-desktop-testing-runner
---
src/tests/ibus-desktop-testing-runner.in | 16 ++++++++++------
1 file changed, 10 insertions(+), 6 deletions(-)
diff --git a/src/tests/ibus-desktop-testing-runner.in b/src/tests/ibus-desktop-testing-runner.in
index 141e9b5b..72537cd4 100755
--- a/src/tests/ibus-desktop-testing-runner.in
+++ b/src/tests/ibus-desktop-testing-runner.in
@@ -28,6 +28,10 @@
# # /root/ibus/tests/test-console.sh --tests ibus-compose \
# --builddir /root/ibus/src/tests --srcdir /root/ibus/src/tests
+# POSIX sh has no 'echo -e'
+: ${ECHO:='/usr/bin/echo'}
+
+
PROGNAME=`basename $0`
VERSION=0.1
DISPLAY=:99.0
@@ -54,15 +58,15 @@ print_log()
shift
fi
NO_ESCAPE=`echo $@ | sed -e 's/\\\033\\[0;3.m//g' -e 's/\\\033\\[0m//g'`
- echo $NO_ESCAPE >> $RESULT_LOG
+ $ECHO $NO_ESCAPE >> $RESULT_LOG
else
- echo $@
+ $ECHO $@
fi
}
usage()
{
- echo -e \
+ $ECHO -e \
"This test runs /usr/bin/ibus-daemon after install ibus\n" \
"$PROGNAME [OPTIONS…]\n" \
"\n" \
@@ -92,7 +96,7 @@ parse_args()
while [ 1 ] ; do
case "$1" in
-h | --help ) usage; exit 0;;
- -v | --version ) echo -e "$VERSION"; exit 0;;
+ -v | --version ) $ECHO -e "$VERSION"; exit 0;;
-b | --builddir ) BUILDDIR="$2"; shift 2;;
-s | --srcdir ) SRCDIR="$2"; shift 2;;
-c | --no-graphics ) HAVE_GRAPHICS=0; shift;;
@@ -121,7 +125,7 @@ init_desktop()
fi
if [ "$TEST_LOG" = "" ] ; then
print_log -e "${RED}FAIL${NC}: ${RED}ERROR${NC}: a log file is required to get return value with 'read' command"
- exit -1
+ exit 255
elif [ -f $TEST_LOG ] ; then
rm $TEST_LOG
fi
@@ -291,7 +295,7 @@ EOF
done
child_pass=`grep '^PASS:' $TEST_LOG | wc -l`
child_fail=`grep '^FAIL:' $TEST_LOG | wc -l`
- if [ $child_pass -ne 0 -o $child_fail -ne 0 ] ; then
+ if [ $child_pass -ne 0 ] || [ $child_fail -ne 0 ] ; then
pass=$child_pass
if [ $child_fail -ne 0 ] ; then
fail=`expr $child_fail / 2`
--
2.21.0
From d50627f0b7a000ee13ea6dcc02a4162be1fa853d Mon Sep 17 00:00:00 2001
From: fujiwarat <takao.fujiwara1@gmail.com>
Date: Tue, 3 Dec 2019 21:42:49 +0900
Subject: [PATCH] src/tests: RHEL codereview #2 for ibus-desktop-testing-runner
---
src/tests/ibus-compose-locales.in | 21 +++++++--------
src/tests/ibus-desktop-testing-runner.in | 33 ++++++++++++------------
2 files changed, 27 insertions(+), 27 deletions(-)
diff --git a/src/tests/ibus-compose-locales.in b/src/tests/ibus-compose-locales.in
index f650b584..b36165fe 100755
--- a/src/tests/ibus-compose-locales.in
+++ b/src/tests/ibus-compose-locales.in
@@ -7,27 +7,26 @@ BUILDDIR=`dirname $0`
export IBUS_COMPOSE_CACHE_DIR=$PWD
retval=0
-# Let for-loop notice '\n' as a delimiter
-IFS=$'\n'
-for var in `cat $SRCDIR/ibus-compose.env`
+# Deleted for var in `cat *.env` because IFS=$'\n' is not supported in POSIX sh
+while read var
do
- # Revert IFS to recognize env a=foo b=foo
- IFS=' '
IS_COMMENT=`echo "$var" | grep "^#"`
if [ "x$IS_COMMENT" != x ] ; then
continue
fi
- echo "# Starting $var $BUILDDIR/ibus-compose $SRCDIR $@"
- env $var $BUILDDIR/ibus-compose $SRCDIR $@
+ # Use $* instead of $@ not to mix strings and integers
+ echo "# Starting $var $BUILDDIR/ibus-compose $SRCDIR $*"
+ # Need to enclose $@ with double quotes not to split the array.
+ env $var $BUILDDIR/ibus-compose $SRCDIR "$@"
retval=`expr $retval + $?`
- echo "# Finished $var $BUILDDIR/ibus-compose $SRCDIR $@ with $retval"
+ echo "# Finished $var $BUILDDIR/ibus-compose $SRCDIR $* with $retval"
CACHE_FILES=`ls *.cache`
if [ x"$CACHE_FILES" != x ] ; then
echo "Clean $CACHE_FILES"
rm $CACHE_FILES
fi
- IFS=$'\n'
-done
-IFS=' '
+done << EOF_ENVS
+`cat $SRCDIR/ibus-compose.env`
+EOF_ENVS
exit $retval
diff --git a/src/tests/ibus-desktop-testing-runner.in b/src/tests/ibus-desktop-testing-runner.in
index 72537cd4..981941d5 100755
--- a/src/tests/ibus-desktop-testing-runner.in
+++ b/src/tests/ibus-desktop-testing-runner.in
@@ -30,6 +30,8 @@
# POSIX sh has no 'echo -e'
: ${ECHO:='/usr/bin/echo'}
+# POSIX sh has $UID
+: ${UID:='`id -u`'}
PROGNAME=`basename $0`
@@ -57,10 +59,10 @@ print_log()
if [ x"$1" = x'-e' ] ; then
shift
fi
- NO_ESCAPE=`echo $@ | sed -e 's/\\\033\\[0;3.m//g' -e 's/\\\033\\[0m//g'`
+ NO_ESCAPE=`echo "$@" | sed -e 's/\\\033\\[0;3.m//g' -e 's/\\\033\\[0m//g'`
$ECHO $NO_ESCAPE >> $RESULT_LOG
else
- $ECHO $@
+ $ECHO "$@"
fi
}
@@ -231,9 +233,9 @@ run_direct_test_cases()
if test x"$ENVS" = x ; then
$BUILDDIR/$tst $SRCDIR 2>>$TEST_LOG 1>>$TEST_LOG
retval=$?
- read pass fail << EOF
+ read pass fail << EOF_COUNT
`count_case_result $retval $pass $fail`
-EOF
+EOF_COUNT
echo_case_result $retval $tst
CACHE_FILES=`ls *.cache`
if [ x"$CACHE_FILES" != x ] ; then
@@ -242,11 +244,9 @@ EOF
fi
else
i=1
- # Let for-loop notice '\n' as a delimiter
- IFS=$'\n'
- for e in $ENVS; do
- # Revert IFS to recognize env a=foo b=foo
- IFS=' '
+ # Deleted for var in "$ENVS" because IFS=$'\n' is not supported
+ # in POSIX sh
+ while read e ; do
first=`echo "$e" | grep '^#'`
if test x"$first" = x"#" ; then
continue
@@ -255,9 +255,9 @@ EOF
env $e $BUILDDIR/$tst $SRCDIR 2>>$TEST_LOG 1>>$TEST_LOG
retval=$?
echo "# Finished $e $BUILDDIR/$tst $SRCDIR with $retval" >>$TEST_LOG
- read pass fail << EOF
+ read pass fail << EOF_COUNT
`count_case_result $retval $pass $fail`
-EOF
+EOF_COUNT
echo_case_result $retval $tst $e
CACHE_FILES=`ls *.cache`
if [ x"$CACHE_FILES" != x ] ; then
@@ -265,9 +265,9 @@ EOF
rm $CACHE_FILES
fi
i=`expr $i + 1`
- IFS=$'\n'
- done
- IFS=' '
+ done << EOF_ENVS
+ `echo "$ENVS"`
+EOF_ENVS
fi
done
echo $pass $fail
@@ -357,7 +357,7 @@ finit()
main()
{
- parse_args $@
+ parse_args "$@"
init_desktop
run_dbus_daemon 2>>$TEST_LOG 1>>$TEST_LOG
run_desktop 2>>$TEST_LOG 1>>$TEST_LOG
@@ -365,4 +365,5 @@ main()
finit
}
-main $@
+# Need to enclose $@ with double quotes not to split the array.
+main "$@"
--
2.21.0
From 25d11f5cfd4c39e53be11a1348da29a61593cc4c Mon Sep 17 00:00:00 2001
From: fujiwarat <takao.fujiwara1@gmail.com>
Date: Wed, 11 Dec 2019 16:28:22 +0900
Subject: [PATCH] client/gtk2: Fix to set use_button_press_event after signals
are connected
_ibus_context_update_preedit_text_cb() can be called with reset signals
before ibus_im_context_set_client_window() is called. Then
use_button_press_event needs to be set only when the signals are connected.
BUG=https://github.com/ibus/ibus/issues/1980
---
client/gtk2/ibusimcontext.c | 12 ++++++++----
1 file changed, 8 insertions(+), 4 deletions(-)
diff --git a/client/gtk2/ibusimcontext.c b/client/gtk2/ibusimcontext.c
index 5e3457ba..ac5de809 100644
--- a/client/gtk2/ibusimcontext.c
+++ b/client/gtk2/ibusimcontext.c
@@ -1074,8 +1074,9 @@ ibus_im_context_reset (GtkIMContext *context)
/* Commented out ibus_im_context_clear_preedit_text().
* Hangul needs to receive the reset callback with button press
* but other IMEs should avoid to receive the reset callback
- * so the signal would need to be customized with GtkSetting.
- * IBus uses button-press-event instead.
+ * by themselves.
+ * IBus uses button-press-event instead until GTK is fixed.
+ * https://gitlab.gnome.org/GNOME/gtk/issues/1534
*/
ibus_input_context_reset (ibusimcontext->ibuscontext);
}
@@ -1657,10 +1658,13 @@ _ibus_context_update_preedit_text_cb (IBusInputContext *ibuscontext,
if (!ibusimcontext->use_button_press_event &&
mode == IBUS_ENGINE_PREEDIT_COMMIT) {
#if !GTK_CHECK_VERSION (3, 93, 0)
- if (ibusimcontext->client_window)
+ if (ibusimcontext->client_window) {
_connect_button_press_event (ibusimcontext, TRUE);
-#endif
+ ibusimcontext->use_button_press_event = TRUE;
+ }
+#else
ibusimcontext->use_button_press_event = TRUE;
+#endif
}
str = text->text;
--
2.21.0
From 7830673205140e901df354b80a00254f7c08f30d Mon Sep 17 00:00:00 2001
From: fujiwarat <takao.fujiwara1@gmail.com>
Date: Wed, 11 Dec 2019 19:10:24 +0900
Subject: [PATCH] client/gtk2: Add IBUS_AUTO_PREEDIT_COMMIT_APPS env for
Hangul
Firefox no longer connect "button-press-event" but uses
GtkGestureMultiPress in GtkWindowPrivate and connects "pressed"
instead and do not propagate the event with "button-press-event".
We don't commit the preedit text in the client here for the
workaround and let firefox commit the preedit text to avoid the
double preedit text with mouse click.
BUG=https://github.com/ibus/ibus/issues/1980
---
client/gtk2/ibusimcontext.c | 32 ++++++++++++++++++++++++++++----
configure.ac | 13 ++++++++++++-
2 files changed, 40 insertions(+), 5 deletions(-)
diff --git a/client/gtk2/ibusimcontext.c b/client/gtk2/ibusimcontext.c
index ac5de809..df78ce48 100644
--- a/client/gtk2/ibusimcontext.c
+++ b/client/gtk2/ibusimcontext.c
@@ -2,8 +2,8 @@
/* vim:set et sts=4: */
/* ibus - The Input Bus
* Copyright (C) 2008-2013 Peng Huang <shawn.p.huang@gmail.com>
- * Copyright (C) 2015-2018 Takao Fujiwara <takao.fujiwara1@gmail.com>
- * Copyright (C) 2008-2018 Red Hat, Inc.
+ * Copyright (C) 2015-2019 Takao Fujiwara <takao.fujiwara1@gmail.com>
+ * Copyright (C) 2008-2019 Red Hat, Inc.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
@@ -97,6 +97,9 @@ static gboolean _use_sync_mode = FALSE;
static const gchar *_discard_password_apps = "";
static gboolean _use_discard_password = FALSE;
+static const gchar *_auto_commit_apps = AUTO_PREEDIT_COMMIT_APPS;
+static gboolean _use_auto_commit = FALSE;
+
static GtkIMContext *_focus_im_context = NULL;
static IBusInputContext *_fake_context = NULL;
static GdkWindow *_input_window = NULL;
@@ -636,6 +639,7 @@ ibus_im_context_class_init (IBusIMContextClass *class)
!(ENABLE_SNOOPER));
_use_sync_mode = _get_boolean_env ("IBUS_ENABLE_SYNC_MODE", FALSE);
_use_discard_password = _get_boolean_env ("IBUS_DISCARD_PASSWORD", FALSE);
+ _use_auto_commit = _get_boolean_env ("IBUS_AUTO_PREEDIT_COMMIT", FALSE);
#define CHECK_APP_IN_CSV_ENV_VARIABLES(retval, \
env_apps, \
@@ -672,6 +676,12 @@ ibus_im_context_class_init (IBusIMContextClass *class)
_discard_password_apps,
TRUE);
}
+ if (!_use_auto_commit) {
+ CHECK_APP_IN_CSV_ENV_VARIABLES (_use_auto_commit,
+ IBUS_AUTO_PREEDIT_COMMIT_APPS,
+ _auto_commit_apps,
+ TRUE);
+ }
#undef CHECK_APP_IN_CSV_ENV_VARIABLES
@@ -896,9 +906,23 @@ ibus_im_context_clear_preedit_text (IBusIMContext *ibusimcontext)
IBUS_ENGINE_PREEDIT_CLEAR,
ibusimcontext);
if (preedit_string) {
- g_signal_emit (ibusimcontext, _signal_commit_id, 0, preedit_string);
+ /* Firefox no longer connect "button-press-event" but uses
+ * GtkGestureMultiPress in GtkWindowPrivate and connects "pressed"
+ * instead and do not propagate the event with "button-press-event".
+ * We don't commit the preedit text in the client here for the
+ * workaround and let firefox commit the preedit text to avoid the
+ * double preedit text with mouse click.
+ * After we fix the GTK reset signal to always emit the reset signal
+ * with mouse click, also will try to fix the Firefox
+ * reset signal so that ibus clients receive the signal before Firefox
+ * composes the preedit text because the options of commit, clear,
+ * keep depends on each IBus engine but Firefox cannot know each engine.
+ */
+ if (!_use_auto_commit) {
+ g_signal_emit (ibusimcontext, _signal_commit_id, 0, preedit_string);
+ _request_surrounding_text (ibusimcontext);
+ }
g_free (preedit_string);
- _request_surrounding_text (ibusimcontext);
}
}
diff --git a/configure.ac b/configure.ac
index ab74a380..12642834 100644
--- a/configure.ac
+++ b/configure.ac
@@ -540,6 +540,16 @@ AC_ARG_WITH(no-snooper-apps,
AC_DEFINE_UNQUOTED(NO_SNOOPER_APPS, "$NO_SNOOPER_APPS",
[Does not enbale keyboard snooper in those applications])
+# Option for auto-preedit-commit applications.
+AC_ARG_WITH(auto-preedit-commit-apps,
+ AS_HELP_STRING([--with-auto-preedit-commit-apps[=regex1,regex2]],
+ [Applications have auto-commit of preedit with mouse click (like: .*chrome.*,firefox.*)]),
+ AUTO_PREEDIT_COMMIT_APPS=$with_auto_preedit_commit_apps,
+ AUTO_PREEDIT_COMMIT_APPS=[firefox.*,.*chrome.*,.*chromium.*]
+)
+AC_DEFINE_UNQUOTED(AUTO_PREEDIT_COMMIT_APPS, "$AUTO_PREEDIT_COMMIT_APPS",
+ [Applications have auto-commit of preedit with mouse click])
+
# GNOME 3 uses the theme's icon.
AC_ARG_WITH(panel-icon-keyboard,
AS_HELP_STRING([--with-panel-icon-keyboard[=icon_name]],
@@ -812,7 +822,8 @@ Build options:
Build UI $enable_ui
Build engine $enable_engine
Enable key snooper $enable_key_snooper
- No snooper regexes "$NO_SNOOPER_APPS"
+ No snooper apps "$NO_SNOOPER_APPS"
+ Auto preedit commit apps "$AUTO_PREEDIT_COMMIT_APPS"
Panel icon "$IBUS_ICON_KEYBOARD"
Enable surrounding-text $enable_surrounding_text
Enable Emoji dict $enable_emoji_dict
--
2.21.0

View File

@ -35,7 +35,7 @@
Name: ibus
Version: 1.5.21
Release: 4%{?dist}
Release: 5%{?dist}
Summary: Intelligent Input Bus for Linux OS
License: LGPLv2+
URL: https://github.com/ibus/%name/wiki
@ -256,6 +256,7 @@ the functionality of the installed %{name} package.
%prep
%autosetup -S git
# cp client/gtk2/ibusimcontext.c client/gtk3/ibusimcontext.c || :
cp client/gtk2/ibusimcontext.c client/gtk3/ibusimcontext.c || :
# prep test
@ -463,6 +464,10 @@ dconf update || :
%{_datadir}/installed-tests/ibus
%changelog
* Wed Dec 11 2019 Takao Fujiwara <tfujiwar@redhat.com> - 1.5.21-5
- Add RHEL code reviews
- Fix Hangul preedit with mouse click for RHEL 8
* Mon Nov 18 2019 Takao Fujiwara <tfujiwar@redhat.com> - 1.5.21-4
- Replace push with cd for Posix SH
- Use XDG_CONFIG_HOME for Unix socket directory