diff --git a/common/engine/keyboardprocessor/src/utfcodec.hpp b/common/engine/keyboardprocessor/src/utfcodec.hpp index 3c5eb540dd..aba40ebc7f 100644 --- a/common/engine/keyboardprocessor/src/utfcodec.hpp +++ b/common/engine/keyboardprocessor/src/utfcodec.hpp @@ -19,7 +19,14 @@ typedef uint32_t uchar_t; +/* Intentional fallthrough */ +#if defined(__clang__) #define fallthrough [[clang::fallthrough]] +#elif defined(__GNUC__) && __GNUC__ >= 7 +#define fallthrough [[gnu::fallthrough]] +#else +#define fallthrough ((void)0) +#endif template struct _utf_codec diff --git a/linux/history.md b/linux/history.md index 583f56c71d..fdddde147d 100644 --- a/linux/history.md +++ b/linux/history.md @@ -1,10 +1,11 @@ # Keyman for Linux Version History -## 2020-02-17 13.0.29 beta +# 2020-02-17 13.0.29 beta * Bug Fix: * Fix how tier is determined for debian watch files (#2664) + * Fix keyboard processor compilation for Xenial (#2648) -## 2020-02-11 13.0.28 beta +# 2020-02-11 13.0.28 beta * Bug Fix: * Incorporate packaging fixes from 14.0 development (#2624) diff --git a/linux/ibus-keyman/debian/control b/linux/ibus-keyman/debian/control index aa15da63a4..8a9efe63ab 100644 --- a/linux/ibus-keyman/debian/control +++ b/linux/ibus-keyman/debian/control @@ -3,9 +3,9 @@ Section: utils Priority: optional Maintainer: Daniel Glassey Build-Depends: debhelper (>= 9), autotools-dev, dh-autoreconf, pkg-config, - libkmnkbp-dev (>=0.0.0~), libibus-1.0-dev (>= 1.2), libjson-glib-dev (>= 1.4.0), - libgtk-3-dev -Standards-Version: 3.9.8 + libkmnkbp-dev (>=0.0.0~), libibus-1.0-dev (>= 1.2), libjson-glib-dev (>= 1.4.0) , + libjson-glib-dev (1.1.2) , libgtk-3-dev +Standards-Version: 4.5.0 Homepage: http://www.keyman.com Package: ibus-keyman diff --git a/linux/keyman-config/Makefile b/linux/keyman-config/Makefile index 7ee8dedd78..0a91ea8f98 100644 --- a/linux/keyman-config/Makefile +++ b/linux/keyman-config/Makefile @@ -4,6 +4,7 @@ default: clean version man python3 setup.py build install: # run as sudo + pip3 install qrcode python3 setup.py install # install icons mkdir -p /usr/local/share/keyman/icons @@ -26,7 +27,6 @@ uninstall: clean # run as sudo rm -f /usr/local/bin/km-package-install rm -f /usr/local/bin/km-package-list-installed rm -f /usr/local/bin/km-package-uninstall - rm -f /usr/local/bin/qr clean: -rm -rf dist make_deb build keyman_config/version.py *.egg-info __pycache__ diff --git a/linux/keyman-config/debian/control b/linux/keyman-config/debian/control index 5d49d99979..a90ef9d540 100644 --- a/linux/keyman-config/debian/control +++ b/linux/keyman-config/debian/control @@ -2,7 +2,7 @@ Source: keyman-config Maintainer: Daniel Glassey Section: python Priority: optional -Build-Depends: dh-python, python3-setuptools, python3-all, debhelper (>= 9), bash-completion, +Build-Depends: dh-python, python3-setuptools, python3-all, python3-pip, debhelper (>= 9), bash-completion, python3-magic, python3-qrcode , python-qrcode Standards-Version: 4.5.0 diff --git a/windows/src/developer/TIKE/main/UfrmHelp.pas b/windows/src/developer/TIKE/main/UfrmHelp.pas index ba47a24eeb..56168447af 100644 --- a/windows/src/developer/TIKE/main/UfrmHelp.pas +++ b/windows/src/developer/TIKE/main/UfrmHelp.pas @@ -132,7 +132,7 @@ begin FormName := (FHelpControl as TTIKEForm).HelpTopic else if FHelpControl is TCustomForm then FormName := FHelpControl.ClassName - else + else if (FHelpControl <> nil) then begin o := FHelpControl.Owner; while ((o is TframeCEFHost) or not(o is TTIKEForm)) and (o <> nil) do diff --git a/windows/src/developer/TIKE/oskbuilder/UframeTouchLayoutBuilder.pas b/windows/src/developer/TIKE/oskbuilder/UframeTouchLayoutBuilder.pas index 9af7a7c85a..62046296a2 100644 --- a/windows/src/developer/TIKE/oskbuilder/UframeTouchLayoutBuilder.pas +++ b/windows/src/developer/TIKE/oskbuilder/UframeTouchLayoutBuilder.pas @@ -306,6 +306,7 @@ end; function TframeTouchLayoutBuilder.Load(const AFilename: string; ALoadFromTemplate, ALoadFromString: Boolean): Boolean; var + FLastFilename: string; FBaseFileName: string; FNewLayoutJS: string; FTouchLayout: TTouchLayout; @@ -319,6 +320,7 @@ var begin FLastErrorOffset := -1; FLastError := ''; + FLastFilename := FFilename; if FFilename <> '' then begin @@ -327,66 +329,70 @@ begin end; UnregisterSources; + try - if ALoadFromString then - begin - FNewLayoutJS := AFilename; - FFilename := GetNextFilename; - end - else - begin - if ALoadFromTemplate or (AFileName = '') or not FileExists(AFileName) then + if ALoadFromString then begin - FBaseFileName := FTemplateFileName; + FNewLayoutJS := AFilename; FFilename := GetNextFilename; end else begin - FBaseFileName := AFileName; - FFilename := AFileName; - end; - - with TStringList.Create do - try - LoadFromFile(FBaseFileName, TEncoding.UTF8); - FNewLayoutJS := Text; - finally - Free; - end; - end; - - FTouchLayout := TTouchLayout.Create; // I3642 - try - if not FTouchLayout.Load(FNewLayoutJS) then - begin - FLastError := FTouchLayout.LoadError; // I4083 - FLastErrorOffset := FTouchLayout.LoadErrorOffset; // I4083 - Exit(False); - end - else - begin - if (FSavedLayoutJS <> '') and ALoadFromTemplate then + if ALoadFromTemplate or (AFileName = '') or not FileExists(AFileName) then begin - FOldLayout := TTouchLayout.Create; - try - FOldLayout.Load(FSavedLayoutJS); - if FTouchLayout.Merge(FOldLayout) - then FSavedLayoutJS := FTouchLayout.Save(False) - else FSavedLayoutJS := FNewLayoutJS; - finally - FOldLayout.Free; - end; + FBaseFileName := FTemplateFileName; + FFilename := GetNextFilename; end else - FSavedLayoutJS := FNewLayoutJS; - end; - finally - FTouchLayout.Free; - end; + begin + FBaseFileName := AFileName; + FFilename := AFileName; + end; - RegisterSource; - if FState <> '' then - modWebHttpServer.AppSource.RegisterSource(FFilename + '#state', FState, True); + with TStringList.Create do + try + LoadFromFile(FBaseFileName, TEncoding.UTF8); + FNewLayoutJS := Text; + finally + Free; + end; + end; + + FTouchLayout := TTouchLayout.Create; // I3642 + try + if not FTouchLayout.Load(FNewLayoutJS) then + begin + FLastError := FTouchLayout.LoadError; // I4083 + FLastErrorOffset := FTouchLayout.LoadErrorOffset; // I4083 + FFilename := FLastFilename; + Exit(False); + end + else + begin + if (FSavedLayoutJS <> '') and ALoadFromTemplate then + begin + FOldLayout := TTouchLayout.Create; + try + FOldLayout.Load(FSavedLayoutJS); + if FTouchLayout.Merge(FOldLayout) + then FSavedLayoutJS := FTouchLayout.Save(False) + else FSavedLayoutJS := FNewLayoutJS; + finally + FOldLayout.Free; + end; + end + else + FSavedLayoutJS := FNewLayoutJS; + end; + finally + FTouchLayout.Free; + end; + + finally + RegisterSource; + if FState <> '' then + modWebHttpServer.AppSource.RegisterSource(FFilename + '#state', FState, True); + end; try DoLoad;