From a8651df25ddfeaa73a5520cd4bdb124fa558c7b4 Mon Sep 17 00:00:00 2001
From: Volker Fischer <corrados@users.noreply.github.com>
Date: Tue, 7 Jul 2020 16:24:35 +0200
Subject: [PATCH 1/7] updates

---
 ChangeLog                                |   7 +++++--
 src/res/translation/translation_de_DE.qm | Bin 104292 -> 104357 bytes
 src/res/translation/translation_de_DE.ts |   6 +++---
 src/res/translation/translation_es_ES.qm | Bin 104235 -> 104733 bytes
 src/res/translation/translation_es_ES.ts |   6 +++---
 src/res/translation/translation_fr_FR.ts |   6 +++---
 src/res/translation/translation_it_IT.ts |   6 +++---
 src/res/translation/translation_nl_NL.ts |   6 +++---
 src/res/translation/translation_pl_PL.ts |   6 +++---
 src/res/translation/translation_pt_BR.ts |   6 +++---
 src/res/translation/translation_pt_PT.ts |   6 +++---
 src/res/translation/translation_sv_SE.ts |   6 +++---
 12 files changed, 32 insertions(+), 29 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index f12a6da4a4..5d649cde04 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -25,11 +25,14 @@
 
 TODO add new register message which contains version and, e.g., max number of clients
 
-TODO Inconsistency between Input meter and Audio mixer meter #423
-
 TODO improve settings management -> move settings class in client/server classes, move actual settings variables
 TODO store recorder settings (#313)
 
+TODO Inconsistency between Input meter and Audio mixer meter #423
+
+
+
+
 
 
 
diff --git a/src/res/translation/translation_de_DE.qm b/src/res/translation/translation_de_DE.qm
index ece9d794e45e1be0faeb5f2c06d704ec80b7ee07..4a23706ccd83475b1426d4beb0719e338d2046fc 100644
GIT binary patch
delta 475
zcmXAkO-Pdg9EbnE_ubxi@8>qzcrjR0v1|vGT`~h(LAgHIcF;5r1JMmh*eq(%p=FYG
ztE4|Mqc4&qDr#7SUW{lAk3zVEgbvamNXkP-7=s3#9)9o~e$U2hX(lgCdN4Wbm4RjU
zAu62pa|$_kgiaJ%2{pZRa{pbz)ko|VehcU7*bvjg<-MF0!<gct_!!?fX&b>sF4_FG
zTcT9_S+zfkzQ4PP`Yo}3ewZ*i%!a*1O&Q{BrkybHfREV^si!@*_|qSR{z1NJU&0{A
zB@21ZNS#8Wju)!q7MG+Z3~)sX;W>B6X`#>JSMnm(IO7;qzR14gF+$IIt~f$C!yQVS
zJ1S3=-xKZV@;yCD=qvDq5<@4Kly*7#W}DFcnGH3ME?!WV+~3v2&<4?!H8rtaeUdHk
zLoI|AUe$&IZ#CNsi>T|M<`7R2*#yni*g}ZswYJCwqRoI7K5~ta32;ikB%}}USG`<2
zuHRWF!kDG=K9fj!so$^vKo}45s&N}JPMP6q=sVMoG?&aKjBv$l#V2ld`m0e9XHP@6
z+01Uv5Cs=a_6`ts-7ug0c}6(g@SnXR7o9omaNKnizphWa=B8aJcXQ*`o?J~5p1H9k
H)`R~5ScI3q

delta 415
zcmV;Q0bu^6uLk6<29Oj1h_Mw10Rfwn9RW@PXy%h`0hbXJ07=6y009zL07^EM00Dkw
zlNAE?0&nM&4FhfhckPpX14jX0lf?s{0k4x~1aAR5lhp(t8Mgxl#qR(Ceu)De`yK!Q
zU>5@+xM~0ae=(B{1uhC~)B~|~IRF8LW0OS%J_=OZ1YM-=00CeslZ^$>0V<PS1{VQ#
zlXV700%PZsy#^NnRg={QCjlvw{RTe)aFaa;ZUR`|ldT8G0i~052!9Ew2OUUH00CAw
zll=%k0Uwh+2{#cH2bkZ!008<72bl~`00CKwlZ6RS0S%MY2|1G%3a$Yflf??p5wZ$o
zXXF3?eBKIV_3i)xeTtK%3qJv%ljRF%0eX{73>Oi03pY)3008VM3r9hK00DIHlXVPs
z0&V}3?F`=;OAM0Z0004i-VBo{4gdfNs|=eVzyJY*_><)gj{z2wbq+@XDwDkq9|1L!
z-3})KHj@PpF9Dg8H4h&FrIS?;RswwVldTUP0#?eC%@3CW!INbWL;<^lst~uT5CPv*
Jx58xs<1rP=h}{4H

diff --git a/src/res/translation/translation_de_DE.ts b/src/res/translation/translation_de_DE.ts
index 42c9a5f63c..bac96ff908 100644
--- a/src/res/translation/translation_de_DE.ts
+++ b/src/res/translation/translation_de_DE.ts
@@ -3220,17 +3220,17 @@
 <context>
     <name>QCoreApplication</name>
     <message>
-        <location filename="../../util.cpp" line="1578"/>
+        <location filename="../../util.cpp" line="1585"/>
         <source>, Version </source>
         <translation>, Version </translation>
     </message>
     <message>
-        <location filename="../../util.cpp" line="1591"/>
+        <location filename="../../util.cpp" line="1598"/>
         <source>Internet Jam Session Software</source>
         <translation>Internet Jam Session Software</translation>
     </message>
     <message>
-        <location filename="../../util.cpp" line="1595"/>
+        <location filename="../../util.cpp" line="1602"/>
         <source>Released under the GNU General Public License (GPL)</source>
         <translation>Unter der GNU General Public License (GPL)</translation>
     </message>
diff --git a/src/res/translation/translation_es_ES.qm b/src/res/translation/translation_es_ES.qm
index 22b9bdf0e09f532574dd22ad7a2dde204ab2a802..a8eebce72d463e8311d89f93f2cf626a93112bd9 100644
GIT binary patch
delta 3807
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

delta 3457
zcmX9=d0b5EAAa65=giDGXXZ>K$}*HKTZL>PvbHExvPMdY+of#bW+p#!xyUlsD@$%A
zNw!=|q-%@IFIlqv?Ac1PRb>5r)nCu&oipdW-|zE%p67kH9#rqiQm?MZ3fI^SW*yc9
zk8HCW{EB@*VGj6hivbtkS`4`ae#bE|)ok!DSA%IB*W5RnOV2}aO#tiG2SQ&9aAO68
zK|_HZBO!Qp0UMD5VMr>_gq{Zt1iaeTAQPWM7(D_^vW2kN02q@YBn!aJ62k95I=%lB
zZ#h6na|Rp$AuAdzaxjFPg<!f4P`B}eWj=Fb)|SJpRlo8G41UN1y&l&fYjqZ$2?j9s
z7rZ7tq`GBzt)BuG)Dm82oN4U_@2=~?OpW0k+YhW&g{28+l!Wi_Jx2`%I9mpCP0juo
z^{oO3U5e2!6MzrS7}Kmhm3<h&YI`ap5y7M52;U&oI}&&jg}5Z5VZv*yIlT>7^cmY@
zbAhlGNLe)yjI+Zo$LoMJ2<gsFfNCBx{&^3kJ%WAx1HpQx;cB865Zk{N&4urAt)(9o
z@C`R|5@~~SJjw@fZ7rUSbOe4&!HZ3O!KM$wn`$@U>cARg{;sHOQw+R*&xChpX(Ptu
z)=prJ{$%=xo2dI#X8n9WSd((r<JX-)b6@7^`V!235ev?221I{mVasN~5~{K{$9l8v
z0fj)f^(;BZ2sXf)rPrMbXs)vJYXgCcC)xRZSzv>vv71$A!5Xe)j|0AfsrRsFp;^F}
z`s_tOF4%7pd$&{s8i%mzrXPVu5u7x9Jn(BhPBwf7hR1SNm6L%YN6zNLVBmTr*HE#A
z8FR*R4o_x)A)V_}+!;*ZxKRm2$^<8FOm|{=a2^-)Wg3`m8aMlv324A^=K1vDTlcy6
zj|vdgnp=iR)bs;x<BD;>E)%!YYXlW=mrGqpQjTcGW&D%^dU6>%jezACmu2V#*q-9D
zK1b77>Sc3(M}hDgm-}WkSnoLQRJ+4K))MX?C(=|GAMRpKI3Oo+#s0+Vu!G$5*Ho~7
zK36#_4oHry#T)rtm6^n~=$hp|Z}ea6r&6DLLlPXKYVw8l9apWgKRT7xRVvr<?qHn`
zsr-w!k?K-Zvw~bn+D%jm$HRd4b5zT`3y8Q?sttSo1dH-f9hlt%EJ3pP3hw5BJU%$3
z9Bjf^{ukFgATEcWn|=pqx0Ih36++?xKQCz(Q0~gddAR@^6ZnOXTY<S<;n!DpA^wYN
z@l_0;H0Ctm+PW4)Ht;F&*T_-V_|%1-K*~lw&36$PZ_8&~zYRR@P=jXHSIuYc2?pl1
z<uk9WCs97)_n)D*`9l6c+j!#fDSzOS6EJ-qe<f-iP@k_sCj846y3vNW%WAQ7HGli;
zCV<<{-?Nwquk!beM1P<)|LAUWAm#-B;vW)bsSE$g)dUuA$5(vnYX<gZ@|8Y`RC%hP
z{2)8di>X1@+*Ppg3<neU2=!ai^RYjK7XCrN#AAYUQxZtCb3&(NQh3-P!R>7puvH`U
z)OQB7MMAIOY_O4w1^3TG!Ssp3;IA!-$2~%zfn0a5tq^3PIq&okLZ-DOo5kM~BDuw2
z!##zmy%mbD>B28v8k5aZh3P+iK3rw#pfT3%mMtuu@)u>&GGW=YL@?(8mSByOcj+e~
zDT#Q{$JFA@v4l^+tPcyx+B^!!hC=f1r1v(SLdJzt)NYJ$_QwOTQP#o*udhJK2ca<Z
zJEhV|OOeLIEO)&Dbb6z<ji)$NN2u+NJ^)^ZtA})^**Kq6kM=D9lwRuKqC}u~9d$^Z
zHWU=C)Dvx90(0`!rZH5p$4qs?um%*=Uh3_ZPbB^4>eRfEH1sreS_0K{Hd>w0Lr2;y
zRcFSygH7SpM|Ot*x-={GsX$Vd?SdL)ns1i9S|^8|#p(}v<AD|ibyY)GvW!~&u_;l|
zuaWvkV`9*1vgMoB=nzq*Y2rzYj|k9ot)5F3t=4!nB}<q(YW$jJf%RHz=`9*VU4LjM
zR8z;n<1{masoU5WHOT6J)y#IJwLVi5`?E`{Cz{2o@nFsKG;1%Aa^jpd>o-$;j+&v_
z^e~s=(xTa{^8*_#YHAp-7p~cwZzSc;vz!!-W__UM@!x%D{tY$7pU;5R_tTU#H3FW+
zTHXC}I-N{ft891RPPo>2@iR)g4>icdiQ10C4*~<PXgg)mHear5eI^%B?7z~Ev?C{N
zo2iXFe-5ZyR)dU9)W+2OKSmof<r1*qh&HCk8<we3UGp04A8Aw(7p`4>hdQu!(OM4D
z96v;8_iI*=i92eKg_*!SgSF?^(>zlhwE3pDK&7XsoGJ&-bQP`J&jRaSA=(wJ1qS_B
zY!ST(C}U#V;eNm`nPQLmyXe5q5_?-wE1PzT?hT2Nxm(3StPagb{YLZ&KThd!TO9Mr
zoeH@rhOMatlk>!|SI@{>Eybv@Ci>ttaan`|Fsw@aqc?d-bP!kD&jP-uTYAezbFXgV
ziOX~nhS-azf~g+CL(FeV6uFKPFBZ5^)GikbI#Rtpsba}|qDt*7R;Q4aUv(9~^r61S
zR7!>)^t{?vYQDu4==nd%^AdgUiMAHYrb<Cub4d{orAd>Y0&_#9NtHCB1^uOPFP;vS
zlEYHuunTmpu#zH6Xah`_B0qg30yj!gWAD(&y`^bScY`@BlA^!;4%YX!G{cj^dEp4@
zH!s>a98y}KEwG)FGA2>_-7!j;AE*JlUDA=Dqm+)ablgP%-n^Dhtf0Q<3sSC?6B+1=
zbhf^RLaM%-bYU-5s97gnt}`CY=ekt1geq*@PAYNP2KYCSN=1><E?nj_$a%vy$Xb;T
zg^sOk)xrsET#4MxcP8-gpgh<k9&A=~Il#6(6|`E8=+q1NVUlAyli2QB<d~lqpDr8Z
zn1=<xfFbhSQr`fIVLN&Gl2Dr5KzU^eg;igZyw0VX&WZkV(x7$pdzHL3%@3H;PTt<9
zf*jnl2AL*MPFqDcCTW1Yx2FR3>rzWgeQWbjxv+#*eS+k>d+w1pw#kot27}r3lOGN1
zM?y8%AmcX3ReTv~f2OW(#SIeTeqFso99U}yU6TdWwo8%DxT=x{on3>hPp-~bJqdWk
z>)Mpp1v(GVwQoP0!fmw9bD)-Z&DMFJrU9F8jn?^JAVIp<(*<v!LKH<eHOGzy*hn|E
zn1~Ow(?y-2=YD5&(a&h3ox5~1ZWe;gIIde;Ol-t&)L9%A66#9b7W+Ipq*v*381Wl=
zv=(nB>COxwr4E0rJ2&bs&}@?K;sN@8SA*_fMrS|#({z`$bUo?mVHu$~x!KFQ>R_T#
z+gq>P-UZg9ufFjv5=4?+4YGhReFwYmU>#%hU0-E^%?{W5EKj5i>SsBrw6?3SpHWo~
zjNGS>?LQufxS-#%;R9Is0n0bVXdaiRKa*DgWIO2dBf_YNhx&q0T92%wzhX;A<J(sH
z7q6VaCU4Z2hS2ZRnf{%dAKkyl>MOGSz*=rsG~eq|l3i6ATqy_EuTvULCY1-}Dvh-n
zK*bHk(PRR0x+{)lNr3%f#l^-57IIhV79Rj>*5f})5BU$^(>KMvoNVHI*|OK*WPW>9
znU?;YrZ``TR%MfDhbaq|(R*?E%7U^~pyO*Leg<7xTC7tnHb1quKuP{Y<aC=_iz99+
zyEg}tYUV1r*Af9ocjdNCH?Rgzl_#1Obn}vxQd2H)qEabaM*TIIu2eL6LiXOFe9X*(
zWsH@bSt>KQH;*SpI2$}JzNcu3H4K?Y3UL}}m~fM*To`4TxSTNkx*_7f=SasULtIgJ
zI$qxyR&3!Y5{DXAYNi3|6Nb$V#?xS`45ulr(RaGxw3+7Hqu6jgF`X2dYq(+afRb>t
z;nhb!;7^^Q%1VJPYdyzM-E|Bp?uwy0a~fFNr)0k+Zil2gK{pO<fA+-g@O`!-{K$?7
IwxHAh0a*wPrvLx|

diff --git a/src/res/translation/translation_es_ES.ts b/src/res/translation/translation_es_ES.ts
index df9a9977cc..50699f9867 100644
--- a/src/res/translation/translation_es_ES.ts
+++ b/src/res/translation/translation_es_ES.ts
@@ -3240,17 +3240,17 @@
 <context>
     <name>QCoreApplication</name>
     <message>
-        <location filename="../../util.cpp" line="1578"/>
+        <location filename="../../util.cpp" line="1585"/>
         <source>, Version </source>
         <translation>, Versión </translation>
     </message>
     <message>
-        <location filename="../../util.cpp" line="1591"/>
+        <location filename="../../util.cpp" line="1598"/>
         <source>Internet Jam Session Software</source>
         <translation>Internet Jam Session Software</translation>
     </message>
     <message>
-        <location filename="../../util.cpp" line="1595"/>
+        <location filename="../../util.cpp" line="1602"/>
         <source>Released under the GNU General Public License (GPL)</source>
         <translation>Publicado bajo la GNU General Public License (GPL)</translation>
     </message>
diff --git a/src/res/translation/translation_fr_FR.ts b/src/res/translation/translation_fr_FR.ts
index a15c883107..052542ef63 100644
--- a/src/res/translation/translation_fr_FR.ts
+++ b/src/res/translation/translation_fr_FR.ts
@@ -3232,17 +3232,17 @@
 <context>
     <name>QCoreApplication</name>
     <message>
-        <location filename="../../util.cpp" line="1578"/>
+        <location filename="../../util.cpp" line="1585"/>
         <source>, Version </source>
         <translation>, version </translation>
     </message>
     <message>
-        <location filename="../../util.cpp" line="1591"/>
+        <location filename="../../util.cpp" line="1598"/>
         <source>Internet Jam Session Software</source>
         <translation>Logiciel de bœuf sur Internet</translation>
     </message>
     <message>
-        <location filename="../../util.cpp" line="1595"/>
+        <location filename="../../util.cpp" line="1602"/>
         <source>Released under the GNU General Public License (GPL)</source>
         <translation>Publié sous la licence publique générale GNU (GPL)</translation>
     </message>
diff --git a/src/res/translation/translation_it_IT.ts b/src/res/translation/translation_it_IT.ts
index d9c5501618..1f8f6cf650 100644
--- a/src/res/translation/translation_it_IT.ts
+++ b/src/res/translation/translation_it_IT.ts
@@ -3180,17 +3180,17 @@
 <context>
     <name>QCoreApplication</name>
     <message>
-        <location filename="../../util.cpp" line="1578"/>
+        <location filename="../../util.cpp" line="1585"/>
         <source>, Version </source>
         <translation>Versione, Versione </translation>
     </message>
     <message>
-        <location filename="../../util.cpp" line="1591"/>
+        <location filename="../../util.cpp" line="1598"/>
         <source>Internet Jam Session Software</source>
         <translation>Programma per Jam Session su Internet</translation>
     </message>
     <message>
-        <location filename="../../util.cpp" line="1595"/>
+        <location filename="../../util.cpp" line="1602"/>
         <source>Released under the GNU General Public License (GPL)</source>
         <translation>Rilasciato sotto licensa GNU General Public License (GPL)</translation>
     </message>
diff --git a/src/res/translation/translation_nl_NL.ts b/src/res/translation/translation_nl_NL.ts
index 67a78624d5..dbf39e47dc 100644
--- a/src/res/translation/translation_nl_NL.ts
+++ b/src/res/translation/translation_nl_NL.ts
@@ -3180,17 +3180,17 @@
 <context>
     <name>QCoreApplication</name>
     <message>
-        <location filename="../../util.cpp" line="1578"/>
+        <location filename="../../util.cpp" line="1585"/>
         <source>, Version </source>
         <translation>, Versie </translation>
     </message>
     <message>
-        <location filename="../../util.cpp" line="1591"/>
+        <location filename="../../util.cpp" line="1598"/>
         <source>Internet Jam Session Software</source>
         <translation>Internet Jamsessie Software</translation>
     </message>
     <message>
-        <location filename="../../util.cpp" line="1595"/>
+        <location filename="../../util.cpp" line="1602"/>
         <source>Released under the GNU General Public License (GPL)</source>
         <translation>Gereleased onder de GNU General Public License (GPL)</translation>
     </message>
diff --git a/src/res/translation/translation_pl_PL.ts b/src/res/translation/translation_pl_PL.ts
index 9b337657a8..1cbd7c5006 100644
--- a/src/res/translation/translation_pl_PL.ts
+++ b/src/res/translation/translation_pl_PL.ts
@@ -2823,17 +2823,17 @@ nie jestem pewna</translatorcomment>
 <context>
     <name>QCoreApplication</name>
     <message>
-        <location filename="../../util.cpp" line="1578"/>
+        <location filename="../../util.cpp" line="1585"/>
         <source>, Version </source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../util.cpp" line="1591"/>
+        <location filename="../../util.cpp" line="1598"/>
         <source>Internet Jam Session Software</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../util.cpp" line="1595"/>
+        <location filename="../../util.cpp" line="1602"/>
         <source>Released under the GNU General Public License (GPL)</source>
         <translation type="unfinished"></translation>
     </message>
diff --git a/src/res/translation/translation_pt_BR.ts b/src/res/translation/translation_pt_BR.ts
index 86cc972fe7..2e820f1579 100644
--- a/src/res/translation/translation_pt_BR.ts
+++ b/src/res/translation/translation_pt_BR.ts
@@ -3218,17 +3218,17 @@
 <context>
     <name>QCoreApplication</name>
     <message>
-        <location filename="../../util.cpp" line="1578"/>
+        <location filename="../../util.cpp" line="1585"/>
         <source>, Version </source>
         <translation>, Versão </translation>
     </message>
     <message>
-        <location filename="../../util.cpp" line="1591"/>
+        <location filename="../../util.cpp" line="1598"/>
         <source>Internet Jam Session Software</source>
         <translation>Programa de Jam Sessions pela Internet</translation>
     </message>
     <message>
-        <location filename="../../util.cpp" line="1595"/>
+        <location filename="../../util.cpp" line="1602"/>
         <source>Released under the GNU General Public License (GPL)</source>
         <translation>Lançado sob a Licença Pública Geral GNU (GPL)</translation>
     </message>
diff --git a/src/res/translation/translation_pt_PT.ts b/src/res/translation/translation_pt_PT.ts
index 41529c17c7..1fb8ccf362 100644
--- a/src/res/translation/translation_pt_PT.ts
+++ b/src/res/translation/translation_pt_PT.ts
@@ -3216,17 +3216,17 @@
 <context>
     <name>QCoreApplication</name>
     <message>
-        <location filename="../../util.cpp" line="1578"/>
+        <location filename="../../util.cpp" line="1585"/>
         <source>, Version </source>
         <translation>, Versão </translation>
     </message>
     <message>
-        <location filename="../../util.cpp" line="1591"/>
+        <location filename="../../util.cpp" line="1598"/>
         <source>Internet Jam Session Software</source>
         <translation>Programa de Jam Sessions pela Internet</translation>
     </message>
     <message>
-        <location filename="../../util.cpp" line="1595"/>
+        <location filename="../../util.cpp" line="1602"/>
         <source>Released under the GNU General Public License (GPL)</source>
         <translation>Lançado sob a Licença Pública Geral GNU (GPL)</translation>
     </message>
diff --git a/src/res/translation/translation_sv_SE.ts b/src/res/translation/translation_sv_SE.ts
index d991efb5b4..029d9bc8cc 100644
--- a/src/res/translation/translation_sv_SE.ts
+++ b/src/res/translation/translation_sv_SE.ts
@@ -2792,17 +2792,17 @@
 <context>
     <name>QCoreApplication</name>
     <message>
-        <location filename="../../util.cpp" line="1578"/>
+        <location filename="../../util.cpp" line="1585"/>
         <source>, Version </source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../util.cpp" line="1591"/>
+        <location filename="../../util.cpp" line="1598"/>
         <source>Internet Jam Session Software</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../../util.cpp" line="1595"/>
+        <location filename="../../util.cpp" line="1602"/>
         <source>Released under the GNU General Public License (GPL)</source>
         <translation type="unfinished"></translation>
     </message>

From e0750d8b1a47750c7944f0efd46083ff76e1f9f0 Mon Sep 17 00:00:00 2001
From: Volker Fischer <corrados@users.noreply.github.com>
Date: Tue, 7 Jul 2020 16:35:00 +0200
Subject: [PATCH 2/7] remove the version label at the bottom of the server GUI
 since we now have many settings and we want to clean up a bit -> the version
 can be seen in the About dialog anyway

---
 src/serverdlg.cpp    |  4 ----
 src/serverdlgbase.ui | 45 --------------------------------------------
 2 files changed, 49 deletions(-)

diff --git a/src/serverdlg.cpp b/src/serverdlg.cpp
index 788655c0b8..7936c3335e 100755
--- a/src/serverdlg.cpp
+++ b/src/serverdlg.cpp
@@ -218,10 +218,6 @@ CServerDlg::CServerDlg ( CServer*         pNServP,
         showMinimized();
     }
 
-    // set text for version and application name
-    lblNameVersion->setText ( QString ( APP_NAME ) +
-        tr ( " server " ) + QString ( VERSION ) );
-
     // set up list view for connected clients
     lvwClients->setColumnWidth ( 0, 170 );
     lvwClients->setColumnWidth ( 1, 200 );
diff --git a/src/serverdlgbase.ui b/src/serverdlgbase.ui
index 1754716da6..6f3789f3fd 100755
--- a/src/serverdlgbase.ui
+++ b/src/serverdlgbase.ui
@@ -236,51 +236,6 @@
      </item>
     </layout>
    </item>
-   <item>
-    <layout class="QHBoxLayout">
-     <property name="spacing">
-      <number>6</number>
-     </property>
-     <property name="leftMargin">
-      <number>0</number>
-     </property>
-     <property name="topMargin">
-      <number>0</number>
-     </property>
-     <property name="rightMargin">
-      <number>0</number>
-     </property>
-     <property name="bottomMargin">
-      <number>0</number>
-     </property>
-     <item>
-      <widget class="QLabel" name="lblNameVersion">
-       <property name="text">
-        <string>TextLabelNameVersion</string>
-       </property>
-       <property name="wordWrap">
-        <bool>false</bool>
-       </property>
-      </widget>
-     </item>
-     <item>
-      <spacer>
-       <property name="orientation">
-        <enum>Qt::Horizontal</enum>
-       </property>
-       <property name="sizeType">
-        <enum>QSizePolicy::Expanding</enum>
-       </property>
-       <property name="sizeHint" stdset="0">
-        <size>
-         <width>20</width>
-         <height>20</height>
-        </size>
-       </property>
-      </spacer>
-     </item>
-    </layout>
-   </item>
   </layout>
  </widget>
  <customwidgets>

From 6a7f0a6dc319e3192912119827a3a5162956683b Mon Sep 17 00:00:00 2001
From: Volker Fischer <corrados@users.noreply.github.com>
Date: Tue, 7 Jul 2020 18:31:26 +0200
Subject: [PATCH 3/7] add new register message which contains server version

---
 ChangeLog          |   3 +-
 src/protocol.cpp   | 172 ++++++++++++++++++++++++++++++++++++++++++++-
 src/protocol.h     |  11 +++
 src/server.cpp     |   3 +
 src/server.h       |   9 +++
 src/serverlist.cpp |  10 +++
 src/serverlist.h   |   6 ++
 7 files changed, 210 insertions(+), 4 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 5d649cde04..b1be0a45de 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -23,7 +23,7 @@
 
 
 
-TODO add new register message which contains version and, e.g., max number of clients
+TODO bug fix: if group is set to disabled, reset "previous level"
 
 TODO improve settings management -> move settings class in client/server classes, move actual settings variables
 TODO store recorder settings (#313)
@@ -38,7 +38,6 @@ TODO Inconsistency between Input meter and Audio mixer meter #423
 
 
 
-
 3.5.8 (2020-06-30)
 
 - bug fix: incorrect selection of UI language (#408)
diff --git a/src/protocol.cpp b/src/protocol.cpp
index 37a5355d07..2480bd6499 100755
--- a/src/protocol.cpp
+++ b/src/protocol.cpp
@@ -289,6 +289,14 @@ CONNECTION LESS MESSAGES
       necessary, that value will contain the server internal address.
 
 
+- PROTMESSID_CLM_REGISTER_SERVER_EX: Register a server, providing extended server
+                                     information
+
+    +--------------------------------+-------------------------------+
+    | PROTMESSID_CLM_REGISTER_SERVER | PROTMESSID_CLM_VERSION_AND_OS |
+    +--------------------------------+-------------------------------+
+
+
 - PROTMESSID_CLM_UNREGISTER_SERVER: Unregister a server
 
     note: does not have any data -> n = 0
@@ -738,6 +746,10 @@ if ( rand() < ( RAND_MAX / 2 ) ) return false;
             bRet = EvaluateCLRegisterServerMes ( InetAddr, vecbyMesBodyData );
             break;
 
+        case PROTMESSID_CLM_REGISTER_SERVER_EX:
+            bRet = EvaluateCLRegisterServerExMes ( InetAddr, vecbyMesBodyData );
+            break;
+
         case PROTMESSID_CLM_UNREGISTER_SERVER:
             bRet = EvaluateCLUnregisterServerMes ( InetAddr );
             break;
@@ -1466,8 +1478,8 @@ void CProtocol::CreateReqChannelLevelListMes ( const bool bRCL )
 {
     CVector<uint8_t> vecData ( 1 ); // 1 byte of data
     int              iPos = 0; // init position pointer
-    PutValOnStream ( vecData, iPos,
-        static_cast<uint32_t> ( bRCL ), 1 );
+
+    PutValOnStream ( vecData, iPos, static_cast<uint32_t> ( bRCL ), 1 );
 
     CreateAndSendMessage ( PROTMESSID_REQ_CHANNEL_LEVEL_LIST, vecData );
 }
@@ -1820,6 +1832,162 @@ bool CProtocol::EvaluateCLRegisterServerMes ( const CHostAddress&     InetAddr,
     return false; // no error
 }
 
+void CProtocol::CreateCLRegisterServerExMes ( const CHostAddress&    InetAddr,
+                                              const CHostAddress&    LInetAddr,
+                                              const CServerCoreInfo& ServerInfo )
+{
+    int iPos = 0; // init position pointer
+
+    // convert server info strings to utf-8
+    const QByteArray strUTF8LInetAddr = LInetAddr.InetAddr.toString().toUtf8();
+    const QByteArray strUTF8Name      = ServerInfo.strName.toUtf8();
+    const QByteArray strUTF8City      = ServerInfo.strCity.toUtf8();
+    const QByteArray strUTF8Version   = QString ( VERSION ).toUtf8();
+
+    // size of current message body
+    const int iEntrLen =
+        2 /* server internal port number */ +
+        2 /* country */ +
+        1 /* maximum number of connected clients */ +
+        1 /* is permanent flag */ +
+        2 /* name utf-8 string size */ + strUTF8Name.size() +
+        2 /* server internal address utf-8 string size */ + strUTF8LInetAddr.size() +
+        2 /* city utf-8 string size */ + strUTF8City.size() +
+        1 /* operating system */ +
+        2 /* version utf-8 string size */ + strUTF8Version.size();
+
+    // build data vector
+    CVector<uint8_t> vecData ( iEntrLen );
+
+    // port number (2 bytes)
+    PutValOnStream ( vecData, iPos, static_cast<uint32_t> ( LInetAddr.iPort ), 2 );
+
+    // country (2 bytes)
+    PutValOnStream ( vecData, iPos, static_cast<uint32_t> ( ServerInfo.eCountry ), 2 );
+
+    // maximum number of connected clients (1 byte)
+    PutValOnStream ( vecData, iPos, static_cast<uint32_t> ( ServerInfo.iMaxNumClients ), 1 );
+
+    // "is permanent" flag (1 byte)
+    PutValOnStream ( vecData, iPos, static_cast<uint32_t> ( ServerInfo.bPermanentOnline ), 1 );
+
+    // name
+    PutStringUTF8OnStream ( vecData, iPos, strUTF8Name );
+
+    // server internal address (formerly unused topic)
+    PutStringUTF8OnStream ( vecData, iPos, strUTF8LInetAddr );
+
+    // city
+    PutStringUTF8OnStream ( vecData, iPos, strUTF8City );
+
+    // operating system (1 byte)
+    PutValOnStream ( vecData, iPos,
+        static_cast<uint32_t> ( COSUtil::GetOperatingSystem() ), 1 );
+
+    // version
+    PutStringUTF8OnStream ( vecData, iPos, strUTF8Version );
+
+    CreateAndImmSendConLessMessage ( PROTMESSID_CLM_REGISTER_SERVER,
+                                     vecData,
+                                     InetAddr );
+}
+
+bool CProtocol::EvaluateCLRegisterServerExMes ( const CHostAddress&     InetAddr,
+                                                const CVector<uint8_t>& vecData )
+{
+    int             iPos     = 0; // init position pointer
+    const int       iDataLen = vecData.Size();
+    QString         sLocHost; // temp string for server internal address
+    CHostAddress    LInetAddr;
+    CServerCoreInfo RecServerInfo;
+
+    // check size (the first 6 bytes)
+    if ( iDataLen < 6 )
+    {
+        return true; // return error code
+    }
+
+    // port number (2 bytes)
+    LInetAddr.iPort = static_cast<quint16> ( GetValFromStream ( vecData, iPos, 2 ) );
+
+    // country (2 bytes)
+    RecServerInfo.eCountry = static_cast<QLocale::Country> ( GetValFromStream ( vecData, iPos, 2 ) );
+
+    // maximum number of connected clients (1 byte)
+    RecServerInfo.iMaxNumClients = static_cast<int> ( GetValFromStream ( vecData, iPos, 1 ) );
+
+    // "is permanent" flag (1 byte)
+    RecServerInfo.bPermanentOnline = static_cast<bool> ( GetValFromStream ( vecData, iPos, 1 ) );
+
+    // server name
+    if ( GetStringFromStream ( vecData,
+                               iPos,
+                               MAX_LEN_SERVER_NAME,
+                               RecServerInfo.strName ) )
+    {
+        return true; // return error code
+    }
+
+    // server internal address
+    if ( GetStringFromStream ( vecData,
+                               iPos,
+                               MAX_LEN_IP_ADDRESS,
+                               sLocHost ) )
+    {
+        return true; // return error code
+    }
+
+    if ( sLocHost.isEmpty() )
+    {
+        // old server, empty "topic", register as local host
+        LInetAddr.InetAddr.setAddress ( QHostAddress::LocalHost );
+    }
+    else if ( !LInetAddr.InetAddr.setAddress ( sLocHost ) )
+    {
+        return true; // return error code
+    }
+
+    // server city
+    if ( GetStringFromStream ( vecData,
+                               iPos,
+                               MAX_LEN_SERVER_CITY,
+                               RecServerInfo.strCity ) )
+    {
+        return true; // return error code
+    }
+
+    // check size (the next 1 byte)
+    if ( iDataLen < iPos + 1 )
+    {
+        return true; // return error code
+    }
+
+    // operating system (1 byte)
+    const COSUtil::EOpSystemType eOSType =
+        static_cast<COSUtil::EOpSystemType> ( GetValFromStream ( vecData, iPos, 1 ) );
+
+    // version text
+    QString strVersion;
+    if ( GetStringFromStream ( vecData,
+                               iPos,
+                               MAX_LEN_VERSION_TEXT,
+                               strVersion ) )
+    {
+        return true; // return error code
+    }
+
+    // check size: all data is read, the position must now be at the end
+    if ( iPos != iDataLen )
+    {
+        return true; // return error code
+    }
+
+    // invoke message action
+    emit CLRegisterServerExReceived ( InetAddr, LInetAddr, RecServerInfo, eOSType, strVersion );
+
+    return false; // no error
+}
+
 void CProtocol::CreateCLUnregisterServerMes ( const CHostAddress& InetAddr )
 {
     CreateAndImmSendConLessMessage ( PROTMESSID_CLM_UNREGISTER_SERVER,
diff --git a/src/protocol.h b/src/protocol.h
index 2c4a07607c..f9ea11aa83 100755
--- a/src/protocol.h
+++ b/src/protocol.h
@@ -79,6 +79,7 @@
 #define PROTMESSID_CLM_REQ_CONN_CLIENTS_LIST  1014 // request the connected clients list
 #define PROTMESSID_CLM_CHANNEL_LEVEL_LIST     1015 // channel level list
 #define PROTMESSID_CLM_REGISTER_SERVER_RESP   1016 // status of server registration request
+#define PROTMESSID_CLM_REGISTER_SERVER_EX     1017 // register server with extended information
 
 // lengths of message as defined in protocol.cpp file
 #define MESS_HEADER_LENGTH_BYTE         7 // TAG (2), ID (2), cnt (1), length (2)
@@ -125,6 +126,9 @@ class CProtocol : public QObject
     void CreateCLRegisterServerMes     ( const CHostAddress&    InetAddr,
                                          const CHostAddress&    LInetAddr,
                                          const CServerCoreInfo& ServerInfo );
+    void CreateCLRegisterServerExMes   ( const CHostAddress&    InetAddr,
+                                         const CHostAddress&    LInetAddr,
+                                         const CServerCoreInfo& ServerInfo );
     void CreateCLUnregisterServerMes   ( const CHostAddress& InetAddr );
     void CreateCLServerListMes         ( const CHostAddress&        InetAddr,
                                          const CVector<CServerInfo> vecServerInfo );
@@ -250,6 +254,8 @@ class CProtocol : public QObject
     bool EvaluateCLServerFullMes();
     bool EvaluateCLRegisterServerMes     ( const CHostAddress&     InetAddr,
                                            const CVector<uint8_t>& vecData );
+    bool EvaluateCLRegisterServerExMes   ( const CHostAddress&     InetAddr,
+                                           const CVector<uint8_t>& vecData );
     bool EvaluateCLUnregisterServerMes   ( const CHostAddress&     InetAddr );
     bool EvaluateCLServerListMes         ( const CHostAddress&     InetAddr,
                                            const CVector<uint8_t>& vecData );
@@ -315,6 +321,11 @@ public slots:
     void CLRegisterServerReceived     ( CHostAddress           InetAddr,
                                         CHostAddress           LInetAddr,
                                         CServerCoreInfo        ServerInfo );
+    void CLRegisterServerExReceived   ( CHostAddress           InetAddr,
+                                        CHostAddress           LInetAddr,
+                                        CServerCoreInfo        ServerInfo,
+                                        COSUtil::EOpSystemType eOSType,
+                                        QString                strVersion );
     void CLUnregisterServerReceived   ( CHostAddress           InetAddr );
     void CLServerListReceived         ( CHostAddress           InetAddr,
                                         CVector<CServerInfo>   vecServerInfo );
diff --git a/src/server.cpp b/src/server.cpp
index 56739a83fb..499c57cc5c 100755
--- a/src/server.cpp
+++ b/src/server.cpp
@@ -449,6 +449,9 @@ CServer::CServer ( const int          iNewMaxNumChan,
     QObject::connect ( &ConnLessProtocol, &CProtocol::CLRegisterServerReceived,
         this, &CServer::OnCLRegisterServerReceived );
 
+    QObject::connect ( &ConnLessProtocol, &CProtocol::CLRegisterServerExReceived,
+        this, &CServer::OnCLRegisterServerExReceived );
+
     QObject::connect ( &ConnLessProtocol, &CProtocol::CLUnregisterServerReceived,
         this, &CServer::OnCLUnregisterServerReceived );
 
diff --git a/src/server.h b/src/server.h
index 8def4f9fb7..08766acb64 100755
--- a/src/server.h
+++ b/src/server.h
@@ -462,6 +462,15 @@ public slots:
         ServerListManager.CentralServerRegisterServer ( InetAddr, LInetAddr, ServerInfo );
     }
 
+    void OnCLRegisterServerExReceived ( CHostAddress           InetAddr,
+                                        CHostAddress           LInetAddr,
+                                        CServerCoreInfo        ServerInfo,
+                                        COSUtil::EOpSystemType eOSType,
+                                        QString                strVersion )
+    {
+        ServerListManager.CentralServerRegisterServerEx ( InetAddr, LInetAddr, ServerInfo, eOSType, strVersion );
+    }
+
     void OnCLRegisterServerResp ( CHostAddress  /* unused */,
                                   ESvrRegResult eResult )
     {
diff --git a/src/serverlist.cpp b/src/serverlist.cpp
index 78074d8759..e215835c2e 100755
--- a/src/serverlist.cpp
+++ b/src/serverlist.cpp
@@ -340,6 +340,16 @@ void CServerListManager::OnTimerPollList()
     }
 }
 
+void CServerListManager::CentralServerRegisterServerEx ( const CHostAddress&          InetAddr,
+                                                         const CHostAddress&          LInetAddr,
+                                                         const CServerCoreInfo&       ServerInfo,
+                                                         const COSUtil::EOpSystemType ,
+                                                         const QString&               )
+{
+// TODO right now we do not make use of the additional operating system and version number informations
+CentralServerRegisterServer ( InetAddr, LInetAddr, ServerInfo );
+}
+
 void CServerListManager::CentralServerRegisterServer ( const CHostAddress&    InetAddr,
                                                        const CHostAddress&    LInetAddr,
                                                        const CServerCoreInfo& ServerInfo )
diff --git a/src/serverlist.h b/src/serverlist.h
index f26003bf03..e2f0ff8563 100755
--- a/src/serverlist.h
+++ b/src/serverlist.h
@@ -147,6 +147,12 @@ class CServerListManager : public QObject
                                        const CHostAddress&    LInetAddr,
                                        const CServerCoreInfo& ServerInfo );
 
+    void CentralServerRegisterServerEx ( const CHostAddress&          InetAddr,
+                                         const CHostAddress&          LInetAddr,
+                                         const CServerCoreInfo&       ServerInfo,
+                                         const COSUtil::EOpSystemType ,
+                                         const QString&               );
+
     void CentralServerUnregisterServer ( const CHostAddress& InetAddr );
 
     void CentralServerQueryServerList ( const CHostAddress& InetAddr );

From b15e61353b7bdc5e041bee699b29d784dd06c02e Mon Sep 17 00:00:00 2001
From: Volker Fischer <corrados@users.noreply.github.com>
Date: Tue, 7 Jul 2020 18:38:13 +0200
Subject: [PATCH 4/7] bug fix

---
 src/protocol.cpp | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/protocol.cpp b/src/protocol.cpp
index 2480bd6499..e54a4272ce 100755
--- a/src/protocol.cpp
+++ b/src/protocol.cpp
@@ -1887,7 +1887,7 @@ void CProtocol::CreateCLRegisterServerExMes ( const CHostAddress&    InetAddr,
     // version
     PutStringUTF8OnStream ( vecData, iPos, strUTF8Version );
 
-    CreateAndImmSendConLessMessage ( PROTMESSID_CLM_REGISTER_SERVER,
+    CreateAndImmSendConLessMessage ( PROTMESSID_CLM_REGISTER_SERVER_EX,
                                      vecData,
                                      InetAddr );
 }

From 38cdd659e1b702bc41e11ffa44ea22d199af1cc9 Mon Sep 17 00:00:00 2001
From: Volker Fischer <corrados@users.noreply.github.com>
Date: Tue, 7 Jul 2020 22:02:44 +0200
Subject: [PATCH 5/7] bug fix: if group is set to disabled, reset "previous
 level"

---
 ChangeLog               |  7 ++++---
 src/audiomixerboard.cpp | 17 ++++++++++++++++-
 2 files changed, 20 insertions(+), 4 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index b1be0a45de..dc80c6426a 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -23,10 +23,11 @@
 
 
 
-TODO bug fix: if group is set to disabled, reset "previous level"
-
 TODO improve settings management -> move settings class in client/server classes, move actual settings variables
-TODO store recorder settings (#313)
+TODO improve interaction between use of inifile and command line parameters (edited) #120
+(Save client settings on SIGUSR1 #294)
+(Add a save action for client and server with a keyboard shortcut #347)
+(Save and restore mixer state (fader / mute / solo...) #377)
 
 TODO Inconsistency between Input meter and Audio mixer meter #423
 
diff --git a/src/audiomixerboard.cpp b/src/audiomixerboard.cpp
index 379c87eb2a..1dc2bf6b1a 100755
--- a/src/audiomixerboard.cpp
+++ b/src/audiomixerboard.cpp
@@ -503,7 +503,7 @@ void CChannelFader::SetGroupID ( const int iNGroupID )
 void CChannelFader::UpdateGroupIDDependencies()
 {
     // update the group checkbox according the current group ID setting
-    pcbGroup->blockSignals ( true ); // make sure no signals as fired
+    pcbGroup->blockSignals ( true ); // make sure no signals are fired
     if ( iGroupID == INVALID_INDEX )
     {
         pcbGroup->setCheckState ( Qt::Unchecked );
@@ -524,6 +524,21 @@ void CChannelFader::UpdateGroupIDDependencies()
         pcbGroup->setText ( strGroupBaseText );
     }
 
+    // if the group is disable for this fader, reset the previous fader level
+    if ( iGroupID == INVALID_INDEX )
+    {
+        // for the special case that the fader is all the way down, use a small
+        // value instead
+        if ( GetFaderLevel() > 0 )
+        {
+            dPreviousFaderLevel = GetFaderLevel();
+        }
+        else
+        {
+            dPreviousFaderLevel = 1; // small value
+        }
+    }
+
     // the fader tag border color is set according to the selected group
     SetupFaderTag ( cReceivedChanInfo.eSkillLevel );
 }

From 46bb1435a04ec5c28e50890a8129550f90da86ec Mon Sep 17 00:00:00 2001
From: Volker Fischer <corrados@users.noreply.github.com>
Date: Tue, 7 Jul 2020 22:07:19 +0200
Subject: [PATCH 6/7] rename variable

---
 src/audiomixerboard.cpp | 14 +++++++-------
 src/audiomixerboard.h   |  2 +-
 2 files changed, 8 insertions(+), 8 deletions(-)

diff --git a/src/audiomixerboard.cpp b/src/audiomixerboard.cpp
index 1dc2bf6b1a..0092ca4b30 100755
--- a/src/audiomixerboard.cpp
+++ b/src/audiomixerboard.cpp
@@ -128,8 +128,8 @@ CChannelFader::CChannelFader ( QWidget* pNW )
     pMainGrid->addWidget ( pLabelInstBox );
 
     // reset current fader
-    strGroupBaseText    = "Grp";         // this will most probably overwritten by SetGUIDesign()
-    iInstrPicFixedWidth = INVALID_INDEX; // this will most probably overwritten by SetGUIDesign()
+    strGroupBaseText  = "Grp";         // this will most probably overwritten by SetGUIDesign()
+    iInstrPicMaxWidth = INVALID_INDEX; // this will most probably overwritten by SetGUIDesign()
     Reset();
 
     // add help text to controls
@@ -228,7 +228,7 @@ void CChannelFader::SetGUIDesign ( const EGUIDesign eNewDesign )
         pcbSolo->setText                    ( tr ( "SOLO" ) );
         strGroupBaseText =                    tr ( "GRP" );
         plbrChannelLevel->SetLevelMeterType ( CLevelMeter::MT_LED );
-        iInstrPicFixedWidth = INVALID_INDEX; // no instrument picture scaling
+        iInstrPicMaxWidth = INVALID_INDEX; // no instrument picture scaling
         break;
 
     case GD_SLIMFADER:
@@ -243,7 +243,7 @@ void CChannelFader::SetGUIDesign ( const EGUIDesign eNewDesign )
         pcbSolo->setText                    ( tr ( "S" ) );
         strGroupBaseText =                    tr ( "G" );
         plbrChannelLevel->SetLevelMeterType ( CLevelMeter::MT_SLIM_BAR );
-        iInstrPicFixedWidth = 18; // scale instrument picture to avoid enlarging the width by the picture
+        iInstrPicMaxWidth = 18; // scale instrument picture to avoid enlarging the width by the picture
         break;
 
     default:
@@ -259,7 +259,7 @@ void CChannelFader::SetGUIDesign ( const EGUIDesign eNewDesign )
         pcbSolo->setText                    ( tr ( "Solo" ) );
         strGroupBaseText =                    tr ( "Grp" );
         plbrChannelLevel->SetLevelMeterType ( CLevelMeter::MT_BAR );
-        iInstrPicFixedWidth = INVALID_INDEX; // no instrument picture scaling
+        iInstrPicMaxWidth = INVALID_INDEX; // no instrument picture scaling
         break;
     }
 
@@ -631,10 +631,10 @@ void CChannelFader::SetChannelInfos ( const CChannelInfo& cChanInfo )
         // set correct picture
         QPixmap pixInstr ( strCurResourceRef );
 
-        if ( ( iInstrPicFixedWidth != INVALID_INDEX ) && ( pixInstr.width() > iInstrPicFixedWidth ) )
+        if ( ( iInstrPicMaxWidth != INVALID_INDEX ) && ( pixInstr.width() > iInstrPicMaxWidth ) )
         {
             // scale instrument picture on request (scale to the width with correct aspect ratio)
-            plblInstrument->setPixmap ( pixInstr.scaledToWidth ( iInstrPicFixedWidth, Qt::SmoothTransformation ) );
+            plblInstrument->setPixmap ( pixInstr.scaledToWidth ( iInstrPicMaxWidth, Qt::SmoothTransformation ) );
         }
         else
         {
diff --git a/src/audiomixerboard.h b/src/audiomixerboard.h
index 95fd4d615b..3ed2c6bec8 100755
--- a/src/audiomixerboard.h
+++ b/src/audiomixerboard.h
@@ -119,7 +119,7 @@ class CChannelFader : public QObject
     double       dPreviousFaderLevel;
     int          iGroupID;
     QString      strGroupBaseText;
-    int          iInstrPicFixedWidth;
+    int          iInstrPicMaxWidth;
 
 public slots:
     void OnLevelValueChanged ( int value ) { SendFaderLevelToServer ( value, false ); }

From 91d5560f94785cf88ddd950f4a1b82ce8fcab9c5 Mon Sep 17 00:00:00 2001
From: Volker Fischer <corrados@users.noreply.github.com>
Date: Wed, 8 Jul 2020 19:17:58 +0200
Subject: [PATCH 7/7] update

---
 ChangeLog | 8 ++------
 1 file changed, 2 insertions(+), 6 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index dc80c6426a..8aea6349e9 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -25,12 +25,8 @@
 
 TODO improve settings management -> move settings class in client/server classes, move actual settings variables
 TODO improve interaction between use of inifile and command line parameters (edited) #120
-(Save client settings on SIGUSR1 #294)
-(Add a save action for client and server with a keyboard shortcut #347)
-(Save and restore mixer state (fader / mute / solo...) #377)
-
-TODO Inconsistency between Input meter and Audio mixer meter #423
-
+TODO Save and restore mixer state (fader / mute / solo...) #377
+(Add a save action for client and server with a keyboard shortcut #347) -> should be closed