Hello community, here is the log from the commit of package fcitx for openSUSE:Factory checked in at 2016-03-07 13:27:44 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/fcitx (Old) and /work/SRC/openSUSE:Factory/.fcitx.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Package is "fcitx" Changes: -------- --- /work/SRC/openSUSE:Factory/fcitx/fcitx.changes 2016-03-01 10:21:04.000000000 +0100 +++ /work/SRC/openSUSE:Factory/.fcitx.new/fcitx.changes 2016-03-07 13:29:02.000000000 +0100 @@ -1,0 +2,12 @@ +Fri Mar 4 14:57:37 UTC 2016 - i@marguerite.su + +- backport a upstream fix: + * boo#954623: fcitx prevents dropbox system tray + loading in KDE Plasma 5 + * commit#c73761 : avoid unnecessary xembed tray + icon fallback, try harder to avoid touch tray + protocol related code when notification is + available or kimpanel is available. + * add patch boo954623.patch, delete next update + +------------------------------------------------------------------- New: ---- boo954623.patch ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ fcitx.spec ++++++ --- /var/tmp/diff_new_pack.UcVvh2/_old 2016-03-07 13:29:03.000000000 +0100 +++ /var/tmp/diff_new_pack.UcVvh2/_new 2016-03-07 13:29:03.000000000 +0100 @@ -38,6 +38,8 @@ Patch2: fcitx-autostart-check-INPUT_METHOD.patch # PATCH-FIX-OPENSUSE fcitx-autostart-desktop-no-display.patch boo#968486 Patch3: fcitx-autostart-desktop-no-display.patch +# PATCH-FIX-UPSTREAM boo#964623 +Patch4: boo954623.patch BuildRequires: cairo-devel BuildRequires: dbus-1-devel BuildRequires: dbus-1-glib-devel @@ -363,6 +365,7 @@ %patch1 -p1 %patch2 -p1 %patch3 -p1 +%patch4 -p1 # hack to fix incompatibility of gtk-query-immodules-2.0 (bnc#845860) %if %suse_version < 1310 sed -i \ ++++++ boo954623.patch ++++++ Index: fcitx-4.2.9.1/src/module/notificationitem/notificationitem.c =================================================================== --- fcitx-4.2.9.1.orig/src/module/notificationitem/notificationitem.c +++ fcitx-4.2.9.1/src/module/notificationitem/notificationitem.c @@ -565,8 +565,17 @@ void FcitxNotificationItemUpdateIMList(v boolean FcitxNotificationItemEnable(FcitxNotificationItem* notificationitem, FcitxNotificationItemAvailableCallback callback, void* data) { - if (!callback || notificationitem->callback) + if (!callback) return false; + + if (notificationitem->callback == callback) { + return true; + } + + if (notificationitem->callback) { + return false; + } + if (notificationitem->serviceName) { FcitxLog(ERROR, "This should not happen, please report bug."); return false; Index: fcitx-4.2.9.1/src/ui/classic/TrayWindow.c =================================================================== --- fcitx-4.2.9.1.orig/src/ui/classic/TrayWindow.c +++ fcitx-4.2.9.1/src/ui/classic/TrayWindow.c @@ -226,11 +226,11 @@ boolean TrayEventHandler(void *arg, XEve if (event->xclient.message_type == trayWindow->atoms[ATOM_MANAGER] && event->xclient.data.l[1] == trayWindow->atoms[ATOM_SELECTION] && trayWindow->dockWindow == None) { - if (classicui->notificationItemAvailable) - return true; trayWindow->dockWindow = event->xclient.data.l[2]; TrayWindowRelease(trayWindow); - TrayWindowInit(trayWindow); + if (!classicui->notificationItemAvailable && !classicui->isSuspend) { + TrayWindowInit(trayWindow); + } return true; } break; Index: fcitx-4.2.9.1/src/ui/classic/classicui.c =================================================================== --- fcitx-4.2.9.1.orig/src/ui/classic/classicui.c +++ fcitx-4.2.9.1/src/ui/classic/classicui.c @@ -168,7 +168,7 @@ void* ClassicUICreate(FcitxInstance* ins void ClassicUIDelayedInitTray(void* arg) { FcitxClassicUI* classicui = (FcitxClassicUI*) arg; // FcitxLog(INFO, "yeah we delayed!"); - if (!classicui->bUseTrayIcon) + if (!classicui->bUseTrayIcon || classicui->isSuspend) return; /* * if this return false, something wrong happened and callback @@ -187,7 +187,7 @@ void ClassicUIDelayedShowTray(void* arg) { FcitxClassicUI* classicui = (FcitxClassicUI*) arg; classicui->trayTimeout = 0; - if (!classicui->bUseTrayIcon) + if (!classicui->bUseTrayIcon || classicui->isSuspend) return; if (!classicui->trayWindow->bTrayMapped) {