Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package homebank for openSUSE:Factory 
checked in at 2022-07-10 23:15:30
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/homebank (Old)
 and      /work/SRC/openSUSE:Factory/.homebank.new.1523 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "homebank"

Sun Jul 10 23:15:30 2022 rev:33 rq:988060 version:5.5.6

Changes:
--------
--- /work/SRC/openSUSE:Factory/homebank/homebank.changes        2022-04-26 
20:17:37.596750379 +0200
+++ /work/SRC/openSUSE:Factory/.homebank.new.1523/homebank.changes      
2022-07-10 23:15:35.740973207 +0200
@@ -1,0 +2,17 @@
+Thu Jun 30 18:07:43 UTC 2022 - Carsten Ziepke <kiel...@gmail.com>
+
+- Update to version 5.5.6: 
+  * bugfix: #1977796 rounding problem for euro minor in
+    deutsche mark
+  * bugfix: #1976138 split amount opposite sign don't work when
+    using + button
+  * bugfix: #1972078 inherit old xfer enable to post to
+    a closed account
+  * bugfix: #1970526 windows do not minimize independently; cannot
+    raise main window above others
+  * bugfix: #1970509 manage scheduled list column hscrollbar
+  * bugfix: #1970020 balance report - toggle detail show no txn
+  * bugfix: #1967708 csv export invalid with semicolon in text
+-  BuildRequires for glib2 changed to >= 2.68
+
+-------------------------------------------------------------------

Old:
----
  homebank-5.5.5.tar.gz

New:
----
  homebank-5.5.6.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ homebank.spec ++++++
--- /var/tmp/diff_new_pack.sxiqyO/_old  2022-07-10 23:15:36.656974608 +0200
+++ /var/tmp/diff_new_pack.sxiqyO/_new  2022-07-10 23:15:36.660974615 +0200
@@ -17,7 +17,7 @@
 
 
 Name:           homebank
-Version:        5.5.5
+Version:        5.5.6
 Release:        0
 Summary:        Application to manage personal accounts
 License:        GPL-2.0-or-later
@@ -30,7 +30,7 @@
 BuildRequires:  libofx-devel
 BuildRequires:  pkgconfig
 BuildRequires:  update-desktop-files
-BuildRequires:  pkgconfig(glib-2.0) >= 2.39
+BuildRequires:  pkgconfig(glib-2.0) >= 2.68
 BuildRequires:  pkgconfig(gtk+-3.0) >= 3.16
 BuildRequires:  pkgconfig(libsoup-2.4) >= 2.26
 

++++++ homebank-5.5.5.tar.gz -> homebank-5.5.6.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/homebank-5.5.5/ChangeLog new/homebank-5.5.6/ChangeLog
--- old/homebank-5.5.5/ChangeLog        2022-04-18 17:33:01.000000000 +0200
+++ new/homebank-5.5.6/ChangeLog        2022-06-28 19:14:34.000000000 +0200
@@ -1,5 +1,18 @@
 
 
+2022-06-28  Maxime Doyen
+
+ Made 5.5.6 release
+
+ * bugfix: #1977796 rounding problem for euro minor in deutsche mark
+ * bugfix: #1976138 split amount opposite sign don't work when using + button
+ * bugfix: #1972078 inherit old xfer enable to post to a closed account
+ * bugfix: #1970526 windows do not minimize independently; cannot raise main 
window above others
+ * bugfix: #1970509 manage scheduled list column hscrollbar
+ * bugfix: #1970020 balance report - toggle detail show no txn
+ * bugfix: #1967708 csv export invalid with semicolon in text
+
+
 2022-04-18  Maxime Doyen
 
  Made 5.5.5 release
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/homebank-5.5.5/Makefile.in 
new/homebank-5.5.6/Makefile.in
--- old/homebank-5.5.5/Makefile.in      2022-04-15 17:31:12.000000000 +0200
+++ new/homebank-5.5.6/Makefile.in      2022-05-19 22:49:30.000000000 +0200
@@ -256,13 +256,11 @@
 ECHO_C = @ECHO_C@
 ECHO_N = @ECHO_N@
 ECHO_T = @ECHO_T@
-EGREP = @EGREP@
 ETAGS = @ETAGS@
 EXEEXT = @EXEEXT@
 GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
 GMOFILES = @GMOFILES@
 GMSGFMT = @GMSGFMT@
-GREP = @GREP@
 INSTALL = @INSTALL@
 INSTALL_DATA = @INSTALL_DATA@
 INSTALL_PROGRAM = @INSTALL_PROGRAM@
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/homebank-5.5.5/aclocal.m4 
new/homebank-5.5.6/aclocal.m4
--- old/homebank-5.5.5/aclocal.m4       2022-04-15 17:31:11.000000000 +0200
+++ new/homebank-5.5.6/aclocal.m4       2022-05-19 22:49:29.000000000 +0200
@@ -1718,35 +1718,6 @@
 fi
 ])
 
-#  -*- Autoconf -*-
-# Obsolete and "removed" macros, that must however still report explicit
-# error messages when used, to smooth transition.
-#
-# Copyright (C) 1996-2021 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-AC_DEFUN([AM_CONFIG_HEADER],
-[AC_DIAGNOSE([obsolete],
-['$0': this macro is obsolete.
-You should use the 'AC][_CONFIG_HEADERS' macro instead.])dnl
-AC_CONFIG_HEADERS($@)])
-
-AC_DEFUN([AM_PROG_CC_STDC],
-[AC_PROG_CC
-am_cv_prog_cc_stdc=$ac_cv_prog_cc_stdc
-AC_DIAGNOSE([obsolete],
-['$0': this macro is obsolete.
-You should simply use the 'AC][_PROG_CC' macro instead.
-Also, your code should no longer depend upon 'am_cv_prog_cc_stdc',
-but upon 'ac_cv_prog_cc_stdc'.])])
-
-AC_DEFUN([AM_C_PROTOTYPES],
-         [AC_FATAL([automatic de-ANSI-fication support has been removed])])
-AU_DEFUN([fp_C_PROTOTYPES], [AM_C_PROTOTYPES])
-
 # Helper functions for option handling.                     -*- Autoconf -*-
 
 # Copyright (C) 2001-2021 Free Software Foundation, Inc.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/homebank-5.5.5/configure new/homebank-5.5.6/configure
--- old/homebank-5.5.5/configure        2022-04-15 17:31:12.000000000 +0200
+++ new/homebank-5.5.6/configure        2022-05-19 22:49:30.000000000 +0200
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.71 for homebank 5.5.5.
+# Generated by GNU Autoconf 2.71 for homebank 5.5.6.
 #
 #
 # Copyright (C) 1992-1996, 1998-2017, 2020-2021 Free Software Foundation,
@@ -180,8 +180,7 @@
   as_suggested="  
as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" 
as_lineno_1a=\$LINENO
   as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" 
as_lineno_2a=\$LINENO
   eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" &&
-  test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = 
\"x\$as_lineno_2'\$as_run'\"' || exit 1
-test \$(( 1 + 1 )) = 2 || exit 1"
+  test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = 
\"x\$as_lineno_2'\$as_run'\"' || exit 1"
   if (eval "$as_required") 2>/dev/null
 then :
   as_have_required=yes
@@ -608,8 +607,8 @@
 # Identity of this package.
 PACKAGE_NAME='homebank'
 PACKAGE_TARNAME='homebank'
-PACKAGE_VERSION='5.5.5'
-PACKAGE_STRING='homebank 5.5.5'
+PACKAGE_VERSION='5.5.6'
+PACKAGE_STRING='homebank 5.5.6'
 PACKAGE_BUGREPORT=''
 PACKAGE_URL=''
 
@@ -663,8 +662,6 @@
 CATALOGS
 MSGFMT_OPTS
 INTL_MACOSX_LIBS
-EGREP
-GREP
 NOOFX_FALSE
 NOOFX_TRUE
 LIBSOUP_LIBS
@@ -1367,7 +1364,7 @@
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures homebank 5.5.5 to adapt to many kinds of systems.
+\`configure' configures homebank 5.5.6 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1434,7 +1431,7 @@
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of homebank 5.5.5:";;
+     short | recursive ) echo "Configuration of homebank 5.5.6:";;
    esac
   cat <<\_ACEOF
 
@@ -1542,7 +1539,7 @@
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-homebank configure 5.5.5
+homebank configure 5.5.6
 generated by GNU Autoconf 2.71
 
 Copyright (C) 2021 Free Software Foundation, Inc.
@@ -1817,7 +1814,7 @@
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by homebank $as_me 5.5.5, which was
+It was created by homebank $as_me 5.5.6, which was
 generated by GNU Autoconf 2.71.  Invocation command line was
 
   $ $0$ac_configure_args_raw
@@ -3091,7 +3088,7 @@
 
 # Define the identity of the package.
  PACKAGE='homebank'
- VERSION='5.5.5'
+ VERSION='5.5.6'
 
 
 printf "%s\n" "#define PACKAGE \"$PACKAGE\"" >>confdefs.h
@@ -5543,152 +5540,6 @@
 
 
 # Checks for header files.
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for grep that handles 
long lines and -e" >&5
-printf %s "checking for grep that handles long lines and -e... " >&6; }
-if test ${ac_cv_path_GREP+y}
-then :
-  printf %s "(cached) " >&6
-else $as_nop
-  if test -z "$GREP"; then
-  ac_path_GREP_found=false
-  # Loop through the user's path and test for each of PROGNAME-LIST
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
-do
-  IFS=$as_save_IFS
-  case $as_dir in #(((
-    '') as_dir=./ ;;
-    */) ;;
-    *) as_dir=$as_dir/ ;;
-  esac
-    for ac_prog in grep ggrep
-   do
-    for ac_exec_ext in '' $ac_executable_extensions; do
-      ac_path_GREP="$as_dir$ac_prog$ac_exec_ext"
-      as_fn_executable_p "$ac_path_GREP" || continue
-# Check for GNU ac_path_GREP and select it if it is found.
-  # Check for GNU $ac_path_GREP
-case `"$ac_path_GREP" --version 2>&1` in
-*GNU*)
-  ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;;
-*)
-  ac_count=0
-  printf %s 0123456789 >"conftest.in"
-  while :
-  do
-    cat "conftest.in" "conftest.in" >"conftest.tmp"
-    mv "conftest.tmp" "conftest.in"
-    cp "conftest.in" "conftest.nl"
-    printf "%s\n" 'GREP' >> "conftest.nl"
-    "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" 
>"conftest.out" 2>/dev/null || break
-    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
-    as_fn_arith $ac_count + 1 && ac_count=$as_val
-    if test $ac_count -gt ${ac_path_GREP_max-0}; then
-      # Best one so far, save it but keep looking for a better one
-      ac_cv_path_GREP="$ac_path_GREP"
-      ac_path_GREP_max=$ac_count
-    fi
-    # 10*(2^10) chars as input seems more than enough
-    test $ac_count -gt 10 && break
-  done
-  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
-esac
-
-      $ac_path_GREP_found && break 3
-    done
-  done
-  done
-IFS=$as_save_IFS
-  if test -z "$ac_cv_path_GREP"; then
-    as_fn_error $? "no acceptable grep could be found in 
$PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
-  fi
-else
-  ac_cv_path_GREP=$GREP
-fi
-
-fi
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5
-printf "%s\n" "$ac_cv_path_GREP" >&6; }
- GREP="$ac_cv_path_GREP"
-
-
-# Autoupdate added the next two lines to ensure that your configure
-# script's behavior did not change.  They are probably safe to remove.
-
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5
-printf %s "checking for egrep... " >&6; }
-if test ${ac_cv_path_EGREP+y}
-then :
-  printf %s "(cached) " >&6
-else $as_nop
-  if echo a | $GREP -E '(a|b)' >/dev/null 2>&1
-   then ac_cv_path_EGREP="$GREP -E"
-   else
-     if test -z "$EGREP"; then
-  ac_path_EGREP_found=false
-  # Loop through the user's path and test for each of PROGNAME-LIST
-  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
-for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin
-do
-  IFS=$as_save_IFS
-  case $as_dir in #(((
-    '') as_dir=./ ;;
-    */) ;;
-    *) as_dir=$as_dir/ ;;
-  esac
-    for ac_prog in egrep
-   do
-    for ac_exec_ext in '' $ac_executable_extensions; do
-      ac_path_EGREP="$as_dir$ac_prog$ac_exec_ext"
-      as_fn_executable_p "$ac_path_EGREP" || continue
-# Check for GNU ac_path_EGREP and select it if it is found.
-  # Check for GNU $ac_path_EGREP
-case `"$ac_path_EGREP" --version 2>&1` in
-*GNU*)
-  ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;;
-*)
-  ac_count=0
-  printf %s 0123456789 >"conftest.in"
-  while :
-  do
-    cat "conftest.in" "conftest.in" >"conftest.tmp"
-    mv "conftest.tmp" "conftest.in"
-    cp "conftest.in" "conftest.nl"
-    printf "%s\n" 'EGREP' >> "conftest.nl"
-    "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || 
break
-    diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break
-    as_fn_arith $ac_count + 1 && ac_count=$as_val
-    if test $ac_count -gt ${ac_path_EGREP_max-0}; then
-      # Best one so far, save it but keep looking for a better one
-      ac_cv_path_EGREP="$ac_path_EGREP"
-      ac_path_EGREP_max=$ac_count
-    fi
-    # 10*(2^10) chars as input seems more than enough
-    test $ac_count -gt 10 && break
-  done
-  rm -f conftest.in conftest.tmp conftest.nl conftest.out;;
-esac
-
-      $ac_path_EGREP_found && break 3
-    done
-  done
-  done
-IFS=$as_save_IFS
-  if test -z "$ac_cv_path_EGREP"; then
-    as_fn_error $? "no acceptable egrep could be found in 
$PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5
-  fi
-else
-  ac_cv_path_EGREP=$EGREP
-fi
-
-   fi
-fi
-{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5
-printf "%s\n" "$ac_cv_path_EGREP" >&6; }
- EGREP="$ac_cv_path_EGREP"
-
-
-
 ac_fn_c_check_header_compile "$LINENO" "libintl.h" "ac_cv_header_libintl_h" 
"$ac_includes_default"
 if test "x$ac_cv_header_libintl_h" = xyes
 then :
@@ -6965,6 +6816,7 @@
 
 ac_libobjs=
 ac_ltlibobjs=
+U=
 for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue
   # 1. Remove the extension, and $U if already installed.
   ac_script='s/\$U\././;s/\.o$//;s/\.obj$//'
@@ -7401,7 +7253,7 @@
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by homebank $as_me 5.5.5, which was
+This file was extended by homebank $as_me 5.5.6, which was
 generated by GNU Autoconf 2.71.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -7469,7 +7321,7 @@
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config='$ac_cs_config_escaped'
 ac_cs_version="\\
-homebank config.status 5.5.5
+homebank config.status 5.5.6
 configured by $0, generated by GNU Autoconf 2.71,
   with options \\"\$ac_cs_config\\"
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/homebank-5.5.5/configure.ac 
new/homebank-5.5.6/configure.ac
--- old/homebank-5.5.5/configure.ac     2022-02-13 17:57:11.000000000 +0100
+++ new/homebank-5.5.6/configure.ac     2022-05-11 08:46:40.000000000 +0200
@@ -1,11 +1,11 @@
 #                                               -*- Autoconf -*-
 # Process this file with autoconf to produce a configure script.
 
-AC_PREREQ(2.52)
-AC_INIT([homebank], [5.5.5])
+AC_PREREQ(2.71)
+AC_INIT([homebank], [5.5.6])
 #AC_INIT([homebank], [x.x-rc])
 
-AM_CONFIG_HEADER(config.h)
+AC_CONFIG_HEADERS(config.h)
 
 AM_INIT_AUTOMAKE([1.9 foreign])
 
@@ -19,7 +19,7 @@
 AC_PROG_CC
 AC_PROG_LN_S
 AC_PROG_INSTALL
-AC_PROG_INTLTOOL
+IT_PROG_INTLTOOL
 
 # Checks for libraries.
 PKG_CHECK_MODULES(DEPS, gtk+-3.0 >= 3.16 glib-2.0 >= 2.39)
@@ -77,7 +77,6 @@
 AM_CONDITIONAL(NOOFX, test x$noofx = xtrue)
 
 # Checks for header files.
-AC_HEADER_STDC
 AC_CHECK_HEADERS([libintl.h locale.h stdlib.h string.h])
 
 # Checks for typedefs, structures, and compiler characteristics.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/homebank-5.5.5/data/Makefile.in 
new/homebank-5.5.6/data/Makefile.in
--- old/homebank-5.5.5/data/Makefile.in 2022-04-15 17:31:12.000000000 +0200
+++ new/homebank-5.5.6/data/Makefile.in 2022-05-19 22:49:30.000000000 +0200
@@ -231,13 +231,11 @@
 ECHO_C = @ECHO_C@
 ECHO_N = @ECHO_N@
 ECHO_T = @ECHO_T@
-EGREP = @EGREP@
 ETAGS = @ETAGS@
 EXEEXT = @EXEEXT@
 GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
 GMOFILES = @GMOFILES@
 GMSGFMT = @GMSGFMT@
-GREP = @GREP@
 INSTALL = @INSTALL@
 INSTALL_DATA = @INSTALL_DATA@
 INSTALL_PROGRAM = @INSTALL_PROGRAM@
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/homebank-5.5.5/data/datas/Makefile.in 
new/homebank-5.5.6/data/datas/Makefile.in
--- old/homebank-5.5.5/data/datas/Makefile.in   2022-04-15 17:31:12.000000000 
+0200
+++ new/homebank-5.5.6/data/datas/Makefile.in   2022-05-19 22:49:30.000000000 
+0200
@@ -172,13 +172,11 @@
 ECHO_C = @ECHO_C@
 ECHO_N = @ECHO_N@
 ECHO_T = @ECHO_T@
-EGREP = @EGREP@
 ETAGS = @ETAGS@
 EXEEXT = @EXEEXT@
 GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
 GMOFILES = @GMOFILES@
 GMSGFMT = @GMSGFMT@
-GREP = @GREP@
 INSTALL = @INSTALL@
 INSTALL_DATA = @INSTALL_DATA@
 INSTALL_PROGRAM = @INSTALL_PROGRAM@
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/homebank-5.5.5/doc/Makefile.in 
new/homebank-5.5.6/doc/Makefile.in
--- old/homebank-5.5.5/doc/Makefile.in  2022-04-15 17:31:12.000000000 +0200
+++ new/homebank-5.5.6/doc/Makefile.in  2022-05-19 22:49:30.000000000 +0200
@@ -231,13 +231,11 @@
 ECHO_C = @ECHO_C@
 ECHO_N = @ECHO_N@
 ECHO_T = @ECHO_T@
-EGREP = @EGREP@
 ETAGS = @ETAGS@
 EXEEXT = @EXEEXT@
 GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
 GMOFILES = @GMOFILES@
 GMSGFMT = @GMSGFMT@
-GREP = @GREP@
 INSTALL = @INSTALL@
 INSTALL_DATA = @INSTALL_DATA@
 INSTALL_PROGRAM = @INSTALL_PROGRAM@
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/homebank-5.5.5/doc/frm-main.html 
new/homebank-5.5.6/doc/frm-main.html
--- old/homebank-5.5.5/doc/frm-main.html        2022-04-18 10:21:49.000000000 
+0200
+++ new/homebank-5.5.6/doc/frm-main.html        2022-06-28 19:15:26.000000000 
+0200
@@ -10,8 +10,8 @@
        <div class="mainpage">
                <p><img src="images/web_title.png"><br></p>
 
-               <p>Version: 5.5.5<br>
-               Compilation date: Apr 18th, 2022</p><br>
+               <p>Version: 5.5.6<br>
+               Compilation date: Jun 28th, 2022</p><br>
 
                <p>&copy; Copyright 1995-2022 by Maxime Doyen<br>
                All Rights Reserved</p>
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/homebank-5.5.5/doc/images/Makefile.in 
new/homebank-5.5.6/doc/images/Makefile.in
--- old/homebank-5.5.5/doc/images/Makefile.in   2022-04-15 17:31:12.000000000 
+0200
+++ new/homebank-5.5.6/doc/images/Makefile.in   2022-05-19 22:49:30.000000000 
+0200
@@ -172,13 +172,11 @@
 ECHO_C = @ECHO_C@
 ECHO_N = @ECHO_N@
 ECHO_T = @ECHO_T@
-EGREP = @EGREP@
 ETAGS = @ETAGS@
 EXEEXT = @EXEEXT@
 GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
 GMOFILES = @GMOFILES@
 GMSGFMT = @GMSGFMT@
-GREP = @GREP@
 INSTALL = @INSTALL@
 INSTALL_DATA = @INSTALL_DATA@
 INSTALL_PROGRAM = @INSTALL_PROGRAM@
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/homebank-5.5.5/images/Makefile.in 
new/homebank-5.5.6/images/Makefile.in
--- old/homebank-5.5.5/images/Makefile.in       2022-04-15 17:31:12.000000000 
+0200
+++ new/homebank-5.5.6/images/Makefile.in       2022-05-19 22:49:30.000000000 
+0200
@@ -172,13 +172,11 @@
 ECHO_C = @ECHO_C@
 ECHO_N = @ECHO_N@
 ECHO_T = @ECHO_T@
-EGREP = @EGREP@
 ETAGS = @ETAGS@
 EXEEXT = @EXEEXT@
 GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
 GMOFILES = @GMOFILES@
 GMSGFMT = @GMSGFMT@
-GREP = @GREP@
 INSTALL = @INSTALL@
 INSTALL_DATA = @INSTALL_DATA@
 INSTALL_PROGRAM = @INSTALL_PROGRAM@
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/homebank-5.5.5/mime/Makefile.in 
new/homebank-5.5.6/mime/Makefile.in
--- old/homebank-5.5.5/mime/Makefile.in 2022-04-15 17:31:12.000000000 +0200
+++ new/homebank-5.5.6/mime/Makefile.in 2022-05-19 22:49:30.000000000 +0200
@@ -173,13 +173,11 @@
 ECHO_C = @ECHO_C@
 ECHO_N = @ECHO_N@
 ECHO_T = @ECHO_T@
-EGREP = @EGREP@
 ETAGS = @ETAGS@
 EXEEXT = @EXEEXT@
 GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
 GMOFILES = @GMOFILES@
 GMSGFMT = @GMSGFMT@
-GREP = @GREP@
 INSTALL = @INSTALL@
 INSTALL_DATA = @INSTALL_DATA@
 INSTALL_PROGRAM = @INSTALL_PROGRAM@
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/homebank-5.5.5/pixmaps/Makefile.in 
new/homebank-5.5.6/pixmaps/Makefile.in
--- old/homebank-5.5.5/pixmaps/Makefile.in      2022-04-15 17:31:12.000000000 
+0200
+++ new/homebank-5.5.6/pixmaps/Makefile.in      2022-05-19 22:49:30.000000000 
+0200
@@ -144,13 +144,11 @@
 ECHO_C = @ECHO_C@
 ECHO_N = @ECHO_N@
 ECHO_T = @ECHO_T@
-EGREP = @EGREP@
 ETAGS = @ETAGS@
 EXEEXT = @EXEEXT@
 GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
 GMOFILES = @GMOFILES@
 GMSGFMT = @GMSGFMT@
-GREP = @GREP@
 INSTALL = @INSTALL@
 INSTALL_DATA = @INSTALL_DATA@
 INSTALL_PROGRAM = @INSTALL_PROGRAM@
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/homebank-5.5.5/src/Makefile.in 
new/homebank-5.5.6/src/Makefile.in
--- old/homebank-5.5.5/src/Makefile.in  2022-04-15 17:31:12.000000000 +0200
+++ new/homebank-5.5.6/src/Makefile.in  2022-05-19 22:49:30.000000000 +0200
@@ -243,13 +243,11 @@
 ECHO_C = @ECHO_C@
 ECHO_N = @ECHO_N@
 ECHO_T = @ECHO_T@
-EGREP = @EGREP@
 ETAGS = @ETAGS@
 EXEEXT = @EXEEXT@
 GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
 GMOFILES = @GMOFILES@
 GMSGFMT = @GMSGFMT@
-GREP = @GREP@
 INSTALL = @INSTALL@
 INSTALL_DATA = @INSTALL_DATA@
 INSTALL_PROGRAM = @INSTALL_PROGRAM@
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/homebank-5.5.5/src/dsp-account.c 
new/homebank-5.5.6/src/dsp-account.c
--- old/homebank-5.5.5/src/dsp-account.c        2022-04-15 17:20:26.000000000 
+0200
+++ new/homebank-5.5.6/src/dsp-account.c        2022-06-20 23:17:34.000000000 
+0200
@@ -864,6 +864,10 @@
        
        gtk_image_set_from_icon_name(GTK_IMAGE(data->IM_reconchange), state == 
TRUE ? ICONNAME_CHANGES_ALLOW : ICONNAME_CHANGES_PREVENT, GTK_ICON_SIZE_BUTTON);
 
+       //5.6 add reconchange icon
+       list_txn_set_reconchange(GTK_TREE_VIEW(data->LV_ope), state);
+       gtk_widget_queue_draw (data->LV_ope);
+
        register_panel_update(data->LV_ope, GINT_TO_POINTER(FLG_REG_SENSITIVE));
 
        return FALSE;
@@ -2649,9 +2653,6 @@
        gtk_window_set_title (GTK_WINDOW (window), data->wintitle);
        gtk_window_set_icon_name(GTK_WINDOW (window), ICONNAME_HB_OPE_SHOW );
 
-       //#1965594
-       gtk_window_set_transient_for (GTK_WINDOW (window), GTK_WINDOW 
(GLOBALS->mainwindow));
-       
        // connect our dispose function
        g_signal_connect (window, "delete-event",
                G_CALLBACK (register_panel_dispose), (gpointer)data);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/homebank-5.5.5/src/hb-misc.c 
new/homebank-5.5.6/src/hb-misc.c
--- old/homebank-5.5.5/src/hb-misc.c    2022-02-06 10:42:58.000000000 +0100
+++ new/homebank-5.5.6/src/hb-misc.c    2022-06-18 21:22:54.000000000 +0200
@@ -41,8 +41,12 @@
 
 double hb_amount_round(const double x, unsigned int digits)
 {
-       digits = MAX(digits, 8);
-    return floor((x * fac[digits]) + 0.5) / fac[digits];
+       //fixed 5.6 MIN, not MAX... + 1977796
+       digits = MIN(digits, 8);
+
+       //1977796
+       //return floor((x * fac[digits]) + 0.5) / fac[digits];
+       return round((x * fac[digits])) / fac[digits];
 }
 
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/homebank-5.5.5/src/hb-transaction.c 
new/homebank-5.5.6/src/hb-transaction.c
--- old/homebank-5.5.5/src/hb-transaction.c     2022-01-01 17:40:56.000000000 
+0100
+++ new/homebank-5.5.6/src/hb-transaction.c     2022-06-02 18:50:21.000000000 
+0200
@@ -1043,7 +1043,9 @@
 
        //controls accounts valid (archive scheduled maybe bad)
        acc = da_acc_get(ope->kacc);
-       if(acc == NULL) return NULL;
+       //#1972078 forbid on a closed account
+       if( (acc == NULL) || (acc->flags & AF_CLOSED) )
+               return NULL;
 
        DB( g_print(" acc is '%s' %d\n", acc->name, acc->key) );
 
@@ -1052,7 +1054,9 @@
        if(ope->flags & OF_INTXFER)
        {
                acc = da_acc_get(ope->kxferacc);
-               if(acc == NULL) return NULL;
+               //#1972078 forbid on a closed account
+               if( (acc == NULL) || (acc->flags & AF_CLOSED) ) 
+                       return NULL;
                
                // delete any splits
                da_split_destroy(ope->splits);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/homebank-5.5.5/src/homebank.h 
new/homebank-5.5.6/src/homebank.h
--- old/homebank-5.5.5/src/homebank.h   2022-04-18 10:52:55.000000000 +0200
+++ new/homebank-5.5.6/src/homebank.h   2022-05-11 08:47:22.000000000 +0200
@@ -75,13 +75,13 @@
 
 #define HOMEBANK_MAJOR 5
 #define HOMEBANK_MINOR 5
-#define HOMEBANK_MICRO 5
+#define HOMEBANK_MICRO 6
 
-#define HB_VERSION             "5.5.5"
+#define HB_VERSION             "5.5.6"
 #define HB_VERSION_NUM (HOMEBANK_MAJOR*10000) + (HOMEBANK_MINOR*100) + 
HOMEBANK_MICRO
 
 #define FILE_VERSION           1.4
-#define PREF_VERSION           555
+#define PREF_VERSION           556
 
 #if HB_UNSTABLE == FALSE
        #define PROGNAME                "HomeBank"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/homebank-5.5.5/src/list-operation.c 
new/homebank-5.5.6/src/list-operation.c
--- old/homebank-5.5.5/src/list-operation.c     2022-04-15 17:14:16.000000000 
+0200
+++ new/homebank-5.5.6/src/list-operation.c     2022-06-28 19:06:22.000000000 
+0200
@@ -45,18 +45,16 @@
 /* This is not pretty. Of course you can also use a
    *  separate compare function for each sort ID value */
 
-static gint list_txn_sort_iter_compare_strings(gchar *s1, gchar *s2)
+static gint
+list_txn_sort_iter_compare_strings(gchar *s1, gchar *s2)
 {
        return hb_string_utf8_compare(s1, s2);
 }
 
 
-static   gint
-  list_txn_sort_iter_compare_func (GtkTreeModel *model,
-                          GtkTreeIter  *a,
-                          GtkTreeIter  *b,
-                          gpointer      userdata)
-  {
+static gint
+list_txn_sort_iter_compare_func (GtkTreeModel *model, GtkTreeIter *a, 
GtkTreeIter *b, gpointer userdata)
+{
     gint sortcol = GPOINTER_TO_INT(userdata);
     gint retval = 0;
        Transaction *ope1, *ope2;
@@ -184,7 +182,8 @@
 }
 
 
-static void list_txn_eval_future(GtkCellRenderer *renderer, Transaction *txn)
+static void
+list_txn_eval_future(GtkCellRenderer *renderer, Transaction *txn)
 {
        if(txn->date > GLOBALS->today)
        {
@@ -231,21 +230,16 @@
                g_object_set(renderer, "weight-set", FALSE,
                NULL);
        }
-
-
-       
 }
 
 
-/*
-** date cell function
-*/
-static void list_txn_status_cell_data_function (GtkTreeViewColumn *col, 
GtkCellRenderer *renderer, GtkTreeModel *model, GtkTreeIter *iter, gpointer 
user_data)
+static void 
+list_txn_status_cell_data_function (GtkTreeViewColumn *col, GtkCellRenderer 
*renderer, GtkTreeModel *model, GtkTreeIter *iter, gpointer user_data)
 {
-Transaction *txn;
+Transaction *ope;
 gchar *iconname = NULL;
 
-       gtk_tree_model_get(model, iter, MODEL_TXN_POINTER, &txn, -1);
+       gtk_tree_model_get(model, iter, MODEL_TXN_POINTER, &ope, -1);
 
        /*
                stat[0] = ( entry->ope_Flags & OF_ADDED  ) ? data->istatus[2] : 
data->istatus[0];
@@ -257,14 +251,14 @@
        switch(GPOINTER_TO_INT(user_data))
        {
                case 1:
-                       iconname = ( txn->flags & OF_AUTO  ) ? 
ICONNAME_HB_OPE_AUTO : ( txn->flags & OF_ADDED ) ? ICONNAME_HB_OPE_NEW : NULL;
+                       iconname = ( ope->flags & OF_AUTO  ) ? 
ICONNAME_HB_OPE_AUTO : ( ope->flags & OF_ADDED ) ? ICONNAME_HB_OPE_NEW : NULL;
                        break;
                case 2:
-                       iconname = ( txn->flags & OF_CHANGED  ) ? 
ICONNAME_HB_OPE_EDIT : NULL;
+                       iconname = ( ope->flags & OF_CHANGED  ) ? 
ICONNAME_HB_OPE_EDIT : NULL;
                        break;
                case 3:
-                       //iconname = ( txn->marker == TXN_MARK_DUPDST ) ? 
ICONNAME_HB_OPE_SIMILAR : NULL;
-                       iconname = ( txn->dspflags & TXN_DSPFLG_DUPDST ) ? 
ICONNAME_HB_OPE_SIMILAR : NULL;
+                       //iconname = ( ope->marker == TXN_MARK_DUPDST ) ? 
ICONNAME_HB_OPE_SIMILAR : NULL;
+                       iconname = ( ope->dspflags & TXN_DSPFLG_DUPDST ) ? 
ICONNAME_HB_OPE_SIMILAR : NULL;
                        break;
                /*case 3:
                        if( entry->flags & OF_VALID )
@@ -276,14 +270,13 @@
                        }
                        break;*/
        }
+
        g_object_set(renderer, "icon-name", iconname, NULL);
 }
 
 
-/*
-** account cell function
-*/
-static void list_txn_account_cell_data_function (GtkTreeViewColumn *col, 
GtkCellRenderer *renderer, GtkTreeModel *model, GtkTreeIter *iter, gpointer 
user_data)
+static void 
+list_txn_account_cell_data_function (GtkTreeViewColumn *col, GtkCellRenderer 
*renderer, GtkTreeModel *model, GtkTreeIter *iter, gpointer user_data)
 {
 Transaction *ope;
 Account *acc;
@@ -300,10 +293,8 @@
 }
 
 
-/*
-** match rate cell function
-*/
-static void list_txn_match_rate_cell_data_function (GtkTreeViewColumn *col, 
GtkCellRenderer *renderer, GtkTreeModel *model, GtkTreeIter *iter, gpointer 
user_data)
+static void 
+list_txn_match_rate_cell_data_function (GtkTreeViewColumn *col, 
GtkCellRenderer *renderer, GtkTreeModel *model, GtkTreeIter *iter, gpointer 
user_data)
 {
 Transaction *ope;
 gchar buffer[8];
@@ -315,10 +306,8 @@
 }
 
 
-/*
-** date cell function
-*/
-static void list_txn_date_cell_data_function (GtkTreeViewColumn *col, 
GtkCellRenderer *renderer, GtkTreeModel *model, GtkTreeIter *iter, gpointer 
user_data)
+static void 
+list_txn_date_cell_data_function (GtkTreeViewColumn *col, GtkCellRenderer 
*renderer, GtkTreeModel *model, GtkTreeIter *iter, gpointer user_data)
 {
 Transaction *ope;
 gchar buffer[256];
@@ -333,20 +322,19 @@
                g_date_strftime (buffer, 256-1, PREFS->date_format, &date);
                #if MYDEBUG
                gchar *ds = g_strdup_printf ("%s [%02d]", buffer, ope->pos );
-       g_object_set(renderer, "text", ds, NULL);
+               g_object_set(renderer, "text", ds, NULL);
                g_free(ds);
                #else
-       g_object_set(renderer, "text", buffer, NULL);
+               g_object_set(renderer, "text", buffer, NULL);
                #endif
        }
-    else
-       g_object_set(renderer, "text", "????", NULL);
+       else
+               g_object_set(renderer, "text", "????", NULL);
 }
 
-/*
-** info cell function
-*/
-static void list_txn_info_cell_data_function (GtkTreeViewColumn *col, 
GtkCellRenderer *renderer, GtkTreeModel *model, GtkTreeIter *iter, gpointer 
user_data)
+
+static void 
+list_txn_info_cell_data_function (GtkTreeViewColumn *col, GtkCellRenderer 
*renderer, GtkTreeModel *model, GtkTreeIter *iter, gpointer user_data)
 {
 Transaction *ope;
 
@@ -368,7 +356,8 @@
 }
 
 
-static void list_txn_payeexfer_cell_data_function (GtkTreeViewColumn *col, 
GtkCellRenderer *renderer, GtkTreeModel *model, GtkTreeIter *iter, gpointer 
user_data)
+static void 
+list_txn_payeexfer_cell_data_function (GtkTreeViewColumn *col, GtkCellRenderer 
*renderer, GtkTreeModel *model, GtkTreeIter *iter, gpointer user_data)
 {
 Transaction *ope;
 gchar *direction = "";
@@ -384,10 +373,8 @@
 }
 
 
-/*
-** payee cell function
-*/
-static void list_txn_payee_cell_data_function (GtkTreeViewColumn *col, 
GtkCellRenderer *renderer, GtkTreeModel *model, GtkTreeIter *iter, gpointer 
user_data)
+static void 
+list_txn_payee_cell_data_function (GtkTreeViewColumn *col, GtkCellRenderer 
*renderer, GtkTreeModel *model, GtkTreeIter *iter, gpointer user_data)
 {
 Transaction *ope;
 
@@ -410,10 +397,8 @@
 }
 
 
-/*
-** tags cell function
-*/
-static void list_txn_tags_cell_data_function (GtkTreeViewColumn *col, 
GtkCellRenderer *renderer, GtkTreeModel *model, GtkTreeIter *iter, gpointer 
user_data)
+static void 
+list_txn_tags_cell_data_function (GtkTreeViewColumn *col, GtkCellRenderer 
*renderer, GtkTreeModel *model, GtkTreeIter *iter, gpointer user_data)
 {
 Transaction *ope;
 gchar *str;
@@ -429,22 +414,19 @@
        }
        else
                g_object_set(renderer, "text", "", NULL);
-
-
 }
 
 
-/*
-** memo cell function
-*/
-static void list_txn_memo_cell_data_function (GtkTreeViewColumn *col, 
GtkCellRenderer *renderer, GtkTreeModel *model, GtkTreeIter *iter, gpointer 
user_data)
+
+static void 
+list_txn_memo_cell_data_function (GtkTreeViewColumn *col, GtkCellRenderer 
*renderer, GtkTreeModel *model, GtkTreeIter *iter, gpointer user_data)
 {
 Transaction *ope;
 
        gtk_tree_model_get(model, iter, MODEL_TXN_POINTER, &ope, -1);
        list_txn_eval_future(renderer, ope);
-       
-    g_object_set(renderer, "text", ope->memo, NULL);
+
+       g_object_set(renderer, "text", ope->memo, NULL);
 }
 
 
@@ -466,38 +448,50 @@
 }
 
 
-/*
-** clr cell function
-*/
 static void 
 list_txn_clr_cell_data_function (GtkTreeViewColumn *col, GtkCellRenderer 
*renderer, GtkTreeModel *model, GtkTreeIter *iter, gpointer user_data)
 {
+struct list_txn_data *data = NULL;
+GtkWidget *widget;
 Transaction *ope;
 gchar *iconname = NULL;
 //const gchar *c = "";
-       
+
+       widget = gtk_tree_view_column_get_tree_view(col);
+       if( widget )
+               data = g_object_get_data(G_OBJECT(widget), "inst_data");
+
        gtk_tree_model_get(model, iter, MODEL_TXN_POINTER, &ope, -1);
-       switch(ope->status)
+
+       switch(GPOINTER_TO_INT(user_data))
        {
-               /*case TXN_STATUS_CLEARED: c = "c"; break;
-               case TXN_STATUS_RECONCILED: c = "R"; break;
-               case TXN_STATUS_REMIND: c = "!"; break;*/
-               case TXN_STATUS_CLEARED:        iconname = 
ICONNAME_HB_OPE_CLEARED; break;
-               case TXN_STATUS_RECONCILED: iconname = 
ICONNAME_HB_OPE_RECONCILED; break;
-               case TXN_STATUS_REMIND:     iconname = ICONNAME_HB_OPE_REMIND; 
break;
-               case TXN_STATUS_VOID:     iconname = ICONNAME_HB_OPE_VOID; 
break;               
+               case 1:
+                       if( (data->reconchange == FALSE) && (ope->status == 
TXN_STATUS_RECONCILED) )
+                               iconname = ICONNAME_CHANGES_PREVENT;
+                       break;
+
+               case 2:
+               {
+                       switch(ope->status)
+                       {
+                               /*case TXN_STATUS_CLEARED: c = "c"; break;
+                               case TXN_STATUS_RECONCILED: c = "R"; break;
+                               case TXN_STATUS_REMIND: c = "!"; break;*/
+                               case TXN_STATUS_CLEARED:        iconname = 
ICONNAME_HB_OPE_CLEARED; break;
+                               case TXN_STATUS_RECONCILED: iconname = 
ICONNAME_HB_OPE_RECONCILED; break;
+                               case TXN_STATUS_REMIND:     iconname = 
ICONNAME_HB_OPE_REMIND; break;
+                               case TXN_STATUS_VOID:     iconname = 
ICONNAME_HB_OPE_VOID; break;               
+                       }
+               }
        }
 
        //g_object_set(renderer, "text", c, NULL);
        g_object_set(renderer, "icon-name", iconname, NULL);
-       
 }
 
 
-/*
-** amount cell function
-*/
-static void list_txn_amount_cell_data_function (GtkTreeViewColumn *col, 
GtkCellRenderer *renderer, GtkTreeModel *model, GtkTreeIter *iter, gpointer 
user_data)
+static void 
+list_txn_amount_cell_data_function (GtkTreeViewColumn *col, GtkCellRenderer 
*renderer, GtkTreeModel *model, GtkTreeIter *iter, gpointer user_data)
 {
 struct list_txn_data *data = NULL;
 GtkWidget *widget;
@@ -557,21 +551,19 @@
                g_object_set(renderer, "weight", PANGO_WEIGHT_BOLD, NULL);
        else
                g_object_set(renderer, "weight", PANGO_WEIGHT_NORMAL, NULL);
-
        
 }
 
 
-/*
-** category cell function
-*/
-static void list_txn_category_cell_data_function (GtkTreeViewColumn *col, 
GtkCellRenderer *renderer, GtkTreeModel *model, GtkTreeIter *iter, gpointer 
user_data)
+static void 
+list_txn_category_cell_data_function (GtkTreeViewColumn *col, GtkCellRenderer 
*renderer, GtkTreeModel *model, GtkTreeIter *iter, gpointer user_data)
 {
 struct list_txn_data *data = NULL;
 GtkWidget *widget;
 Transaction *ope;
 Category *cat;
-gchar *color, *text;
+gchar *color = NULL;
+gchar *text = NULL;
 
        widget = gtk_tree_view_column_get_tree_view(col);
        if( widget )
@@ -617,6 +609,46 @@
 /* = = = = = = = = = = = = = = = = */
 
 
+//#1967708 encode csv string: add string delimiter ", and doubled if inside
+static void list_txn_to_string_csv_text(GString *node, gchar *sep, gchar *text)
+{
+       if( text == NULL )
+       {
+               g_string_append (node, "");
+       }
+       else
+       {
+               //sep into string ?
+               if( g_strstr_len(text, -1, sep) == NULL )
+               {
+                       //no: put native text
+                       g_string_append (node, text);
+               }
+               else
+               {
+                       //yes: encode with string delimiter                     
+                       g_string_append_c (node, '"' );
+                       // " not inside inside ?
+                       if( g_strstr_len(text, -1, "\"") == NULL )
+                       {
+                               //no: put native text
+                               g_string_append (node, text);
+                       }
+                       else
+                       {
+                       //yes: double the text delimiter
+                       GString *dtext = g_string_new(text);
+                       
+                               g_string_replace(dtext, "\"", "\"\"", 0);
+                               g_string_append (node, dtext->str);
+                               g_string_free(dtext, TRUE);
+                       }
+                       g_string_append_c (node, '"' );
+               }
+       }
+}
+
+
 static void list_txn_to_string_line(GString *node, gchar sep, Transaction 
*ope, guint32 kcat, gchar *memo, gdouble amount, gboolean hasstatus, gboolean 
hasacc)
 {
 Payee *payee;
@@ -637,28 +669,29 @@
        hb_sprint_date(strbuf, ope->date);
        g_string_append (node, strbuf );
        g_string_append_c (node, sep );
-       
+
        //paymode
        g_snprintf(strbuf, sizeof (strbuf), "%d", ope->paymode);
        g_string_append (node, strbuf );
        g_string_append_c (node, sep );
 
        //info
-       g_string_append (node, (ope->info != NULL) ? ope->info : "" );
+       //g_string_append (node, (ope->info != NULL) ? ope->info : "" );
+       list_txn_to_string_csv_text(node, &sep, ope->info);
        g_string_append_c (node, sep );
-               
+
        //payee 
        payee = da_pay_get(ope->kpay);
-       g_string_append (node, (payee->name != NULL) ? payee->name : "");
+       //g_string_append (node, (payee->name != NULL) ? payee->name : "");
+       list_txn_to_string_csv_text(node, &sep, payee->name);
        g_string_append_c (node, sep );
 
        //memo
-       g_string_append (node, (memo != NULL) ? memo : "" );
+       //g_string_append (node, (memo != NULL) ? memo : "" );
+       list_txn_to_string_csv_text(node, &sep, memo);
        g_string_append_c (node, sep );
 
        //amount
-
-
        //#793719
        //g_ascii_dtostr (amountbuf, sizeof (amountbuf), ope->amount);
        //#1750257 use locale numdigit
@@ -680,7 +713,8 @@
        
        //category
        category = da_cat_get(kcat);
-       g_string_append (node, (category->fullname != NULL) ? 
category->fullname : "" );
+       //g_string_append (node, (category->fullname != NULL) ? 
category->fullname : "" );
+       list_txn_to_string_csv_text(node, &sep, category->fullname);
        g_string_append_c (node, sep );
 
        //tags
@@ -876,6 +910,15 @@
 }
 
 
+void list_txn_set_reconchange(GtkTreeView *treeview, gboolean reconchange)
+{
+struct list_txn_data *data;
+
+       data = g_object_get_data(G_OBJECT(treeview), "inst_data");
+
+       data->reconchange = reconchange;
+}
+
 void list_txn_set_warn_nocategory(GtkTreeView *treeview, gboolean warn)
 {
 struct list_txn_data *data;
@@ -1138,7 +1181,7 @@
                        }
                
                }
-       
+
                gtk_menu_attach_to_widget (GTK_MENU (menu), button, NULL);
                #if( (GTK_MAJOR_VERSION == 3) && (GTK_MINOR_VERSION >= 22) )
                gtk_menu_popup_at_pointer(GTK_MENU (menu), NULL);
@@ -1474,11 +1517,17 @@
        column = gtk_tree_view_column_new();
        gtk_tree_view_column_set_title(column, _("Status"));
 
-       //renderer = gtk_cell_renderer_text_new ();
+       renderer = gtk_cell_renderer_pixbuf_new ();
+       //gtk_cell_renderer_set_fixed_size(renderer, 
GLOBALS->lst_pixbuf_maxwidth, -1);
+       gtk_tree_view_column_pack_start(column, renderer, TRUE);
+       g_object_set(renderer, "xalign", 1.0, NULL);
+       gtk_tree_view_column_set_cell_data_func(column, renderer, 
list_txn_clr_cell_data_function, GINT_TO_POINTER(1), NULL);
+
        renderer = gtk_cell_renderer_pixbuf_new();
        gtk_tree_view_column_pack_start(column, renderer, TRUE);
        g_object_set(renderer, "xalign", 1.0, NULL);
-       gtk_tree_view_column_set_cell_data_func(column, renderer, 
list_txn_clr_cell_data_function, NULL, NULL);
+       gtk_tree_view_column_set_cell_data_func(column, renderer, 
list_txn_clr_cell_data_function, GINT_TO_POINTER(2), NULL);
+
        gtk_tree_view_column_set_reorderable(column, TRUE);
        gtk_tree_view_column_set_sort_column_id (column, LST_DSPOPE_CLR);
        //gtk_tree_view_column_set_sort_indicator (column, FALSE);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/homebank-5.5.5/src/list-operation.h 
new/homebank-5.5.6/src/list-operation.h
--- old/homebank-5.5.5/src/list-operation.h     2022-01-01 17:42:07.000000000 
+0100
+++ new/homebank-5.5.6/src/list-operation.h     2022-06-20 23:04:19.000000000 
+0200
@@ -41,6 +41,7 @@
        
        gint                            list_type;
        gboolean                        showall;
+       gboolean                        reconchange;
        gboolean                        warnnocategory;
        gboolean                        tvc_is_visible;
        gboolean                        save_column_width;
@@ -60,6 +61,7 @@
 
 GString *list_txn_to_string(GtkTreeView *treeview, gboolean isclipboard, 
gboolean hassplit, gboolean hasstatus, gboolean hasacc);
 
+void list_txn_set_reconchange(GtkTreeView *treeview, gboolean reconchange);
 void list_txn_set_save_column_width(GtkTreeView *treeview, gboolean 
save_column_width);
 void list_txn_sort_force(GtkTreeSortable *sortable, gpointer user_data);
 guint list_txn_get_quicksearch_column_mask(GtkTreeView *treeview);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/homebank-5.5.5/src/rep-balance.c 
new/homebank-5.5.6/src/rep-balance.c
--- old/homebank-5.5.5/src/rep-balance.c        2022-04-12 09:34:30.000000000 
+0200
+++ new/homebank-5.5.6/src/rep-balance.c        2022-06-02 18:24:21.000000000 
+0200
@@ -282,10 +282,10 @@
 
                        if( (ope->date >= data->filter->mindate) && (ope->date 
<= data->filter->maxdate) )
                        {
-
                                //#1907699 date is wrong
-                               //pos = report_interval_get_pos(tmpintvl, 
data->filter->mindate, ope);
-                               pos = report_interval_get_pos(tmpintvl, 
data->jbasedate, ope);
+                               //pos = report_interval_get_pos(tmpintvl, 
data->jbasedate, ope);
+                               //#1970020 but with #1958001 fix, it is
+                               pos = report_interval_get_pos(tmpintvl, 
data->filter->mindate, ope);
 
                                DB( g_print(" get '%s', pos=%d act=%d\n", 
ope->memo, pos, active) );
 
@@ -917,9 +917,6 @@
        //set the window icon
        gtk_window_set_icon_name(GTK_WINDOW (window), ICONNAME_HB_REP_BALANCE);
 
-       //#1965594
-       gtk_window_set_transient_for (GTK_WINDOW (window), GTK_WINDOW 
(GLOBALS->mainwindow));
-
        //window contents
        mainvbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
        gtk_container_add (GTK_CONTAINER (window), mainvbox);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/homebank-5.5.5/src/rep-budget.c 
new/homebank-5.5.6/src/rep-budget.c
--- old/homebank-5.5.5/src/rep-budget.c 2022-04-12 09:34:36.000000000 +0200
+++ new/homebank-5.5.6/src/rep-budget.c 2022-05-30 20:57:56.000000000 +0200
@@ -1198,9 +1198,6 @@
        //set the window icon
        gtk_window_set_icon_name(GTK_WINDOW (window), ICONNAME_HB_REP_BUDGET);
 
-       //#1965594
-       gtk_window_set_transient_for (GTK_WINDOW (window), GTK_WINDOW 
(GLOBALS->mainwindow));
-
        //window contents
        mainvbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
        gtk_container_add (GTK_CONTAINER (window), mainvbox);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/homebank-5.5.5/src/rep-stats.c 
new/homebank-5.5.6/src/rep-stats.c
--- old/homebank-5.5.5/src/rep-stats.c  2022-04-12 09:34:45.000000000 +0200
+++ new/homebank-5.5.6/src/rep-stats.c  2022-05-30 20:58:06.000000000 +0200
@@ -1460,9 +1460,6 @@
        gtk_window_set_title (GTK_WINDOW (window), _("Statistics Report"));
        gtk_window_set_icon_name(GTK_WINDOW (window), ICONNAME_HB_REP_STATS);
 
-       //#1965594
-       gtk_window_set_transient_for (GTK_WINDOW (window), GTK_WINDOW 
(GLOBALS->mainwindow));
-
        //window contents
        mainvbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
        gtk_container_add (GTK_CONTAINER (window), mainvbox);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/homebank-5.5.5/src/rep-time.c 
new/homebank-5.5.6/src/rep-time.c
--- old/homebank-5.5.5/src/rep-time.c   2022-04-12 09:34:54.000000000 +0200
+++ new/homebank-5.5.6/src/rep-time.c   2022-05-30 20:58:14.000000000 +0200
@@ -1188,10 +1188,6 @@
        //set the window icon
        gtk_window_set_icon_name(GTK_WINDOW (window), ICONNAME_HB_REP_TIME);
 
-       //#1965594
-       gtk_window_set_transient_for (GTK_WINDOW (window), GTK_WINDOW 
(GLOBALS->mainwindow));
-
-
        //window contents
        mainvbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
        gtk_container_add (GTK_CONTAINER (window), mainvbox);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/homebank-5.5.5/src/rep-vehicle.c 
new/homebank-5.5.6/src/rep-vehicle.c
--- old/homebank-5.5.5/src/rep-vehicle.c        2022-04-12 09:35:07.000000000 
+0200
+++ new/homebank-5.5.6/src/rep-vehicle.c        2022-05-30 20:58:24.000000000 
+0200
@@ -917,9 +917,6 @@
        //set the window icon
        gtk_window_set_icon_name(GTK_WINDOW (window), ICONNAME_HB_REP_CAR);
 
-       //#1965594
-       gtk_window_set_transient_for (GTK_WINDOW (window), GTK_WINDOW 
(GLOBALS->mainwindow));
-
        //window contents
        mainvbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
        gtk_container_add (GTK_CONTAINER (window), mainvbox);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/homebank-5.5.5/src/ui-account.c 
new/homebank-5.5.6/src/ui-account.c
--- old/homebank-5.5.5/src/ui-account.c 2022-01-01 17:40:56.000000000 +0100
+++ new/homebank-5.5.6/src/ui-account.c 2022-06-03 08:21:06.000000000 +0200
@@ -146,8 +146,14 @@
        if( entry != NULL && GTK_IS_ENTRY(entry) )
        {
        Account *item = da_acc_get(key);
-
-               hbtk_entry_set_text(GTK_ENTRY(entry), item != NULL ? item->name 
: "");
+       gchar *txt = "";
+       
+               //#1972078 forbid set a closed account
+               if( (item != NULL) && !(item->flags & AF_CLOSED) )
+               {
+                       txt = item->name;
+               }
+               hbtk_entry_set_text(GTK_ENTRY(entry), txt);
        }
 }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/homebank-5.5.5/src/ui-archive.c 
new/homebank-5.5.6/src/ui-archive.c
--- old/homebank-5.5.5/src/ui-archive.c 2022-04-17 17:28:06.000000000 +0200
+++ new/homebank-5.5.6/src/ui-archive.c 2022-06-21 07:54:39.000000000 +0200
@@ -419,7 +419,7 @@
 
        #if MYDEBUG == 1
        column = list_tpl_column_text_create(NULL, 0, 
list_tpl_cell_data_function_debugkey, NULL);
-       gtk_tree_view_append_column (GTK_TREE_VIEW(view), column);
+       gtk_tree_view_append_column (GTK_TREE_VIEW(treeview), column);
        #endif
 
        /* column: Scheduled icon */
@@ -1165,8 +1165,10 @@
        
        // listview
        scrollwin = gtk_scrolled_window_new(NULL,NULL);
-    gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrollwin), 
GTK_SHADOW_ETCHED_IN);
-       gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrollwin), 
GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);
+       gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrollwin), 
GTK_SHADOW_ETCHED_IN);
+       //gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrollwin), 
GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);
+       //#1970509 enable hscrollbar
+       gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrollwin), 
GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
        treeview = (GtkWidget *)list_tpl_new();
        data->LV_arc = treeview;
        gtk_widget_set_size_request(treeview, HB_MINWIDTH_LIST, -1);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/homebank-5.5.5/src/ui-split.c 
new/homebank-5.5.6/src/ui-split.c
--- old/homebank-5.5.5/src/ui-split.c   2022-01-01 17:40:56.000000000 +0100
+++ new/homebank-5.5.6/src/ui-split.c   2022-06-28 19:07:44.000000000 +0200
@@ -29,8 +29,6 @@
 #include "hb-split.h"
 
 
-
-
 /****************************************************************************/
 /* Debug macros                                                             */
 /****************************************************************************/
@@ -51,6 +49,8 @@
 
 
 /* = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = 
= = */
+
+
 static void list_split_number_cell_data_function (GtkTreeViewColumn *col, 
GtkCellRenderer *renderer, GtkTreeModel *model, GtkTreeIter *iter, gpointer 
user_data)
 {
 GtkTreePath *path;
@@ -78,7 +78,7 @@
        gtk_tree_model_get(model, iter, 0, &split, -1);
 
        //hb_strfmon(buf, G_ASCII_DTOSTR_BUF_SIZE-1, amount, ope->kcur, 
GLOBALS->minor);
-       format = g_object_get_data(G_OBJECT(col), "format");
+       format = g_object_get_data(G_OBJECT(col), "format_data");
        
        amount = split->amount;
        g_snprintf(buf, G_ASCII_DTOSTR_BUF_SIZE-1, format, amount);
@@ -145,7 +145,7 @@
        {
                split = da_splits_get(splits, i);
 
-               DB( g_print("- set split %d : %d, %.2f, %s\n", i, split->kcat, 
split->amount, split->memo) );
+               DB( g_print(" append split %d : %d, %.2f, '%s'\n", i, 
split->kcat, split->amount, split->memo) );
 
                gtk_list_store_append (GTK_LIST_STORE(model), &iter);
                gtk_list_store_set (GTK_LIST_STORE(model), &iter,
@@ -237,7 +237,7 @@
        g_object_set(renderer, "xalign", 1.0, NULL);
 
        column = gtk_tree_view_column_new_with_attributes(_("Amount"), 
renderer, NULL);
-       g_object_set_data(G_OBJECT(column), "format", format);
+       g_object_set_data(G_OBJECT(column), "format_data", format);
        
        gtk_tree_view_column_set_alignment (column, 1.0);
        gtk_tree_view_column_set_resizable(column, TRUE);
@@ -316,7 +316,7 @@
                gtk_tree_model_get (model, &iter, 0, &split, -1);
                split->pos = i;
 
-               DB( g_print("split pos: %d '%s' %.2f\n", i, split->memo, 
split->amount) );
+               DB( g_print(" split pos: %d '%s' %.2f\n", i, split->memo, 
split->amount) );
                
                i++; valid = gtk_tree_model_iter_next(GTK_TREE_MODEL(model), 
&iter);
        }
@@ -325,32 +325,26 @@
 }
 
 
-static void ui_split_dialog_cb_eval_split(GtkWidget *widget, gpointer 
user_data)
+static gboolean ui_split_dialog_cb_amount_focus_out (GtkEditable *spin_button, 
GdkEvent  *event, gpointer user_data)
 {
 struct ui_split_dialog_data *data;
-gboolean sensitive;
-gdouble amount;
 const gchar *txt;
-guint count;
-       
-       DB( g_print("\n[ui_split_dialog] eval split\n") );
 
-       data = 
g_object_get_data(G_OBJECT(gtk_widget_get_ancestor(GTK_WIDGET(widget), 
GTK_TYPE_WINDOW)), "inst_data");
+       DB( g_print("\n[ui_split_dialog] cb amount focus out\n") );
 
-       amount = g_strtod(gtk_entry_get_text(GTK_ENTRY(data->ST_amount)), NULL);
-       sensitive = hb_amount_round(amount, data->cur->frac_digits) != 0.0 ? 
TRUE : FALSE;
-       gtk_widget_set_sensitive (data->BT_apply, sensitive);
+       data = 
g_object_get_data(G_OBJECT(gtk_widget_get_ancestor(GTK_WIDGET(spin_button), 
GTK_TYPE_WINDOW)), "inst_data");
 
-       count = da_splits_length (data->tmp_splits);
-       sensitive = ( count >= TXN_MAX_SPLIT ) ? FALSE : TRUE;
-       gtk_widget_set_sensitive (data->BT_add, sensitive);
+       txt = gtk_entry_get_text(GTK_ENTRY(spin_button));
 
-       //#5.4.3 get a sign -/+
-       txt = gtk_entry_get_text(GTK_ENTRY(data->ST_amount));
-       data->amtsigned = (*txt == '-' || *txt == '+') ? TRUE : FALSE;
+       data->isopposite = FALSE;
+       if( ((data->txntype == TXN_TYPE_EXPENSE) && (*txt == '+')) || 
((data->txntype == TXN_TYPE_INCOME) && (*txt == '-')) )
+       {
+               data->isopposite = TRUE;
+       }
 
-       DB( g_print(" - txt='%s' amt=%.2f, signed=%d, nbsplit=%d\n", txt, 
amount, data->amtsigned, count) );
+       DB( g_print(" txt='%s'\n amt=%.8f\n opp=%d\n", txt, 
gtk_spin_button_get_value (GTK_SPIN_BUTTON(spin_button)), data->isopposite) );
 
+       return FALSE;
 }
 
 
@@ -375,8 +369,6 @@
        tmpval = (count > 1) ? TRUE : FALSE;
        gtk_widget_set_sensitive (data->BT_remall, (data->isedited) ? FALSE : 
tmpval);
 
-       ui_split_dialog_cb_eval_split(widget, NULL);
-       
        //btn: add/apply
        /*amount = gtk_spin_button_get_value(GTK_SPIN_BUTTON(data->ST_amount));
        tmpval = hb_amount_round(amount, 2) != 0.0 ? TRUE : FALSE;
@@ -406,18 +398,12 @@
 
        data = 
g_object_get_data(G_OBJECT(gtk_widget_get_ancestor(GTK_WIDGET(widget), 
GTK_TYPE_WINDOW)), "inst_data");
 
-       g_signal_handler_block(data->PO_cat, data->hid_cat);
-       g_signal_handler_block(data->ST_amount, data->hid_amt);
-
        //ui_cat_comboboxentry_set_active(GTK_COMBO_BOX(data->PO_cat), 0);
        ui_cat_entry_popover_set_active(GTK_BOX(data->PO_cat), 0);
        if( data->mode == SPLIT_MODE_EMPTY )
                gtk_spin_button_set_value(GTK_SPIN_BUTTON(data->ST_amount), 
0.0);
        gtk_entry_set_text(GTK_ENTRY(data->ST_memo), "");
 
-       g_signal_handler_unblock(data->ST_amount, data->hid_amt);
-       g_signal_handler_unblock(data->PO_cat, data->hid_cat);
-
        gtk_widget_grab_focus(data->ST_amount);
        
        data->isedited = FALSE;
@@ -477,7 +463,7 @@
 GtkTreeModel            *model;
 GtkTreeIter                     iter;
 
-       DB( g_print("\n[ui_split_dialog] apply\n") );
+       DB( g_print("--------\n[ui_split_dialog] apply\n") );
 
        data = 
g_object_get_data(G_OBJECT(gtk_widget_get_ancestor(GTK_WIDGET(widget), 
GTK_TYPE_WINDOW)), "inst_data");
 
@@ -488,6 +474,7 @@
        gdouble amount;
 
                gtk_tree_model_get(model, &iter, 0, &split, -1);
+               DB( g_print(" update spin\n") );
                gtk_spin_button_update (GTK_SPIN_BUTTON(data->ST_amount));
                amount = 
gtk_spin_button_get_value(GTK_SPIN_BUTTON(data->ST_amount));
                if(amount)
@@ -561,31 +548,34 @@
 guint count;
 gdouble amount;
 
-       DB( g_print("\n[ui_split_dialog] add\n") );
+       DB( g_print("--------\n[ui_split_dialog] add\n") );
 
        data = 
g_object_get_data(G_OBJECT(gtk_widget_get_ancestor(GTK_WIDGET(widget), 
GTK_TYPE_WINDOW)), "inst_data");
 
        count = da_splits_length (data->tmp_splits);
+       DB( g_print(" n_split: %d (of %d)\n", count, TXN_MAX_SPLIT) );
+       
        if( count <= TXN_MAX_SPLIT )
        {
-       gboolean amtsigned;
-       
                split = da_split_malloc ();
-               //preserve amtsigned, resetted with gtk_spin_button_update
-               amtsigned = data->amtsigned;
+               //5.4.4
+               DB( g_print(" update spin\n") );
                gtk_spin_button_update (GTK_SPIN_BUTTON(data->ST_amount));
                amount = 
gtk_spin_button_get_value(GTK_SPIN_BUTTON(data->ST_amount));
                if(amount)
                {
-                       //#5.4.3 force sign only if the input has no sign
-                       //#1880386      wish: revert ease to combine 
expense/income in splits dialog
-                       if( amtsigned == FALSE )
+                       //by default affect txntype sign
+                       if( data->txntype == TXN_TYPE_EXPENSE && amount > 0 )
                        {
-                               //#1848604 force sign according txn type
-                               if( hb_amount_type_match(amount, data->txntype) 
== FALSE)
-                                       amount *= -1;
+                               DB( g_print(" force expense\n") );
+                               amount *= -1;
+                       }
+                       //but take opposite into account
+                       if( data->isopposite == TRUE )
+                       {
+                               DB( g_print(" force opposite\n") );
+                               amount *= -1;
                        }
-
                        //split->amount = amount;
                        //#1910819 must round frac digit
                        split->amount = hb_amount_round(amount, 
data->cur->frac_digits);
@@ -594,7 +584,7 @@
                        split->kcat = 
ui_cat_entry_popover_get_key_add_new(GTK_BOX(data->PO_cat));
                        split->memo = g_strdup((gchar 
*)gtk_entry_get_text(GTK_ENTRY(data->ST_memo)));
 
-                       DB( g_print("- get split : %d, %.2f, %s\n", 
split->kcat, split->amount, split->memo) );
+                       DB( g_print(" append split : %d, %.2f, %s\n", 
split->kcat, split->amount, split->memo) );
 
                        da_splits_append (data->tmp_splits, split);
 
@@ -612,7 +602,10 @@
                        da_split_free(split);
                }
        }
-       //todo: msg max number reached
+       else
+       {
+               g_warning("split error: limit of %d reached", TXN_MAX_SPLIT);
+       }
        
        ui_split_dialog_edit_end(widget, user_data);
        ui_split_dialog_update (widget, user_data);
@@ -627,6 +620,10 @@
 
        data = 
g_object_get_data(G_OBJECT(gtk_widget_get_ancestor(GTK_WIDGET(widget), 
GTK_TYPE_WINDOW)), "inst_data");
 
+       //we trigger the focus-out-event on spinbutton, with grab the add button
+       //because we also do things before the legacy spinbutton fucntion
+       gtk_widget_grab_focus(data->BT_add);
+
        if( data->isedited == TRUE )
                ui_split_dialog_apply_cb(widget, NULL);
        else
@@ -634,7 +631,7 @@
 }
 
 
-static void ui_split_rowactivated (GtkTreeView *treeview, GtkTreePath *path, 
GtkTreeViewColumn *col, gpointer user_data)
+static void ui_split_rowactivated(GtkTreeView *treeview, GtkTreePath *path, 
GtkTreeViewColumn *col, gpointer user_data)
 {
        DB( g_print("\n[ui_split_dialog] rowactivated\n") );
 
@@ -687,7 +684,7 @@
        }
        count = i;
 
-       DB( g_print("- count=%d, nbvalid=%d\n", count, nbvalid ) );
+       DB( g_print(" n_count=%d, n_valid=%d\n", count, nbvalid ) );
        
        data->remsplit = data->amount - data->sumsplit;
 
@@ -753,7 +750,7 @@
        count = da_splits_length(data->tmp_splits);
        data->nbsplit = count > 1 ? count-1 : 0;
 
-       DB( g_print("- count = %d\n", count) );
+       DB( g_print(" n_count = %d\n", count) );
        list_split_populate (data->LV_split, data->tmp_splits);
 
        data->isedited = FALSE;
@@ -790,7 +787,7 @@
                                            NULL);
 
        //store our dialog private data
-       DB( g_print(" - window=%p\n", dialog) );
+       DB( g_print(" window=%p\n", dialog) );
 
     g_signal_connect (dialog, "destroy",
                        G_CALLBACK (gtk_widget_destroyed), &dialog);
@@ -860,7 +857,7 @@
 
        //store our dialog private data
        g_object_set_data(G_OBJECT(dialog), "inst_data", (gpointer)data);
-       DB( g_print(" - window=%p, inst_data=%p\n", dialog, data) );
+       DB( g_print(" window=%p, inst_data=%p\n", dialog, data) );
 
     g_signal_connect (dialog, "destroy",
                        G_CALLBACK (gtk_widget_destroyed), &dialog);
@@ -882,6 +879,10 @@
        data->amount = amount;
        data->sumsplit = amount;
 
+       DB( g_print(" amount : %f\n", data->amount) );
+       DB( g_print(" txntype: %s\n", data->txntype == TXN_TYPE_EXPENSE ? 
"expense" : "income" ));
+       DB( g_print(" mode   : %s\n", data->mode == SPLIT_MODE_AMOUNT ? 
"amount" : "empty" ));
+
        if( *src_splits != NULL )
                data->tmp_splits = da_splits_clone(*src_splits); 
        else
@@ -1027,22 +1028,14 @@
        g_signal_connect 
(gtk_tree_view_get_selection(GTK_TREE_VIEW(data->LV_split)), "changed", 
G_CALLBACK (ui_split_selection), data);
        g_signal_connect (GTK_TREE_VIEW(data->LV_split), "row-activated", 
G_CALLBACK (ui_split_rowactivated), data);
 
-       g_signal_connect (data->ST_memo, "insert-text", 
G_CALLBACK(ui_split_dialog_filter_text_handler), data);
-       
-       //data->hid_cat = g_signal_connect (data->PO_cat , "changed"    , 
G_CALLBACK (ui_split_dialog_cb_eval_split), data);
-       data->hid_cat = g_signal_connect 
(ui_cat_entry_popover_get_entry(GTK_BOX(data->PO_cat)), "changed"    , 
G_CALLBACK (ui_split_dialog_cb_eval_split), data);
-
-       data->hid_amt = g_signal_connect (data->ST_amount, "changed", 
G_CALLBACK (ui_split_dialog_cb_eval_split), data);
-       //data->hid_amt = g_signal_connect (data->ST_amount, "value-changed", 
G_CALLBACK (ui_split_dialog_cb_eval_split), data);
-
-       //todo: add enter validate
-       g_signal_connect (data->ST_amount, "activate", G_CALLBACK 
(ui_split_dialog_cb_activate_split), NULL);
-
-       
        g_signal_connect (data->BT_edit  , "clicked", G_CALLBACK 
(ui_split_dialog_edit_start), NULL);
        g_signal_connect (data->BT_rem   , "clicked", G_CALLBACK 
(ui_split_dialog_delete_cb), NULL);
        g_signal_connect (data->BT_remall, "clicked", G_CALLBACK 
(ui_split_dialog_deleteall_cb), NULL);
 
+       g_signal_connect (data->ST_memo  , "insert-text", 
G_CALLBACK(ui_split_dialog_filter_text_handler), data);
+       g_signal_connect (data->ST_amount, "focus-out-event", G_CALLBACK 
(ui_split_dialog_cb_amount_focus_out), data);
+       g_signal_connect (data->ST_amount, "activate", G_CALLBACK 
(ui_split_dialog_cb_activate_split), NULL);
+
        g_signal_connect (data->BT_add   , "clicked", G_CALLBACK 
(ui_split_dialog_add_cb), NULL);
        g_signal_connect (data->BT_apply , "clicked", G_CALLBACK 
(ui_split_dialog_apply_cb), NULL);
        g_signal_connect (data->BT_cancel, "clicked", G_CALLBACK 
(ui_split_dialog_cancel_cb), NULL);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/homebank-5.5.5/src/ui-split.h 
new/homebank-5.5.6/src/ui-split.h
--- old/homebank-5.5.5/src/ui-split.h   2022-01-01 17:41:01.000000000 +0100
+++ new/homebank-5.5.6/src/ui-split.h   2022-06-20 22:42:44.000000000 +0200
@@ -56,17 +56,14 @@
        Currency        *cur;
         
        gdouble         amount;
-       gboolean        amtsigned;
+       gboolean        isopposite;     
+
        gdouble         sumsplit;
        gdouble         remsplit;
 
        gboolean        isedited;
        gint            nbsplit;
        gint            activeline;
-
-       gulong          hid_cat;
-       gulong          hid_amt;
-       
 };
 
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/homebank-5.5.5/themes/Makefile.in 
new/homebank-5.5.6/themes/Makefile.in
--- old/homebank-5.5.5/themes/Makefile.in       2022-04-15 17:31:12.000000000 
+0200
+++ new/homebank-5.5.6/themes/Makefile.in       2022-05-19 22:49:30.000000000 
+0200
@@ -200,13 +200,11 @@
 ECHO_C = @ECHO_C@
 ECHO_N = @ECHO_N@
 ECHO_T = @ECHO_T@
-EGREP = @EGREP@
 ETAGS = @ETAGS@
 EXEEXT = @EXEEXT@
 GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
 GMOFILES = @GMOFILES@
 GMSGFMT = @GMSGFMT@
-GREP = @GREP@
 INSTALL = @INSTALL@
 INSTALL_DATA = @INSTALL_DATA@
 INSTALL_PROGRAM = @INSTALL_PROGRAM@
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/homebank-5.5.5/themes/hicolor/Makefile.in 
new/homebank-5.5.6/themes/hicolor/Makefile.in
--- old/homebank-5.5.5/themes/hicolor/Makefile.in       2022-04-15 
17:31:12.000000000 +0200
+++ new/homebank-5.5.6/themes/hicolor/Makefile.in       2022-05-19 
22:49:30.000000000 +0200
@@ -142,13 +142,11 @@
 ECHO_C = @ECHO_C@
 ECHO_N = @ECHO_N@
 ECHO_T = @ECHO_T@
-EGREP = @EGREP@
 ETAGS = @ETAGS@
 EXEEXT = @EXEEXT@
 GETTEXT_PACKAGE = @GETTEXT_PACKAGE@
 GMOFILES = @GMOFILES@
 GMSGFMT = @GMSGFMT@
-GREP = @GREP@
 INSTALL = @INSTALL@
 INSTALL_DATA = @INSTALL_DATA@
 INSTALL_PROGRAM = @INSTALL_PROGRAM@

Reply via email to