   Kickshaw - A Menu Editor for Openbox

   Copyright (c) 2010–2024        Marcus Schätzle

   This program is free software; you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
   the Free Software Foundation; either version 2 of the License, or
   (at your option) any later version.

   This program is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   GNU General Public License for more details.

   You should have received a copy of the GNU General Public License along
   with Kickshaw. If not, see http://www.gnu.org/licenses/.

---

MAJOR MILESTONES
(Listed With Each Minor Release Version Number)

| Core functionality

0.2: Context menus
0.3: Editable cells
0.4: Drag and drop
0.5: Search functionality, support for icons, proper XML parser, GTK3 
0.6: Undo/Redo
0.7: Find and replace
1.0: Polishing:
     - User support (autosave, hints window, shortcuts window, 
       report issue functionality, more options, autocomplete)
     - Interface changes, menu button as default, optional client side 
       decorations

| Additional functionality

1.1: - Support for localization, addition of translations 
     - Added logo to the about dialog

COMPLETE CHANGELOG

1.1.81 2024-05-13

  * Added Kannada translation

1.1.80 2024-05-09

  * Added Telugu translation
  * Added two helper scripts to facilitate the replacement of English text in
    'hints2' with translations

1.1.79 2024-05-04

  * Added Marathi translation
  * Small change in the German translation

1.1.78 2024-04-28

  * Added Turkmen translation

1.1.77 2024-04-24

  * Added Haitian Creole translation

1.1.76 2024-04-22

  * Added Serbian (Latin script) translation

1.1.75 2024-04-21

  * Added Amharic translation

1.1.74 2024-04-17

  * Added Tamil translation

1.1.73 2024-04-13

  * Added Belarusian translation
  * Fixed issue that the Ukrainian help texts contained the shortcuts of the 
    original English help texts

1.1.72 2024-04-09

  * Added Swahili translation
  * Fixed missing mnemonic in Farsi and Slowak translations
  * Fixed wrong mnemonic in Thai translation
  * Fixed duplicate mnemonic in Bulgarian, Breton, and Indonesian translations
  * Fixed usage of wrong script for mnemonic in Kazakh translation
  * Changed mnemonic in Lithuanian translation
  * Cosmetical change

1.1.71 2024-04-07

  * Added Breton translation
  * Enhanced replace quotation marks script so that it can also convert to 
    French-style guillemets (with spaces)
  * Added a test po file for testing the replace quotation marks script

1.1.70 2024-04-05

  * Added Macedonian translation

1.1.69 2024-04-03

  * Added Kazakh translation (Cyrillic, a conversion to Latin Script is
    planned)

1.1.68 2024-03-31

  * Added Uzbek translation
  * Changes to the translation notes; fixed issue of missing translation note

1.1.67 2024-03-29

  * Translation fixes for Dutch, French, Georgian, Spanish, and Vietnamese

1.1.66 2024-03-28

  * Translation fixes for Afrikaans, Catalan, Dutch, Portuguese, and Spanish
  * The source text now contains translation notes to make it easier for human
    translators and AI to create translations and ensure their quality

1.1.65 2024-03-27

  * Added Persian translation
  * Fixed issue that a translation that was due twice was only translated once
  * Cosmetical change

1.1.64 2024-03-23

  * Added Hebrew translation
  * Changed direction of a headline and the place of colons in labels for the 
    Arabic translation so that they align with adjacent text or graphical
    elements. Also applied translation fix to the Find and Replace window.

1.1.63 2024-03-20

  * Added Arabic translation

1.1.62 2024-03-16

  * Translation fixes for Azeri, Catalan, Czech, Polish, Romanian, Swedish, 
    and Turkish
  * Fixed a typo that appeared in all languages

1.1.61 2024-03-15

  * Translation fixes for Azeri, Turkish, Polish, Czech, and Irish

1.1.60 2024-03-12

  * Added Irish translation

1.1.59 2024-03-09

  * Added Ukrainian translation
  * Czech and Polish translation fixes

1.1.58 2024-02-29

  * Added Thai translation

1.1.57 2024-02-21

  * Added Slovenian translation
  * Changes for more consistent translations

1.1.56 2024-02-16

  * Added Slovak translation
  * Improved version of the masked quotation marks replacement helper script
    that can now properly handle multiline strings

1.1.55 2024-02-12

  * Added Lithuanian translation

1.1.54 2024-02-09

  * Added Bulgarian translation

1.1.53 2024-02-08

  * Faroese translation fix
  * More consistent use of Armenian punctuation

1.1.52 2024-02-06

  * Added Faroese translation
  * Estonian and Icelandic translation fixes

1.1.51 2024-02-05

  * Added Estonian translation

1.1.50 2024-02-02

  * Added Galician translation
  * update_all_mo.sh and update_all_po.sh now start python versions of the
    previous shell scripts; the shell scripts were limited to bash
  * Moved generate_gresource.py to the "updating" subfolder, it can now be 
    started by calling a generate_gresource.sh shell script 

1.1.49 2024-01-28

  * Added Georgian translation
  * The English names of the months are no longer hardcoded, as they can be
    read from the settings for the C locale.

1.1.48 2024-01-24

  * Added Armenian translation

1.1.47 2024-01-19

  * There is a new shell script file prepare_files_for_new_translation.sh, 
    which is started with a locale (e.g. de) as an argument and which creates 
    or changes all necessary files for a new translation. This script file 
    starts several other new Python scripts.
    Also, there is now a Python script file generate_gresource.py that 
    generates the .gresource.c file. It is no longer necessary to manually 
    create it.

1.1.46 2024-01-18

  * It is no longer necessary to manually update the update_all_po and 
    update_all_mo scripts each time a new translation has been added.
    There is now a Python script called create_gresource_xml
    which creates the .gresource.xml file so new translations do no 
    longer have to be added to the xml file.
    Also, there is now a Python script called update_makefile that updates 
    the makefile in case that new translations have been added.

1.1.45 2024-01-17

  * Added Chinese (traditional) translation
  * Albanian, Polish, and Basque translation fixes and improvements
  * Other small translation fixes for Spanish and Danish

1.1.44 2024-01-14

  * Added Cantonese translation
  * Albanian translation fixes
  * Added missing mnemonics to the Vietnamese translation
  * Changed the wording of a sentence slightly because it did not fully carry 
    the intended meaning

1.1.43 2024-01-09

  * Added Vietnamese translation
  * Rephrased message text with more details for better clarity

1.1.42 2024-01-06

  * Added Bengali translation

1.1.41 2024-01-03

  * Added Hindi translation
  * Small improvements for the Chinese (simplified) translation

1.1.40 2024-01-01

  * Added Chinese (simplified) translation
  * Danish translation fix

1.1.39 2023-12-30

  * Added Korean translation
  * Fixed bug that for the Japanese translation, the wrong headline for the
    combobox for adding actions and options was shown
  * Japanese translation fix
  * Translated n/a in the Japanese hints texts
  * The code for the dermination of the correct headline text for the
    aforementioned combobox is now fully independent of translations, which 
    prevents wrong headlines to be shown

1.1.38 2023-12-26

  * Added Japanese translation
  * Albanian translation fixes
  * Fixed duplicate mnemonics in the English original and Maltese translation

1.1.37 2023-12-24

  * Translation fixes and improvements

1.1.36 2023-12-23

  * Added Icelandic translation
  * Turkish translation fix
  * Fixed issue that the Norwegian info texts for the command line where 
    misplaced and thus the English texts were shown
  * Fixed issue that in several translations the English original text appeared
    on two occassions

1.1.35 2023-12-18

  * Added Norwegian (Bokmål) translation

1.1.34 2023-12-15

  * Added Hungarian translation
  * To make it also work for Hungarian, the code for setting the background
    color of the combobox for adding actions and options had to be changed so
    that it completely ignores the case
  * In the Swedish translation, fixed wrong headline for the aforementioned
    combobox. Improved translation in this context.
  * Welsh translation fix
  * Greek translation improvement
  * Small changes for the Albanian and Maltese translations

1.1.33 2023-12-12

  * Added Croation translation
  * Fixed crash in the Italian translation caused by an incomplete positional 
    parameter
  * In some translations, the text for the "icon" option button was translated 
    although the labeling was supposed to be identical to the option name
  * Fixed regression that the fore- and background color in the combobox for 
    adding actions and options was missing in the Turkish and Azeri
    translations. Also fixed missing fore- and background color in this 
    comboxbox for the Dutch translation
  * Fixed markup errors in the Albanian, Indonesian, Turkish, and Welsh
    translations
  * Fixed duplicate mnemonic in the Czech translation
  * Translated n/a in the Danish hints texts
  * More consistent Turkish translation

1.1.32 2023-12-06

  * Added Danish translation
  * Fixed bug that for the translations, the headline in the combobox
    for adding actions and options would usually not differentiate 
    between the cases of adding actions, actions/options, or options
  * Fixed missing background color in the aforementioned combobox for the 
    Russian translation
  * Translation fixes

1.1.31 2023-12-03

  * Added Russian translation
  * Translation fixes and improvements

1.1.30 2023-11-03

  * Small translation fixes and improvements

1.1.29 2023-10-11

  * Translation fixes and improvements

1.1.28 2023-10-09

  * Removed a couple of superfluous line breaks from dialogue windows

1.1.27 2023-10-05

  * Added Greek translation
  * Changed the code so that it allows for language-specific
    versions of all shortcuts
  * Translation fixes

1.1.26 2023-09-21

  * Added Latvian translation

1.1.25 2023-09-16

  * Added Indonesian translation
  * Translation improvement

1.1.24 2023-09-13

  * Added Western Frisian translation
  * Translation correction and improvements

1.1.23 2023-09-10

  * Added Finnish translation
  * In the logo, replaced the abstract menu with the Kickshaw sample 
    menu provided by Openbox itself
  * Small corrections of the original English text

1.1.22 2023-09-06

  * Added Maltese translation
  * Reverted mistake that a sentence in one of the English info texts
    had been replaced with its Basque translation

1.1.21 2023-09-03

  * Added Basque translation
  * Translation corrections and improvements
  * Reverted mistake that a sentence in one of the English hints texts
    had been replaced with its Welsh translation

1.1.20 2023-08-29

  * It was not taken into account that if there were at least two placeholders
    for variables in texts, they could swap their positions in translations. In
    a few cases, this swap of placeholders actually happened, resulting in 
    erroneous text output. This deficiency has now been remedied.
  * Translation corrections and improvements

1.1.19 2023-08-22

  * Added Welsh translation
  * Translated n/a in the Czech hints texts

1.1.18 2023-08-19

  * Added Albanian translation
  * Translation improvements, often for better consistency
  * Small grammar correction for the English orignal text
  * Removed pointless mnemonic since there is already a keyboard shortcut
  * Changed the fake quote of the Chinese person from English 
    to Mandarin and slightly altered its content

1.1.17 2023-08-16

  * Added Czech translation
  * Improved Dutch translation for better consistency
  * Reverted mistake that a sentence in one of the English hints texts
    had been replaced with its Polish translation

1.1.16 2023-08-02

  * Fixed bug that could cause a crash when using the undo/redo 
    functionality or restoring data from the autosave
  * Translation correction and improvements

1.1.15 2023-07-30

  * Added Polish translation
  * Translation corrections

1.1.14 2023-07-27

  * Translation corrections

1.1.13 2023-07-25

  * Added Swedish translation
  * Translation corrections
  
1.1.12 2023-07-23

  * Added Azerbaijani translation
  * Translation corrections/improvements

1.1.11 2023-07-18

  * Added Turkish translation
  * A couple of minor improvements to the translations

1.1.10 2023-07-15

  * Added Romanian translation
  * The program can now handle multiple plural forms in the places 
    where this matters
  * A couple of translation corrections

1.1.9 2023-06-03

  * Added logo to the about dialog and changed the code accordingly

1.1.8 2023-06-01

  * Added Afrikaans translation
  * Translation corrections/fixes

1.1.7 2023-05-30

  * Added Catalan translation
  * Several translation additions/corrections
  * Text formatting change

1.1.6 2023-05-28

  * Added Dutch translation
  * Several translation corrections/fixes
  * Fixed conflicting keyboard accelerator

1.1.5 2023-05-25

  * Added Italian translation
  * Several translation corrections
  * Fixed conflicting keyboard accelerators

1.1.4 2023-05-23

  * Added Portuguese translation
  * Changed button text (English original)
  * Translation changes:
    - Added missing translations
    - Changed translation of German button text

1.1.3 2023-05-21

  * Added Spanish translation
  * Several fixes for the German translation

1.1.2 2023-05-05

  * Added French translation
  * In the German translation, fixed different accelerator for the 
    Shortcuts Window for the menu button and menubar versions 
    respectively

1.1.1 2023-05-01

  * A couple of text additions, changes, and corrections

1.1.0 2023-04-28

  * Support for localization. A German translation is now included.

1.0.96 2023-04-27

  * Equivalent to the behavior for menus and pipe menus, a find-and-replace 
    that would delete the text of an item label, making the item invisible, 
    is now blocked
  * Corrected wrong tmp path in one of the hints texts

1.0.95 2023-04-20

  * If Kickshaw was restarted to reset the settings file because of a 
    parsing error it did assume that the program is already installed, 
    thus did not make use of the change introduced in the previous update.
    For this particular case of a restart, Kickshaw now follows the 
    pattern introduced in the previous update.

1.0.94 2023-04-19

  * Kickshaw can now also restart itself if it is currently not yet 
    installed, but only present in a local directory
  * Small text change to enhance consistency

1.0.93 2023-04-01

  * When compiling Kickshaw, there is now an immediate check whether the 
    GLib and GTK version requirements are fulfilled. Prior to that, the 
    minimum requirements were only mentioned in the README file, and the 
    compiler would just issue warnings if it enountered GLib and GTK 
    functionality that was only available to newer versions of GLib and 
    GTK than the ones installed.

1.0.92 2023-03-30

  * Fixed issue that because of the unreliabilty of GTK_IS_WIDGET (), 
    it could happen that the search and replace window couldn't be opened 
    a second time
  * Added explanatory text to the error message that is shown when an 
    invalid regular expression is entered in the search box
  * Added some additional G_LIKELY/G_UNLIKELY macros for if conditions 
    as hints for the compiler

1.0.91 2023-03-28

  * Small adjustment for testing with the static analyzer of GCC
  * Some additions to the README file
  * Cosmetical changes

1.0.90 2023-03-26

  * If the About dialog is shown and there is no internet connection, 
    Kickshaw will now continually check if one has been established in the 
    meantime. If so, the version text will receive an update. In addition 
    to that, if there is no internet connection, it will no longer happen 
    that trying to connect to the download server blocks the program, since 
    the connection process is now handled asynchronously. If the download 
    server can't be reached, there is no longer an error message printed 
    to standard error, but a notice is added to the version number that 
    checking whether the installed version is the latest available one 
    needs an internet connection.

1.0.89 2023-03-24

  * Somewhat refined text output for the error message regarding invalid 
    arguments
  * The text for the command-line help has been stylistically condensed so 
    that it should be fully visible within an 80×24 display. Nothing has 
    been removed from the content.
  * Miscellaneous changes for the unification of code

1.0.88 2023-03-22

  * Reintroduced the old behavior that Kickshaw can be started with a yet 
    non-existent file as an argument, as long as the directory where it 
    would be located exists
  * After saving a file, if Openbox is running, Kickshaw will now properly 
    wait to check if the command 'openbox --reconfigure' succeeded
  * Miscellaneous changes for the unification of code

1.0.87 2023-03-20

  * Before the switch to getopt_long for options parsing, if more than one 
    invalid option was passed to Kickshaw, it showed all of them, not just 
    the first one. This behavior has been reintroduced for clarity.
  * Removed redundant code
  * Cosmetical changes

1.0.86 2023-03-19

  * If a directory is passed as an argument, Kickshaw will no longer attempt
    to open it, but print an error message and quit
  * If iconv is available, when a file path is passed as an argument Kickshaw 
    now checks if the file is a text file encoded in UTF-8. If it isn't, an 
    error message is printed and the program is terminated.
  * Small/cosmetical changes

1.0.85 2023-03-18

  * Kickshaw now uses the GNU extension getopt_long to parse options passed 
    to it. Not only results this in shorter and simpler code, but also 
    enables the combination of arguments as in '-hv'.

1.0.84 2023-03-15

  * Removed double word in the text for the dialog window that appeared 
    when Kickshaw was restarted after an irregular termination and the edit 
    history could not be restored because it had already been removed from 
    the temporary folder where it was stored
  * Small/cosmetical changes

1.0.83 2023-03-10

  * If glibc is not installed on the target system, Kickshaw is now compiled 
    with a replacement function for strverscmp. This makes it possible again 
    to compile Kickshaw independently of the existence of glibc. Therefore, 
    Kickshaw is again less limited to systems relying on the GNU/Linux 
    ecosystem, and can be compiled effortlessly on BSDs and other 
    Unix/Unix-like operating systems.

1.0.82 2023-03-07

  * Removed superfluous function parameter and its associated code
  * Replaced some TRUE and FALSE parameters with more expressive
    identifiers defined by enumerations
  * Small internal change concerning the About dialog window
  * Fixed garbled text in comments
  * Cosmetical changes

1.0.81 2023-03-04

  * Fixed usage of wrong auto cleanup function
  * Removed remaining variables that were used to store the size of
    allocated memory
  * Cosmetical changes

1.0.80 2023-03-01

  * If the program is restarted because of a change of the client 
    decorations or menu type, the GtkApplication instance is now terminated 
    beforehand, thereby eliminating possible problems

1.0.79 2023-02-26

  * The few occurances of usage of memory slices provided by GSlice have 
    been replaced by standard memory allocation (g_malloc). 
    The latter has been improved in the meantime, so using GSlice does no
    longer offer advantages. GSlice could also have remained in the code 
    given that with GLib version 2.76 it uses g_malloc internally anyway, 
    on the other hand the switch to g_malloc unifies the code. Also, 
    saving the size of the allocated memory in a variable for later 
    freeing is no longer necessary.

1.0.78 2023-02-25

  * Simplification by using a GLib function instead of own code

1.0.77 2023-02-12

  * A loop has been simplified, avoiding the necessity to add a comment for 
    explanation

1.0.76 2023-02-10

  * More unified and efficient handling of the home folder path string.
    The substitution of the home folder path with a tilde in the 
    title/header bar will now also work if the home directory is located
    somewhere else than /home/user_folder. Also, the path is now also shown 
    in the header bar if it is located outside the home folder.

1.0.75 2023-02-06

  * The only occurrence of g_assert() is now by default omitted when compiling 
  * Fixed garbled text in comment

1.0.74 2022-10-09

  * With version 2.74, GLib's port of PCRE to PCRE2 has been completed.
    Kickshaw now uses GRegex again. Up to an installed version 2.72 of 
    GLib, Kickshaw will thus indirectly use PCRE for the processing of 
    regular expressions, while with newer installed versions of GLib  
    the underlying version of PCRE used by Kickshaw is PCRE2.
    The dependency on PCRE2 moves from Kickshaw to GLib, so GTK is the 
    sole direct dependency of Kickshaw again.
  * Fixed missing escaping in regular expression
  * A compiler warning caused by an internal change of GLib 2.74 is 
    now avoided by a version check of GLib

1.0.73 2022-06-15

  * Added a check for the existence of a path for the case that 
    the program is supposed to scroll to a certain cell

1.0.72 2022-06-06

  * The source files are now compiled using the newer GNU11 standard, 
    replacing the compilation with GNU99. At the time of this update, 
    this eliminates a couple of warnings when compiling with newer 
    versions of Clang. The C11/GNU11 standard is now old enough to use it 
    for this application anyway.
  * Minor internal and cosmetical changes

1.0.71 2022-05-20

  * Some minor internal changes
  * Changed one of the fake quotes

1.0.70 2022-05-17

  * Some minor internal changes
  * Changed one of the fake quotes
  * The plans of the GTK team about the future of GRegex have changed, 
    hence the comments here about the transition to PCRE2 were outdated.
    This CHANGELOG file has been updated accordingly.

1.0.69 2022-05-11

  * Some minor internal changes
  * Minor change in one of the fake quotes. Since at some point of time 
    glib-compile-resources has been changed so that it just generates 
    one array with the compiled resources, the HOWTO file has been 
    updated to reflect this change.
  * Cosmetical change

1.0.68 2022-03-23

  * Removed unnecessary code that was never called anyway
  * Small rearrangement of code

1.0.67 2022-03-22

  * Corrected a typo in the error message for issues with icons
  * Corrected a loop condition (the original condition did not lead to an 
    erroneous outcome)

1.0.66 2022-03-21

  * Corrected capitalization for one of the application menu items
  * Simplified code

1.0.65 2022-03-12

  * Centralized the function declarations in the main include file to 
    simplify their handling. During this process, the declarations have 
    been cleaned up.
  * Cosmetical changes

1.0.64 2022-03-10

  * Fixed a memory leak that occurred when invisible menu elements
    were visualized during load time by user interaction

1.0.63 2022-02-25

  * The space reserved for toggle symbols inside the context menu is now
    hidden because it is not needed there
  * Small/cosmetical changes

1.0.62 2022-02-21

  * Headlines in the context menu are now insensitive to better 
    distinguish them from the selectable menu items
  * The release year inside the resource file info_version is no longer
    hardcoded so that all the compiled resource files don't have to be 
    copied into the code again if there has been a release in a new year 
    and nothing content-related was changed in at least one of the 
    resource files

1.0.61 2021-12-30

  * Fixed issue that GLib 2.70 caused a compilation error because pango 
    autocleanup macros were introduced in this version. Because of their 
    absence before 2.70, those were defined by the main include file 
    of Kickshaw, causing a conflict when GLib 2.70 was installed.

1.0.60 2021-09-02

  * Since GLib has not yet transitioned to PCRE2, this has been done 
    here by replacing GRegex with PCRE2 code. Therefore Kickshaw 
    now has an additional dependency. PCRE2 must have been built with 
    unicode support, which is usually the case.
  * Bugfix (regression): Clicking the "Cancel" button for the restart 
    window (change of decorations type/menu type) will again actually 
    cancel the restart
  * Bugfix: When a menu was saved at the standard path 
    (.config/openbox/menu.xml), the autosave wasn't deleted as it was 
    supposed to
  * The header bar settings for dialog windows are now done case-by-case.
    For the file chooser dialogs (open/save), the header bars have been
    deactivated again.
  * Minor/cosmetic changes
  * Removal of redundant code

1.0.59 2021-08-30

  * For g_regex_match_simple(), the applications of G_REGEX_ANCHORED have 
    been moved from the compile to the matching options as 
    G_REGEX_MATCH_ANCHORED. In the end, the result for all the cases that 
    appear in the code of Kickshaw is the same; since both G_REGEX_ANCHORED 
    in the compile options and G_REGEX_MATCH_ANCHORED in the matching 
    options were present this unifies the code.

1.0.58 2021-08-13

  * The dialog windows now make use of a custom header bar. The main window 
    still uses server side decorations by default, but the new custom 
    header bar makes more sense for the dialog window as it reduces the 
    shown elements to the title text. There is no longer uncertainty for 
    the user which of several options will apply (if any) if the dialog 
    window is closed by pressing the close button of the dialog window.
    The About dialog is also set to use a header bar now. When using server 
    side decorations, depending on the environment the program is running 
    a maximize button might be shown, but clicking it yields no effect. 
    In addition to that, a minimize button is of little relevance in the 
    About dialog. GtkShortcutWindows, which is used by Kickshaw, features 
    a header bar, so these changes somewhat unify the appearance.
  * Made the second argument for create_file_dialog () clearer (OPEN_FILE 
    and SAVE_FILE instead of TRUE and FALSE)
  * Minor and cosmetic changes

1.0.57 2021-08-06

  * The settings boolean variables have now been grouped inside a bit 
    field to unify the handling and to allow for a more compact code, for 
    example by using loops. The GSettings API still seems to be aimed at 
    projects that are larger in scope than Kickshaw.
  * The code for the restart dialog that was shown in the case of a 
    decorations type or menu type change was quite redundant as it was 
    present in both the change_view_and_options function variants, with 
    only a few adaptations done to the respective variant. The restart 
    dialog code has been moved to a separate function, thereby eliminating  
    the redundancies.
  * Bugfix (regression): When the program was terminated and an undo 
    stack file was read after a restart (also for example after a regular 
    restart because of a change of the decorations type or menu type), 
    internally this was registered as an edit being done. If you did a 
    regular restart because of the changes stated above and left the 
    program immediately afterwards, the program was therefore erroneously 
    telling user that there were unsaved changes.
  * Fixed a minor bug that did not change the outcome of the expected 
    result
  * Minor changes
    - When the menu couldn't be loaded properly, the title or header bar 
      respectively will now show "Unsaved Menu" as in other cases when 
      there is an empty menu
    - Another movement of a group of variables to a bit field
    - Memory usage has been reduced a bit
  * Cosmetic changes (typo in variable name, corrected indentation of two 
    of the fake quotes, etc.)

1.0.56 2021-08-03

  * Added mnemonics to the pages of the Hints window so that they can 
    be accessed more quickly
  * Made some of the mnemonics for the buttons in the button box more 
    obvious (i.e. by using the initial letter); this does not lead to 
    conflicts with other mnemonics.
  * The entry completion does now also work when using non-ASCII 
    characters. Note that the sorting of the displayed matches is done
    according to the current locale. Kickshaw can't determine by itself 
    if another locale should be used as a base, especially if words from 
    different languages are included in the tree store.
    If an option is selected, the entry completion will now show only 
    matches for the current option type, i.e. when for example a 
    wmclass option is selected, only matches for wmclass options are 
    shown to prevent the list of matches getting cluttered with 
    irrelevant matches.
  * If, after saving the menu, an undo or redo action is executed, the 
    "save" toolbar button and menu item is now sensitive again
  * The way of setting the application's language application-wide to 
    English has been changed because over time due to code changes and 
    rearrangements it was not working anymore
  * Code restructuring throughout the code (mainly reduction of variable 
    scopes)
  * Removal of redundant code
  * Minor/cosmetic changes

1.0.55 2021-07-31

  * Simplified code for Hints window
  * Changed the type of some loops to allow for a clearer code structure
  * Added additional acknowledgement to credits
  * Moved the list of shortcuts and the base text for the fake quote that 
    is constructed out of random elements to resource files. Code dealing 
    with these texts had to be changed accordingly.
  * Rewrote and updated the HOWTO file for the resource files
  * After a test the code was not reverted to its normal state 
    before release (this was only about a missing const qualifier)
  * Minor changes
    - Added two auto cleanups
    - Added const qualifiers for arguments of auxiliary function and
      undo_redo_autosave messaging function 
    - Added NULL termination check for auxiliary function
      add_elements_to_ptr_array
    - Change of function name
  * Cosmetic changes (unification of text in "find and replace" menu 
    item and window, rearrangement in definitions_and_enumerations.h, 
    etc.)

1.0.54 2021-07-29

  * Updated hints text
  * Removal of redundant code
  * Better expression in message inside the makefile
  * Added a note to the README file that the compiler used can be easily 
    switched from the default GCC to Clang by using "make CC=clang"
  * Added the variety of English used in the program (American English) as 
    a note to the README file
  * "Americanized" remaining BE function names and a word inside a comment
  * Corrected spelling mistake in function name
  * Cosmetic change (corrected spelling mistake of menu elment in code 
    comment)

1.0.53 2021-07-27

  * Capitalization in menu items, tooltips, title bars, buttons, combo 
    box items, and headlines adheres more consistenly to the established 
    standards. The reference style used is the APA Style. This has also 
    been noted in the README file.
  * Added some content for the fake quote that is constructed out of 
    random elements. Not using the ellipsis in this quote anymore, as this 
    screws up the calculation of the line break positions. Whilst the
    iteration used by the calculation moves from one UTF8 character to the 
    next one, an ellipsis takes the space of three ASCII characters on the 
    screen. A line that includes an ellipsis thus takes too much space if 
    it uses the UTF8 character.
  * Minor code changes related to the calculation stated above

1.0.52 2021-07-25

  * Bugfixes regarding the fake quote that is constructed out of random 
    elements:
    - A wrong conversion specification that was used in a call to 
      strftime has been corrected. The current month is now properly 
      obtained as decimal number. This only affected the quote if the 
      random year was the same as the current year. Other code regarding 
      this month variable has been changed as well. 
    - The random day was only chosen from a range from one to the latest 
      possible day - 1. The range includes now the latest possible day 
      (i.e. depending on the month 29 to 31).
  * Revised some of the fake quotes, mostly language corrections
  * Added some content for the fake quote that is constructed out of 
    random elements
  * Using the ellipsis unicode character instead of three dots in text
  * Other minor changes and code reorganization. The Kickshaw fork names 
    have been moved to a resource file, while the names of the months of 
    the year are back again in the program itself. The resource files 
    are now specifically intended for data that could be added over 
    time. Data that is unlikely to change over time and consists of only 
    a small number of elements remain within the program itself.

1.0.51 2021-07-23

  * Bugfix: If the menu type was set to menu bar and the settings file 
    had the values for sf-usetabs and sf-separaterootmenu set to true, 
    the program did not set the corresponding global variables to true, 
    despite the window showing the "Use Tabs for Indentations..." and 
    "Keep Root Menu Separate..." in a checked state. In this case, menus 
    were therefore saved with spaces used for indentations and with an 
    integrated root menu, unless the menu items were activated manually 
    twice by the user.
  * In the hints, the location of the settings file is specified more 
    precisely
  * The English of one of the fake quotes has been corrected
  * Minor changes

1.0.50 2021-07-22

  * Bugfix: If the menu was changed during the loading process to correct 
    errors, convert deprecated "execute" options and/or visualize/delete 
    invisible menu elements and the program was left afterward without 
    having done any edit, the program showed the "Changes to the Menu Will 
    be Discarded" window, but with an incorrect text that is intended for 
    another case. It would state "[...] the changes have been reverted and 
    the menu is now back at its initial stage." For the cases mentioned 
    above, the window will now show a proper message.
  * Bugfix: If a new menu was created and it was restored after a regular 
    restart or an unexpected termination of the program, the list of rows 
    with icons was not restored. This resulted in changes of icon paths and 
    formats no longer being monitored. (The regular restart refers to the 
    kind of restart after a change of the menu type of client decorations 
    type.)
  * Bugfix: Now all relevant global data is stored in the undo stack files. 
    In the case of restoring a menu, this will now also restore the last 
    save position inside the stack and whether the menu has already been 
    edited. This prevents undesired changes in the sensitivity of the toolbar 
    buttons, for example, the save toolbar button and save menu item becoming 
    sensitive even though no changes have been made.
  * Bugfix: If a new file was opened by the user and that file could not be 
    parsed for a reason, nethertheless a new undo stack item was pushed on 
    the stack, resulting in the activation of the undo toolbar button and 
    undo menu item
  * If during the loading process a change to the menu has been applied and 
    no edit has been done yet, the tooltip for the save button now contains 
    a hint that the menu has already been changed, but not saved back yet. 
    This is to give an explanation why the button's sensitivity is activated.
  * All possible loading process edit statuses are now stored in the undo/
    redo stack files so that they can be restored in case of an unexpected 
    termination of the program (crashes etc.)
  * More efficient processing of undo stack files
  * The text of the fake quote that is constructed out of random elements 
    has been further expanded
  * g_autolist and g_autoslist were introduced with GLib 2.56 (2018). To 
    ensure that systems with older installed GLib versions can compile 
    the program, conditional compiling for these cases has been added.
  * Minor/cosmetic changes

1.0.49 2021-07-19

  * The entry field completion's list of matches is now sorted 
    alphabetically
  * For the entry field completion, the words "Execute", "Exit", 
    "Reconfigure", "Restart", and "SessionLogout" (designating actions), 
    as well as "command", "prompt", "startupnotify", "enabled", "name", 
    "wmclass", and "icon" (designating options) will no longer be added 
    to the list of suggestions if they appear in the context of an action 
    or option respectively and the currently activated entry field refers 
    to a label. These designators are added by the program, not the user, 
    to the menu and are invisible; they are not labels. If the words appear 
    outside of such a context, they will still be added to the entry field 
    completion list.
  * In addition to g_autofree and g_autoptr, now using g_autolist and 
    g_autoslist where possible and appropriate
  * For the fake quote that is constructed out of random elements, added 
    an additional one of the latter. The quote's text has also been 
    expanded.
  * Minor changes

1.0.48 2021-07-16

  * The entry fields in the entry grid now have completion functionality, 
    meaning that the user is presented suggestions based on the existing 
    texts inside the relevant column
  * The entry field for the "find" grid was of the generic GtkEntry type; 
    the type has been changed to the more specialized GtkSearchEntry one
  * Added some additional fictional cities for the fake quote that is 
    constructed out of random elements
  * Expanded the credits and corrected a language error there

1.0.47 2021-07-13

  * Changed the wording of a view menu item. If the user had an older 
    version of Kickshaw installed, starting the new version for the first 
    time will require a reset of the user settings.
  * Added some additional fictional cities for the fake quote that is 
    constructed out of random elements
  * Added the display of a random doubting expression to this quote
  * README file:
    - Stressed the UTF-8 base of the search functionality
    - Added an instruction for how to cope with a harmless issue

1.0.46 2021-07-10

  * Added some additional const qualifiers where it made sense to do so
  * If there is more than one resource file of a category, these files have 
    been moved into a subfolder to facilitate actions like counting
  * The number of (fake) quotes is no longer hardcoded, but calculated so 
    that if quotes are added or removed there is no longer the risk of 
    forgetting to change the number
  * Minor changes

1.0.45 2021-07-07

  * A couple of code changes and rearrangements that improve the style to 
    avoid false positives reported by the Clang Static Analyzer
  * For the fake quote that is constructed out of random elements, only the 
    first ten fictional cities from the cities list were evaluated in the 
    random generator
  * Added two fictional cities from Saints Row for the fake quote that is 
    constructed out of random elements (it was mistakenly assumed that 
    this change was already done for 1.0.44, so this had appeared in the 
    changelog for this version)

1.0.44 2021-06-29

  * Removal of redundant code

1.0.43 2021-02-24

  * Changes related to the "Credits" section of the "About" window:
    - Added additional credits
    - Correction: The name of the menu editor that served as the original 
      model for moving nodes was the Xfce 4.4 menu editor and not its 
      successor Alacarte

1.0.42 2021-02-11

  * If the user chooses to quit the program, there have been edits done, 
    but those have been reverted so the menu is at either its initial 
    state or the state after the last save, the user will receive a 
    message that is different from the one that is shown when the 
    current menu differs from the initial state or the last save
  * Small changes related to the dialog window mentioned above

1.0.41 2021-02-06

  * The layout of the XML sample code of the menu file hints is clearer
    now
  * More compact code for showing noticing dialogs by adding a new helper
    function
  * Added some mnemonics to dialogs

1.0.40 2021-02-03

  * Added two new options that affect the saved menu. The first one is 
    for choosing the type of indentation (four spaces or tabulator), 
    whilst the second one is for choosing the type of the menu structure 
    (either everything is put inside the root menu without using links or 
    the menus are be placed outside the root menu, with the root menu 
    linking to the menus). Tabulators for indentations and separate menus 
    outside the root menu are set as defaults.
    If there are invisible orphaned menus and the menu is saved with 
    the "Keep Root Menu Separate in Saved Menu File" option being disabled, 
    these orphaned menus will now become visible, provided that they have 
    a label, since they are integrated into the root menu in this case.
  * Some incorrect XML sample code inside the hints files has been 
    corrected (wrong formatting, tags that are supposed to be 
    self-closing had their dashes missing)
  * The saved menu file will no longer contain a superfluous extra line 
    break after the <openbox_menu> tag if the root menu is saved separate 
    (see above) and there are no menus listed above the root menu

1.0.39 2021-01-23

  * When using client side decorations, the title and subtitle are now
    assigned fixed font sizes so that the look of the headerbar always 
    remains consistent throughout different themes (if the fonts are too 
    large, they appear disproportionate compared to the buttons in the 
    headerbar)
  * Minor/cosmetic changes

1.0.38 2021-01-19

  * If the program is restarted because of a change of the client 
    decorations or menu type, the menu data incl. the editing history 
    (for undo/redo) will be restored. It is thus no longer necessary to 
    ask the user if the menu should be saved if unsaved changes exist.
    If the program has been terminated irregularly, the editing history 
    can now be restored as well, if the temp folder with the undo stack 
    files has not yet been removed.
  * Fixed wrong markup in error message
  * Minor/cosmetic changes

1.0.37 2021-01-15

  * The remaining occurrences of const-qualification-cast-aways have been 
    replaced with safer code

1.0.36 2021-01-12

  * If a menu has been restored from an autosave, this menu has never been 
    saved yet and the user wants to quit the program, now a dialog similar 
    to the one informing about unsaved changes appears, asking the user 
    whether to abort quitting the program

1.0.35 2021-01-09

  * Changed the shortcut for accessing the help window from CTRL + F1 to 
    F1 since this is the standard for opening general help info. Also 
    using CTRL + F1 as a shortcut seems to be sometimes conflicting with 
    other uses of this shortcut.
  * Fixed memory leak when accessing resource texts
  * Code rewrite to prevent repetitions
  * Minor/cosmetic changes

1.0.34 2021-01-06

  * The app is now properly closed before a restart is initialized because 
    of a change of the client decorations or menu type; this should 
    prevent occasional failures of the restart process. (This change was 
    based on an erroneous assumption and was reverted in 1.0.38.)

1.0.33 2021-01-03

  * The date inside the special composed fake quote in the credits can 
    now never be later than the current date (it doesn't really matter, 
    but that is how it is supposed to be)
  * The English in the (fake) quotes is now "more native"
  * Minor/cosmetic changes

1.0.32 2020-09-13

  * Small grammar and punctuation improvements to the resource texts

1.0.31 2020-07-19

  * Small/cosmetic changes

1.0.30 2020-07-09

  * Added autosave. The hints texts have been updated accordingly.
  * Removed ability to save a yet unedited new empty menu whose path was 
    passed as an argument. The ability to save the menu in its original 
    empty state was enabled by setting a variable that monitors changes to 
    TRUE, but that collides with the case that the menu is left without an 
    actual change being done, resulting in Kickshaw asking about how to 
    handle unsaved changes. This makes no sense in this context, as there 
    haven't been done any actual changes.
  * Small/cosmetic changes

1.0.29 2020-07-07

  * If a new separator is to be added and a menu is currently selected the 
    program will ask now if the separator should be inserted into the 
    selected menu or on the same level. This was already done for new 
    (pipe) menus and items and has been added for consistency.
  * Kickshaw accepts now the "-h" and "--help" arguments, which direct the 
    user to the hints window. One of these arguments can be combined with 
    "-v" or "--version".
    The hints texts have been updated with these changes.
  * When started with a path as an argument, Kickshaw will now handle 
    paths that include a tilde and at least one space such as 
    ~/test/test menus/testmenu.xml correctly. For a path such as 
    "./menuname.xml" Kickshaw will display a shortened path with a 
    tilde at the beginning in the title- or headerbar.
  * When the menu file is located directly inside the home folder, 
    the full home path is now shown in the title- or headerbar instead 
    just a tilde
  * The const type qualifier is used more consequently throughout 
    the program
  * Some small changes done to the fake quotes in the credits
  * Other small/cosmetic changes

1.0.28 2020-06-26

  * Changes to the (fake) quotes code and to some of the (fake) quotes 
    themselves
  * Fixed memory leak

1.0.27 2020-06-21

  * The (fake) quotes inside the About dialog credits are now chosen 
    randomly from a pool of quotes. One of the quotes is real. In addition 
    to this, there is a single quote that is constructed out of randomly 
    chosen elements.
  * Fixed memory leak that occured when the hints window was shown

1.0.26 2020-06-12

  * Using GResource now to compress longer static texts of Kickshaw and to 
    ease their editing, since they are now stored as plain text files 
    inside a separate folder

1.0.25 2020-06-06

  * When a dark theme is in use and a double menu ID is being typed 
    inside the "Enter Values" mask, inside the entry field the 
    cursor color is now also adjusted in addition to the font color
  * Bugfixes for menubar (regressions):
    * When the decorations type was changed, the status was not 
      retained after another restart
    * The "Keep Highlighting" menu item is again insensitive by 
      default
  * Small/cosmetic changes

1.0.24 2020-06-01

  * Small/cosmetic changes

1.0.23 2020-05-28

  * Better presentation when a dark theme or a theme with a gradient is 
    used

1.0.22 2020-05-26

  * Fixed crash that would occur when Glib >= 2.64 was installed and a 
    new (pipe) menu or item was added
  * Small/cosmetic changes

1.0.21 2020-05-24

  * When restarting after changing the decorations type or application 
    menu type, the old undo stack items folder is now removed
  * Code restructuring to get rid of false positives issued by gcc and to 
    group together related code and variables
  * Small/cosmetic changes

1.0.20 2020-05-22

  * In addition to --version, -v is now also accepted as an argument for 
    showing the installed version
  * Small changes
  * Fixed bug of not using the search path when restarting the app
  * The problem of Openbox occasionally not being reconfigured after 
    saving has been solved

1.0.19 2020-05-20

  * Since at the time of the release certain Linux distributions like 
    Ubuntu 16.04 are still supported, the required version of GTK to 
    compile the program has been lowered to 3.18
  * Small/cosmetic changes

1.0.18 2020-05-18

  * Now using GLib's autocleanup macros where possible
  * When restarting after changing the decorations type or application 
    menu type, the program does now reload the previously opened menu 
    and not just the standard menu (if it exists)
  * The Search and Replace dialog can no longer be (accidentally) opened 
    several times at the same time from the application menu; the existing 
    dialog is now always presented instead.
  * Bugfix (regression): Fixed crash when saving menu
  * Bugfix (regression; was only applicable when using the menu button)
    When deprecated execute options were converted to 
    command options and the setting to always show a message about such 
    conversions having taken place was active, the setting was 
    deactivated, no matter what the user had chosen in the dialog
  * Fixed 
    * double appearance of dialog
    * missing reset of menu item status 
    when the user had the traditional menubar shown and chose to change 
    the decorations type but clicked "cancel" in the dialog window
  * Fixed memory leaks
  * Small/cosmetic changes

1.0.17 2020-05-10

  * The user can now switch between a menu button and a menubar
  * Small/cosmetic changes

1.0.16 2020-05-06

  * When the user chooses to change the decoration type, there is now the 
    possibility to restart the application to apply this change or to 
    cancel the change. Before this version, users had to restart the
    application themselves.
  * The arrangement of dialog buttons is now more consistent
  * It is now possible to create a new menu when the current menu is 
    empty
  * Small/cosmetic changes
  * Fixed regressions regarding the window title when using server side 
    decorations:
    * Not setting the title to "Unsaved Menu" when during the startup
       no menu file was found
    * Memory leak

1.0.15 2020-05-04

  * There is now the option to switch between server side decorations and 
    client side decorations. This can be chosen from the application 
    menu's option menu. Server side decorations are set as default, 
    but when using this option the application menu is now also shown by 
    clicking on a GtkMenuButton. Assumingly, users will not need the 
    application menu often, so to get rid of one of the four top bars it 
    seemed appropriate to use a GtkMenuButton for the application menu.
  * Bugfix: When updating to 1.0.14, error messages came up because the 
    version number of the settings file was not parsed correctly
  * Small/cosmetic changes

1.0.14 2020-05-03

  * The GUI is now client side decorations based (this was made optional 
    in the following version). This reduces the number of bars from four to 
    two, as the former menu bar, toolbar and title bar are now integrated 
    in a single bar. In this process, support for older GTK versions has 
    been dropped, since GtkHeaderBar requires GTK >= 3.10. Since GTK3 is 
    now only maintained and no longer actively developed, this should have 
    no repercussions, as installations with older GTK3 versions are becoming 
    rare.
  * Added shortcuts for the visualization of orphaned menu elements
  * The option to show treeview rows in alternate colors has been removed, 
    since the possibility for setting this from inside a program other than 
    by using g_object () has been removed for quite some time. In the vast 
    majority of cases, the option has been useless.
  * Cosmetic changes

1.0.13 2020-04-25

  * If there is something wrong with the keys inside the settings file, 
    there will now be an error message
  * Small/cosmetic changes

1.0.12 2020-04-18

  * Further additions and changes to the texts of the "Hints" window
  * Using GLib functions instead of the standard system() C library function
    to run "openbox --reconfigure"
  * Small/cosmetic changes
  * Disabled the built-in interactive search for the tree view as Kickshaw 
    provides its own search functionality and because it is not working 
    properly within Kickshaw's setup

1.0.11 2020-04-11

  * Added "Report Issue" menu item inside the "Help" menu for reporting 
    bugs. This opens a dialog window from where the user is redirected 
    to the bug tracker webpage of Kickshaw.
  * Additions and changes to the texts of the "Hints" window. The window 
    can now also be left by pressing the escape key, in addition to 
    pressing <CTRL> + F1, which is also the accelerator for opening the 
    window. This was done to make the behaviour of the window equivalent 
    to the "Shortcuts" and "Find & Replace" window.
  * Miscellaneous code reworkings
  * Bugfix (regression): After a change was done to the menu, it needed 
    another change or a click on the treeview to have to "Save" 
    menu and toolbar item set to sensitive
  * Bugfix (for the GTK versions < 3.4): The app window didn't show up
  * Workaround (for a GTK bug inside the GTK versions < 3.1.4):
    The functionalities of the functions gtk_grid_set_column_homogenous() 
    and gtk_grid_set_row_homogneous() were flipped in these early 
    GTK versions. A GtkBox instead a GtkGrid is used now to avoid this 
    bug, since using a GtkBox practically changes nothing.

1.0.10 2020-04-04

  * Added a hints window that can be called from the "Help" menu.
    The shortcut for opening the menu is CTRL + F1 (this was later changed 
    in version 1.0.35 to F1; see the comments there).
  * Bugfix: The string comparison issue (see last revision below) has now 
    also been fixed for the settings file

1.0.9 2020-03-28

  * The entry form for a new menu alerts about a double menu ID already 
    at the time when it is typed and not just when the "Done" button is 
    pressed. Other than with the "Done" button this is not done with 
    a popup window but with a highlighting of the entry field together 
    with a label that (just) in this case appears next to the entry field.
  * The labelling of mandatory menu IDs has been made clearer for the case 
    of empty string menu IDs (see below)
  * Equivalent to showing and hiding the "find" grid, the "find and replace" 
    dialog window can now be shown and hidden by pressing CTRL + H.
    (The former functionality for CTRL + H already existed; this was done 
    for having a consistent handling of "find" and "find and replace".)
  * Added a List of Shortcuts window that can be called from the "Help" menu.
    The shortcut for opening the menu is CTRL + L. The widget for this window
    was introduced only in GTK 3.20, so if this or a higher version is not 
    available on the user's PC the Shortcuts menu item will not be created 
    and shown.
  * Regardless of the installed GTK3 version, the text of a menu file is now 
    always checked for UTF-8 validity. Since this change only affects the 
    oldest GTK3 versions this is hardly relevant to any user.
  * Bugfix: A simple string comparison is not always working correctly for 
    comparing versions as it was done for the "About" window. For example 
    1.0.9 would be incorrectly shown as being newer than 1.0.10.
    The comparison is now done by glibc's specialized strverscmp().

1.0.8 2020-03-21

  * Since an empty string is a valid menu ID, inside the entry form for a 
    new menu the program will now label the menu ID as mandatory if 
    a menu ID with an empty string exists

1.0.7 2020-03-14

  * If there are double/contradictory attribute values for a menu inside 
    and outside the root menu, Kickshaw will handle this now the way 
    Openbox does it
  * Minor/cosmetic changes

1.0.6 2020-03-07

  * Capitalization according spelling standards/rules now throughout the 
    program
  * Small/minor/cosmetic changes

1.0.5 2020-02-26

  * Bugfix (regression): If a menu element had the label "Exit" or 
    "SessionLogout", it was selected and a new menu element was added, 
    that menu element received a "yes" value, regardless of its type
  * Code simplification
  * Small/cosmetic changes

1.0.4 2020-02-23

  * Bugfix: After a (pipe) menu was added, the "Options" menu bar item 
    sensitivity was not reset to sensitive

1.0.3 2020-02-22

  * Bugfix (regression): Adding a menu or item with an icon and adding 
    a separator directly afterwards would result in the separator 
    receiving the menu icon of that previously added menu or item
  * Changing an "enabled" option or a "prompt" option of an 
    Exit/Startupnotify action will now trigger the writing of a new 
    undo stack item. Furthermore, this is now recorded internally as a 
    change so the program will show a confirmation message if the 
    user wants to leave the program without having saved the menu 
    prior to exiting.
  * If an entry into one of the entry fields below the tree view 
    is identical to the currently stored value, a new undo stack item
    is no longer written
  * Addition to the credits in the About dialog

1.0.2 2020-02-16

  * Fixed memory leak inside the About dialog and the error message for 
    the failure of the removal of an undo stack item
  * Added (parent) nodes are now always selected first before a new 
    undo item is created so that the selection states are always
    recoverable
  * Code optimizations

1.0.1 2020-02-09

  * Fixed a discrepancy in the handling of regular expressions in "find" 
    and "find and replace" that could lead to non-functioning markup
  * CSS definitions for markings are now properly terminated
  * More exact centering of the main window after startup
  * Added detailed list of credits in the "About" dialog window
  * Removal/replacement of a chunk of redundant code had been forgotten
  * Minor changes/optimizations

1.0 2020-02-03

  * Bugfix (regression): Auto-reconfiguration of the menu after saving is 
    working again
  * Bugfix: After an undo/redo, the selection status of nodes with a 
    path depth > 1 is now properly restored
  * Bugfix: "Find and replace" had the same mnemonic as "Find". 
    (The shortcut CTRL + H was working properly, though.)
  * Bugfix: When by "find and replace" a labelless menu, item or separator 
    has received a label, all menus, items, and separators have a label.
    It is now ensured that the visibility status of every menu, item and 
    separator is "visibile" after the replacement.
  * Fixed a memory leak that appears when there is an error during the
    menu file saving process
  * Missing mandatory fields should now be marked regardless of the theme 
    and the setup in general
  * Code optimization and minor/cosmetic changes

0.7.3 2019-04-05

  * When starting the application from the command line, a menu file can be 
    added as an argument (e.g. "kickshaw new_menu.xml" or 
    "kickshaw ~/.config/openbox/menu2.xml"). If it exists, it will be 
    loaded, if not, the program will start with an empty menu under that 
    file name.
    This addition also enables the "open with" functionality within a 
    file manager for this program.
  * In the case of a "save as" operation, the user was always shown the 
    directory "~/.config/openbox" as default directory, even if the current 
    menu file wasn't located there. Now, for a new file ("Unsaved menu" in 
    the window bar) the current working directory is chosen as the default
    directory, wheras for an existing file the directory of the file is 
    chosen as the default directory. In many cases this avoids a manual 
    selection of the directory.
  * Minor changes

0.7.2 2019-03-26

  * The "find and replace" dialog is now non-modal to allow copying from 
    the main window, checking results etc
  * If separator labels are deleted via "find and replace", they will no 
    longer appear afterwards in a saved menu file as an empty attribute
    (<separator label="">), instead there is no longer an attribute at all 
    (<separator />), since an empty label is something a user most likely 
    does not wish to use for a separator.
    The deletion of (pipe) menu labels via "find and replace" is no longer 
    possible, since this would render the menus invisible.
    Before a "find and replace" action takes place, it is now also checked 
    for pipe menus if double menu IDs could appear.
  * If the user used the current version of Kickshaw, but the "latest" file 
    on the server had not yet been mirrored, the about dialog would show 
    an older version as newer. The time delay is now taken into account.

0.7.1 2019-03-24

  * Bugfix: If during a search one of the search options is changed and 
    search results are found after an unsuccesful search, the program is 
    supposed to scroll to the first search result, but wasn't able to do so
    when no cell of the tree view was selected. The first search result is 
    now selected by the program itself.
  * Minor changes

0.7.0 2019-03-19

  * Added find and replace functionality incl. validity check
  * Added "whole word" option to the search options
  * Bugfix: After an undo, for a menu without a label the value for 
    the latter would be set to NULL instead of an empty string
  * Minor/cosmetical changes

0.6.5 2019-02-23

  * Minor/cosmetic changes

0.6.4 2018-04-28

  * Minor/cosmetic changes

0.6.3 2018-04-22

  * The displayed content inside the window title now adheres closer to 
    standards; it shows either the menu file name and its corresponding 
    path or "Unsaved menu" in case of a new unsaved menu.
  * Bugfix (regression): In a very unlikely situation the program could 
    crash in case of an error during a saving process; most likely the 
    saving process would have already been stopped before.
  * Fixed memory leaks
  * Simplifications and replacement of gzwrite and gzread with 
    GZLibCompressor inside the save menu module
  * Minor/cosmetic changes

0.6.2 2018-04-15

  * Undo stack items are now directly written as compressed files via the 
    use of zlib. 
    The data is also read directly from the compressed format, without the 
    detour of writing the uncompressed data into a file and reading from 
    there.
    Compression of undo items will for now be limited to the variants 
    using GTK versions >= 3, since zlib compression has been included in 
    GIO only in version 2.24, which means only from then on I can savely 
    assume that zlib is installed.
    Since a record separator is now used inside an undo stack item, 
    tree store data containing line breaks won't disrupt an undoing/redoing
    process any more.
    If icon files have been changed, renamed or deleted during runtime 
    this is now taken care of during an undo/redo.
  * If a newer version than the installed one is available, this will now 
    be shown inside the "About" dialog (this requires the possibility to 
    access the GNU Savannah download server). If the installed version is 
    the current one, this is also shown.
  * Replaced C file functions with the GLib equivalents, since they ease 
    stricter error handling and include functionality such as automated 
    creation of backups
  * Bugfix: read undo item was not closed
  * Minor/cosmetic changes

0.6.1 2018-04-10

  * Fixed minor regression
  * Minor/cosmetic changes

0.6.0 2018-04-08

  * Added undo/redo functionality
  * Fixed a couple of minor issues

0.5.26 2018-03-19

  * The locale for Kickshaw is now explicitly set to English to avoid a 
    mix of languages appearing in certain widgets as much as possible.
    This has been done due to the fact that this program currently does not 
    feature localizations.
  * Fixed some minor GUI inconsistencies in the GTK 2 variant

0.5.25 2018-03-16

  * Introduction of a version for GTK 4. This is based on the development 
    version 3.93 and still has some quirks that can hopefully be fixed 
    during the following months. It is meant to be a preview and not for 
    use on a live system.
  * The required GTK version for the GTK 2 variant has been lowered to 2.6.
    The GTK 2 version is now also single-instance-only.
  * Both the GTK 3 and 2 versions have received minor or cosmetical 
    changes

0.5.24 2018-03-05

  * Reintroduction of a version for GTK 2. This currently needs at least 
    GTK 2.12. The functionality is identical to the GTK 3 version, with 
    the exception of not being single-instance-only.
  * When a drag and drop is abandoned and there is currently a message in 
    the status bar, the latter is now removed
  * Minor/cosmetic changes

0.5.23 2018-02-20

  * If only one option (i.e. prompt, command, startupnotify, enabled, 
    name, wmclass or icon) can be added, clicking on the action/option 
    button will now always show the preset combo box together with the 
    widgets for setting the option's values. This was done to differentiate
    the button from the context menu. For both the button and the context 
    menu it makes sense that an option's value can be changed at the 
    place on the screen where the option was chosen, without having to move 
    the mouse pointer for long distances.
  * Minor changes

0.5.22 2018-02-11

  * The "new action/option" combo box is now always recreated so that it 
    doesn't take up superfluous space when it is filled with items that 
    are shorter than the previous ones. This is actually a workaround for 
    the missing shrinking of a repopulated GTK combo box.
  * Minor changes

0.5.21 2018-02-07

  * Bugfix - The default setting of the possibility to move with the arrow 
    keys within the tree view and mark all tree view rows with CTRL+A has 
    been reinstated (the latter did only work when no row had been 
    selected)
  * Internal restructurings
  * Minor/cosmetical changes

0.5.20 2018-02-05

  * Bugfix - If a startupnofity option block had been added, that option 
    block had been the only missing action in an "Execute" action and 
    the new menu element screen was opened afterwards for adding a new 
    item, the sensitivity of the action combo box was still deactivated
  * Bugfix - If the action for an item was changed inside the new menu 
    element screen, the "(*) = mandatory" label was hidden for all actions 
    beside "Execute".
  * Minor changes

0.5.19 2018-02-04

  * Fixed memory leak

0.5.18 2018-02-03

  * Inside buttons with text labels, mnemonics are now used throughout the 
    program
  * The "image-missing" icon is no longer shown inside the "About" dialog; 
    since Kickshaw doesn't provide its own icon file yet, this display has 
    been deactivated.
  * Minor/cosmetical changes
  * Bugfix - If no "execute" value for a new pipe menu had been entered in 
    the new menu element screen and the entering process was subsequently 
    cancelled, the red border around the "execute" entry field was not 
    erased
  * Fixed memory leak

0.5.17 2018-01-31

  * In the new menu element screen, deactivating the "startupnotify" 
    option will now reset all startupnotify fields. This prevents that 
    these are added to the new "Execute" option if "startupnotify" has been 
    deactivated.
  * Bugfix - When adding new items with an "Exit or "SessionLogout" action, 
    the "Prompt" option was always set to "yes", regardless the setting
  * Fixed memory leaks
  * Minor/cosmetic change

0.5.16 2018-01-26

  * Added some type casts to avoid compiler warnings for older 
    GLib/compiler versions
  * The "mandatory" status of the "Command" entry field for a new 
    "Restart" action has been removed again; this had been mistakenly 
    added. The status has also been removed when a "Restart" action is 
    added together with an item.
  * Bugfixes (regressions) - Fixed bugs that would result in compilation 
    errors for GTK versions < 3.12
  * Bugfix - If the new menu element screen is open, it is no longer 
    possible to rightclick outside the tree view, to open the context menu 
    with this and to chose a new menu element again. This caused 
    non-critical errors with hander IDs of check buttons.
  * Cosmetic changes

0.5.15 2018-01-25

  * Entering a command for "Execute" of a new pipe menu is now mandatory.
    Deleting such a command without a replacement is no longer possible. 
    This was introduced since Openbox will show an error message if no 
    command has been provided for a pipe menu.
  * Bugfix - If the addition of a new (pipe) menu was blocked due to a 
    missing label, the currently entered menu ID for this menu was added 
    to the menu IDs list despite the new (pipe) menu not having been added 
    yet

0.5.14 2018-01-24

  * Mandatory fields are now always shown with an asterisk inside the 
    corresponding label. There is also a new label that indicates that 
    the asterisk stands for a mandatory field.
  * If a mandatory entry field has not been filled out, this entry no 
    longer receives a red background, but a red border to prevent problems 
    for color-blind users. The same goes for icon path entry fields with 
    incorrect paths. For the same reason, if no column has been chosen 
    during a search, the color contrast of the highlighted check buttons 
    is now higher.
  * Filling out the "Command" entry field for a new "Restart" action is 
    now mandatory
  * Bugfix (to some extent a regression) - If a (pipe) menu or item with 
    an incorrect icon path was selected, in the screen for adding a new 
    (pipe) menu or item the field for the icon path was shown with a red 
    background, thus still indicating an incorrect path
  * Minor changes

0.5.13 2018-01-20

  * Bugfix (to some extent a regression) - If an unlabeled (pipe) menu or 
    item label was selected, in the screen for adding a new (pipe) menu or 
    item the label field was deactivated, thus making it impossible to 
    change the default label (unlabeled menu elements can only appear in 
    menus that have been edited outside Kickshaw, since entering empty 
    labels is prevented by the program)
  * Minor/cosmetical changes

0.5.12 2018-01-18

  * If the regular expression option is activated inside the 
    search screen, a regular expression is now checked for errors before 
    executing the search
  * Bugfix - During a search, special characters like less than, 
    greater than, ampersand, etc. are now escaped in the markup of the 
    matching string chunks, so that matches containing these special 
    characters are also highlighted and a GTK warning is avoided
  * Bugfix - When using certain themes, search matches were shown with 
    a black fore- and background for the selected row
  * Fixed memory leaks
  * Cosmetic changes

0.5.11 2018-01-10

  * Bugfix (regression) - Under certain conditions new items or 
    (pipe) menus were inserted into the currently selected menu element 
    instead of placed after it
  * Bugfix (regression) - When mixing new menus with new items, the 
    deletion of menus often did not delete the corresponding menu ID in 
    the internal list
  * Fixed memory leak
  * Minor/cosmetic changes

0.5.10 2018-01-08

  * Bugfix (regression) - If a row that includes an icon with an invalid 
    icon path is selected, the icon path entry field is highlighted again
  * Cosmetic changes

0.5.9 2018-01-07

  * It is now possible to add items together with an action
  * An input screen has been added for new menus, pipe menus and items.
    It consists of the already existing entry fields plus some additional 
    buttons, depending on the new menu element. 
  * Major internal restructuring
  * Minor/cosmetic changes

0.5.8 2017-12-26

  * The creation of a backup file for an overwritten menu is now optional. 
    It remains activated by default. Settings can be changed via the menu 
    bar (Options -> Create backup before overwriting menu).
  * If not being set off, separators have now the default font
  * The settings file (.kickshawrc) now includes a version information
  * Minor/cosmetical changes

0.5.7 2017-12-24

  * In addition to being a single-instance-only application (see changelog 
    for version 0.5.5), Kickshaw now presents its main window when the 
    program is started a second time and the main window was hidden
  * Minor changes

0.5.6 2017-12-23

  * Added additional conditional compilation, since some of the used 
    functions of G(tk)Application were introduced later during the GTK3 
    development and Kickshaw is supposed to also work with GTK3 versions 
    released before them
  * Minor/cosmetic changes

0.5.5 2017-12-22

  * To avoid possible conflicts during execution, Kickshaw is now a 
    single-instance-only application

0.5.4 2017-12-16

  * Bugfix - If several rows were selected for drag & drop and before 
    doing the drag & drop action they were clicked on (again), it could 
    happen that after the drag & drop process it was no longer possible to 
    select a row
  * Bugfix (regression) - Context menu headlines were not styled under 
    certain conditions
  * Minor changes

0.5.3 2017-12-13

  * Minor/cosmetic changes; no bugfixes

0.5.2 2017-12-11

  * Error message for the case that there is no window system running 
    is now sent to stderr
  * Minor/cosmetic fixes/changes

0.5.1 2017-12-10

  * Bugfix (regression) - If the column checkboxes in the find grid had a
    red background color because a search was done without choosing at 
    least one column and the find grid was closed afterwards, the
    background color was not removed. The same goes for the entry field.
  * Fixed memory leaks

0.5.0 2017-12-09

  * Leading and trailing whitespace of text of options is now removed
  * The dialog texts for fixing invisible and orphaned menus do no 
    longer exceed the requested width
  * Corrected position of GNU macros
  * Bugfix (regression) - Entries of single fields completed with "return" 
    and not by clicking on the "Done" button are working properly again
  * Bugfix (regression) - Visualization of menus/items without label 
    from the dialog is working again
  * Bugfix (regression) - Invalid attributes are rejected again
  * Code optimization, minor/cosmetical changes and removal of redundant 
    code

0.5 RC3 2017-12-04

  * If an option with an invalid value is found during the loading 
    process, the error message now includes line, line no. and the item to 
    which this option belongs to
  * Indentations inside the menu file are now done with tabulators
  * The accelerators for expanding and collapsing the treeview have been 
    changed to <Ctrl><Shift><X> and <C> so they don't interfere with 
    the common shortcuts <Ctrl><X> and <C>. Accelerators for Move Top,
    Move Up, Move Down, Move Bottom and Remove have been added.
  * If the selection of columns, the setting for case matching or for   
    the usage of regular expressions is changed during a search and the 
    results include matches inside currently hidden columns, these 
    columns are now shown, as it was already the case when the search 
    term was entered
  * If the icon theme is changed and the tree view contains the system 
    icons indicating a wrong path for an icon file (=system icon for 
    "question") and/or an unrecognisable image format (=system icon for 
    "missing image"), these icons are updated to the new icon theme
  * Added some conditional compilation to prevent compiler warnings 
    because of deprecated GTK functions. Deprecation warnings should 
    no longer appear, since the development of GTK3 has come to an end in 
    favor of GTK4.
  * Bugfix (regression) - For some editing actions the list of search 
    results was reset after the sensivity of tool- and menu bar items 
    had been reset, which could result in a wrong sensivity for the back 
    and forth buttons inside the find grid after an editing action
  * Bugfix (regression) - If an invalid value for an option was corrected 
    during the loading process, the menu could not be saved back directly 
    after loading was finished; "Save as" had to be used instead prior to 
    a first change done to the menu.
  * Bugfix - Fixed possible crash that could occur when a label of a 
    separator was erased
  * Bugfix - During the loading process, pipe menus without label received 
    an erroneous "invisible item" element visibility status if they had no 
    invisible parents. Menu ids of such pipe menus positioned at toplevel 
    were shown as "(null)" inside the dialog that warned about menus and 
    items without a label. The same erroneous designation happened... 
    ...if a row had a descendant with such a labelless pipe menu and that 
       row was dragged and the pipe menu hd no invisible parent after the 
       dragging
    ...If a visualization was done of another menu element and there was 
       a labelless pipe menu with an invisible ancestor affected by this, 
       in a way that its ancestor received a label
  * Bugfix - If an invalid value for an enabled or prompt value appeared 
    inside an unlabeled item, the corresponding error message showed the 
    item label as '(null)' instead of leaving it out
  * Bugfix - If an invalid icon path is corrected or an invalid icon file 
    is replaced with a valid one during the loading process, the menu can 
    now be saved back directly after loading is finished
  * Bugfix - If several rows were selected and another row with an icon 
    was rightclicked, the context menu showed a "Remove icons" item in 
    addition to the "Remove icon" one
  * Bugfix - If, after an error had occured during the creation of an 
    icon, another icon file was chosen and a creation of an icon was also 
    impossible, the path was not updated in the headline above the error 
    message. The original path is now only replaced if an icon creation 
    is successful; if the situation above occures the new chosen file 
    path will no longer replace the old one if a creation of an icon 
    proves unsuccessful from it.
  * Bugfix - If a text was entered for a single startupnotify field
    after the entry field had been left blank before and the entry field 
    had thus been coloured red, the same startupnotify field would show 
    up coloured if choosen again
  * Fixed memory leaks
  * Code optimization, minor/cosmetical changes and removal of redundant 
    code

0.5 RC2 2013-09-28

  * Added some global keyboard accelerators
  * Entry of empty labels for menus, pipe menus and items is now blocked, 
    since this would result in an invisible menu element. This also fixes 
    the bug that after the entry of an empty label the element visibility 
    was not updated. Menus with invisible elements can still be loaded.
  * A new separator does not have a label by default now, since a separator 
    is always visible anyway
  * If entry fields/buttons for a new action or option are shown, the 
    (first) field/button now grabs the focus
  * If opening a new menu fails and there is still one currently in memory, 
    the latter is no longer cleared
  * If deprecated "execute" options have been found and automatically 
    converted to "command" options, the program now makes clear that these 
    changes haven't been written back to file yet. The "save" button/menu 
    item is activated then so the user can save the file without applying 
    any other changes.
  * If the font size is changed, the columns are now autoresized so in case 
    there are icons and the font size is reduced; the resulting space 
    between the icons and the following text is removed.
  * Empty strings as search results are no longer considered to be a valid 
    match
  * Removed GTK version check (This was added back again in the final 0.5, 
    since there is actually code that needs a GTK version GTK > 3.0)
  * Bugfix - The actions for "Visualise" and "Visualise recursively" from 
    the menu bar were inverted
  * Bugfix - If several rows were selected and another row was 
    rightclicked, in some cases the context menu didn't have the full set 
    of choices that was supposed to be displayed
  * Bugfix - If a menu can't be saved via "Save as" due to an error that 
    occured during saving process, the filename is no longer replaced with 
    the chosen one
  * Bugfix (regression) - After a submenu/-item had been dragged out of an 
    invisible orphaned menu to toplevel, this menu/item was marked as 
    invisible even if it had a label
  * Bugfix - Orphaned pipe menus were not saved
  * Bugfix - If a menu that included items with empty icon paths was 
    loaded, these paths were not saved back again
  * Bugfix - If a row and at least one of its descendants were selected, 
    the descendant was always called "child" regardless of the hierarchy. 
    If an option of an action other than "Execute" and an option 
    of "startupnotify" were selected at the same time, the action was 
    mistakenly displayed as "Execute" action in the statusbar.
  * Bugfix - If the "new action/option" combo box is shown and a search 
    was still active, the treeview is redrawn so the highlighting of 
    search results disappears immediately (it disappeared only when the 
    mouse went over the respective rows)
  * Bugfix - If the path of an icon image had become invalid and thus 
    the icon was replaced with the "invalid icon path" icon, the 
    modification date was not erased internally
  * Bugfix - If a menu is saved, the menu bar "save" item is now also 
    greyed out
  * Bugfix - If at least one row that was eligible for recursive 
    visualization was selected and at least another one that wasn't, the 
    menu bar item "Visualise recursively" was activated, but "Visualise"
    wasn't
  * Bugfix - If an invisible menu, pipe menu, item or separator was 
    visualized, the sensivity of the menu bar item for visualization 
    was not updated
  * Fixed memory leaks
  * Code optimization, minor/cosmetical changes and removal of redundant 
    code. More comments were added to the source code to help with the 
    comprehension of it.

0.5 RC 2013-08-22

  New functionality:

  * Automatic reconfiguration of Openbox if the menu is saved at the 
    standard location (~/.config/openbox/menu.xml) and kickshaw is 
    currently run under Openbox
  * Added a timer function that checks for moved/deleted/renamed icon
    files and for a change of font size
    If an icon gets moved/deleted/renamed during program runtime the icon 
    inside the treestore will replaced with a broken icon image. If the 
    treestore contains a broken icon image, but during program runtime 
    an external change makes icon path pointing to a valid icon, the 
    broken icon will replaced with the proper icon image.
    If font size is changed during program runtime, the icon images 
    will be recreated to fit to the new font size.
  * The deprecated <execute> tag is now automatically converted to a 
    <command> tag
  * "--version" passed as an argument will now display the program 
    version

  Misc improvements and changes

  * Usage of a real XML-Parser (GLib's Simple XML Subset Parser) for 
    enhanced flexibility and reliability
  * Menus inside root-menu are now supported, too; in previous versions 
    their sub-content had to be defined outside the root-menu, in the 
    way shown for example by the provided sample menu.
  * Duplicate menu IDs are now already prevented at loading stage
  * Menu field texts are now escaped by the program so the user 
    doesn't have to bother about this
  * The display of found search terms has been improved, instead of 
    highlighting the whole content of a cell with a found occurrence, 
    only the exact section matching the search term is now highlighted
  * Not just invisible toplevel menus are now highlighted, this applies 
    now to all menus, pipe menus, items and separators regardless their 
    position inside the menu (highlighting still can be deactivated)
  * Interactive search provided by GTK has been deactivated, since 
    kickshaw provides its own search functionality
  * SVG image files are no longer filtered out by the "add icon" file
    chooser dialog, since the support for SVG icons was added by 
    Openbox 3.5.1.
  * There are now two different system icons indicating icon creation 
    failures, one for invalid icon paths and one for icon files that 
    are corrupted or otherwise unusable. Furthermore they are singled 
    out by two red exclamation marks behind them to make them easily 
    distinguishable from normal icons.
  * The program no longer exits after it detected an error inside the 
    menu file, it now reverts to a initial state with an empty menu
  * Restricted display of headlines for context menus to cases where 
    two different kinds of options are available, resulting in a cleaner 
    look. Exception: the mouse is right-clicked outside the tree.
  * Made key file standard compliant.
  * Choosing an action won't block the treeview anymore, some events 
    and widgets are still deactivated in this case though, because 
    they contradict the choice (i.e. removing rows). If another row 
    is selected, the action/option combobox is automatically closed 
    and the old status is reestablished.
  * Set the initial focus to the treeview so the "New menu" tool button 
    is no longer focused after the start of the program. The text entry 
    field of the find box now grabs focus when it is displayed, enabling 
    an immediate input.
  * To maintain the default settings equal to the ones of Openbox, a new 
    "enabled" option of a "startupnotify" option is now set to "no"
  * Allowed saving empty menus again, since they don't evoke an error 
    inside Openbox 
  * Added a note for "make uninstall" that the settings file has to be 
    removed manually. Extended messages for problems with the settings 
    file (the location of the file and whether it was during writing or 
    reading).
  * Code optimization, minor/cosmetical changes and removal of redundant 
    code

  Bugfixes:

  * For load menu part:
    - Corrected wrong error message for the case that an XML tag is put 
      before an opening <openbox_menu> tag
    - If a menu contained no toplevel menus, which means that just 
      the root menu was populated with elements, and the first root 
      menu element was a separator, the separator was wrongly reported 
      to be at an iappropriate position
    - A self-closing action tag that was placed after an action tag of 
      the same kind was wrongly reported to be at an inappropriate 
      position
    - If a completely empty menu is loaded, ie. a menu with nothing 
      between the <openbox_menu> tags, the appropriate error message is 
      now displayed ("Root Menu not found!")
    - An open find box is now closed, since remaining search results 
      from the previous menu could result in a crash when using the 
      activated results navigation buttons. This fix applies to new 
      menus, too.
  * If a subrow of another row and a toplevel row was dragged, it 
    resulted in a crash if the subrow was placed on top of the other one
  * If a broken icon path is replaced by a valid one during the loading 
    phase, the broken icon path is now replaced by the valid one inside 
    the treestore and thus shown inside the treeview
  * During the saving process the iter of a selected row was modified, 
    which could result in undesired behaviour and/or error messages 
    if something was done with this selected row
  * (Regression) If dragging is disabled for one or more reasons shown in 
    the status bar, a new selection resets the dragging status to 
    draggable again before a new check is done whether a blocking should 
    be applied again
  * Removal of all children from a node now works also if the node is 
    collapsed
  * It was possible to drag a menu and an item that was placed in a 
    submenu of the former at the same time, since only the first sublevel 
    of a menu was checked for selections. Now every descendant (if exists) 
    of a selected row is checked if it is also selected.
  * Removed some possibilities to place a dragged row at an inappropriate 
    position
  * Font size is now also parsed correctly if the font name consists of 
    more than one word (this bug resulted in wrong icon sizes)
  * If a menu ID was changed twice in a row via the entry field without 
    selecting another row in between, the program was crashing 
  * If several rows were selected and one of their cells was edited 
    directly inside the treeview, a crash resulted
  * In the case that after the deletion of rows a selection remains 
    active, during a drag and drop action all rows are unselected after 
    the old source rows have been removed
  * Icon Pixbuf wasn't reset to NULL after an icon has been added to the 
    menu (now irrelevant, since the code was rewritten)
  * After a new menu has been loaded, sensitivity of menu bar items and 
    tool buttons is now reset (for example "Collapse all nodes" is greyed 
    out)
  * If a new Execute action was added below a selected Exit or 
    SessionLogout action the prompt option of startupnotify (if it was 
    used) was not added to the treeview and -store. A similar situation 
    appeared when a new Execute action was added below a selected Restart 
    action, in this case the command option of startupnotify was not added.
    (Both scenarios are very unlikely to affect someone, because such an 
    order of actions makes no sense so almost nobody would use it. But 
    since actions can be added in free order, this has been fixed anyway.)
  * If a new startupnotify option was added, the startupnotify node was 
    collapsed and autosorting of options was deactivated, then the new 
    option wasn't selected
  * If autosorting was disabled and an option of Execute was chosen for 
    addition, in certain cases they were added as last element instead 
    of being inserted after the selected position
  * If a new icon is added via entering its path into the icon path entry 
    field, the "remove icon" button is now activated
  * If all rows were deleted (not via the "New menu" button), the 
    "Save as..." button wasn't deactivated afterwards
  * If several icons were removed at the same time, the internal variable 
    for an applied change wasn't set, so the "save" tool button was not 
    unlocked in case there was a file name set
  * If one of the columns "Menu ID" or "Execute" was hidden and a search 
    found a match in one of them on toplevel, these columns were not 
    expanded to visualize this find
  * If both the entry field and the column check boxes of the find grid 
    were highlighted because of a missing choice and either the "match 
    case" or "regular expression" check box was clicked afterwards, 
    the highlighting of the column check boxes was reverted
  * Settings file is now closed after it had been opened for reading
  * Fixed memory leaks
  * The problem of undesired dragging that occured when a row was simply
    clicked but not yet dragged (probably on slower machines) has been 
    solved

0.5 Beta 3 2011-12-18

  * Bugfix (regression) - Inserting a Reconfigure action via the context 
    menu is working again
  * Bugfix - If an empty item (closed with "/>") is follöwed by another 
    item, the position of the latter is no longer reported as erroneous
  * Bugfix - Added autoresizing of columns if icons are (de)activated, 
    since otherwise icons are not shown if they were deactivated at start 
    time and their display is activated later on
  * Bugfix - If a search with an empty entry was started (resulting in the 
    entry field being marked to indicate that a search term is obligatory) 
    and the "All columns" button was activated and deactivated again, all 
    rows and columns were marked as hits; this behaviour has been reverted 
    so no rows and columns are marked now in this case.
  * Minor changes

0.5 Beta 2 2011-12-11

  * Created special text layout for error messages regarding an invalid 
    menu
  * More (and more differentiated) error messages for invalid menus
  * Bugfix - Line numbers were not reset for the root menu parsing stage
  * Code optimization, minor/cosmetical changes and removal of redundant 
    code

0.5 Beta 2011-12-08

  * Ported application to GTK 3
  * Added search functionality (incl. processing of regular expressions)
  * Added support for icons (introduced first in Openbox 3.5.0)
  * Added checks for XML-validty and Openbox menu format compliance
  * If there are multiple elements inside an xml tag of an openbox menu 
    file, they can now be arranged in any order
  * Added "Remove children" option to the menu bar and context menu
  * Added "Move top/bottom" menu items to the menu bar
  * The application window can now be shrinked
  * Bugfix - Safer xml parsing. Kickshaw will no longer get "confused" 
    because of menu files that contain lines such as 
    '<menu id="<separator ">'.
  * If two rows are selected and another one (not one of these two) is 
    rightclicked, the two previously selected ones are now unselected, 
    the new one is selected and the context menu for it is shown. If 
    a row is selected and afterwards a blank area outside the treeview 
    is rightclicked, the row is unselected and the context menu is shown 
    that would have been shown if the blank area would have been clicked 
    without having previously selected a row.
  * If the last visible row was clicked and it had more entry fields 
    than a previous clicked one, the former one was overlapped by the 
    uppopping entry fields. This is now avoided by scrolling the treeview 
    to this row after the popup of the entry fields.
  * Code optimization, minor/cosmetical changes and removal of redundant 
    code

0.4.9 2011-12-08

  * Bugfix - A variable for a currently active action is now only set if 
    this action is not closed immediately (this is usually the case with 
    a Reconfigure action). If another action was started after such an 
    immediately closed one, a memory leak appeared, this has been fixed.

0.4.8 2011-11-10

  * Bugfix - Pipe menus from root menu are now parsed properly
  * Bugfix - Icon paths inside an item tag are now ignored and no longer 
    corrupt the label text (support for icons is introduced in version 
    0.5)
  * Bugfix - Fixed memory leak
  * Bugfix - Missing line break added in the list of unused root menus 
    (missing only when there was just one unused root menu)

0.4.7 2011-11-07

  * Bugfix (regression) - If the display status of grid lines had been 
    changed the settings file was no longer updated

0.4.6 2011-11-06

  * Bugfix (regression) - Fixed corruption of file name

0.4.5 2011-10-21

  * Bugfix - Fixed memory leak that occurred when a file was already open and a 
    new one was opened afterwards

0.4.4 2011-10-10

  * Removal of redundant code

0.4.3 2011-10-10

  * Bugfix - The table for the entry fields that is shown when a row is 
    selected was defined with a redundant row, this bug had no effect on 
    the program and its appearance

0.4.2 2011-09-25

  * Bugfix - Setting of sensivity of collpase/expand toolbar buttons and 
    menu items is now also working correctly if rows are selected that 
    are part of an expanded treeview
  * If an obligatory entry field had not been filled out, but it later 
    received a proper content, the background color of this field was set 
    from rose to white (not visible until this entry field was shown 
    again); now it is simply reset to the previous state, so it does not 
    override a theme that uses another color than white.

0.4.1 2011-09-24

  * Removal of redundant code

0.4 2011-09-18

  * Boolean values are now shown as toggle buttons directly inside the 
    treeview and can be changed by toggling these buttons
  * Added a view option to (de)activate tree lines. Tree lines are now 
    shown by default.
  * It's now possible to remove rows via the "Delete" key
  * When adding an action, mandatory fields can no longer be left empty, 
    if "Done" is pressed, these fields are now marked with a rose 
    background. The same applies for options of startupnotify when they 
    were chosen via the combo box.
  * If there is only one entry field to be filled out for a new menu 
    element, it is now enough to press the "Enter" key to finish 
    entering, and no longer necessary to click the "Done" button.
  * Safer check for non-existing root menu. The program does no longer
    exit after it displays the error message that no root menu has been 
    found
  * When a menu is loaded, prompt options of an Exit or SessionLogout 
    action with a value other than "yes" or "no" will no longer be 
    accepted, the user is asked to choose one of the possible values
  * The "Save" option in the menu bar is now deactivated as well if a 
    menu (without changes during the loading process) was loaded or a 
    new menu was created. Save (As) is also deactivated in the case a 
    new menu was created or there are currently no rows.
  * It is now possible to add new rows into unused menus. The status of 
    the latter is regularized in this case.
  * Expand and collapse all nodes tool bar buttons and menu bar entries 
    are now disabled if the menu is empty or there are no subrows
    The above-mentioned changes also apply for the case that no menu.xml 
    file exists in ~/.config/openbox, kickshaw starts as before with an 
    empty menu. The tool bar buttons are also enabled or disabled 
    according to whether all nodes are collapsed, at least one but not 
    all are expanded or all are expanded.
  * For new basic menu elements (menu, pipe menu, item and separator) 
    the label is now uniformly set as "New xxx" (xxx = type)
  * If it is chosen to create a new menu and the prior menu has been 
    emptied, there is now a note inside the appearing warning message 
    that empty menus won't be saved anyway
  * Error messages are now presented in bold text
  * The make file has been modified to work also on BSD. It now also 
    contains options for optimization, extra warnings and pedantic check 
    for compliance with the C99 standard (incl. GNU extensions).
  * Bugfix - Menu IDs of submenus were deleted inside the interal list 
    during a drag and drop process. Menu IDs are now recorded in the 
    internal list also for unused menus, preventing double menu IDs of 
    unused and regular or invisible menus. If invisible menus are 
    deleted during the loading process, their menu IDs are now also
    erased from the internal list.
  * Bugfix - If invisible menus were found during the loading process 
    and it was chosen to delete them, the paths of Execute actions of 
    these menus were not removed properly from the internal list
  * Bugfix - It the last menu element was an item and the second to last 
    a menu, the menu file was not created properly
  * Bugfix - startupnotify is now inserted with option block as type
  * Bugfix - If nothing had been selected before and the context menu 
    was activated, the function for the latter always received a value 
    of zero currently selected rows, resulting in inappropriate options 
    inside the context menu
  * Bugfix - If a drag and drop process was finished, it was not set 
    internally that a change occured so the save button was not unlocked 
    if the drag and drop process was the first action done after a menu 
    was loaded. There was also no update on the selection status, which 
    led to the situation that the possible options for the old position 
    were still shown for the new position, which could result in a crash 
    when trying to activate one of them.
  * Bugfix - If a menu, item or separator was assigned a value for its 
    label that was equal to that of an action or option identifier 
    crashes or severe malfunctions occurred
  * Bugfix - Toplevel pipe menus are now assigned as "regular" for their 
    toplevel menu status if they are not unused or invisible
  * Bugfix - Obligatory sentinels were missing in a few function calls
  * Bugfix - Removed the label in front of the combo box that is shown 
    when several actions or options are possible because it was actually 
    superfluous and not flexible ("Action" was shown even if it was an 
    option of an action)
  * Bugfix - General additions to the program to avoid memory leaks
  * Code optimization, minor/cosmetical changes and removal of redundant 
    code

0.4 RC 2 2011-07-31

  * If a menu ID was edited, an already existing ID entered and the same 
    row clicked afterwards, after the error message a drag and drop 
    process was started due to interfering code; this situation is now 
    avoided.
  * Bugfix - When (pipe) menus were dragged, their menu IDs of the source 
    rows were deleted, but not replaced for the new rows
  * Code optimization, minor/cosmetical changes and removal of redundant 
    code

0.4 RC 2011-07-30

  * If a menu file is overwritten, a backup file is now created, its name 
    is the old file name plus an attached tilde
  * Options in the edit menu (not only the corresponding ones in the 
    toolbar) are now deactivated as well if they don't make sense (for 
    example "move down" when the last row is selected)
  * If rows are moved via drag and drop and one or more of them are nodes, 
    the expansion status of these nodes and all subnodes are now kept
  * If a new action is chosen to be added to an item, instead of blocking 
    the whole treeview only further selections are blocked, since this 
    has the advantage that the selection can be still displayed
  * Actions or options of actions are now inserted throughout at the 
    current selection position, with the remaining execption when they 
    are added directly at the parent node
  * Recursive expansion of selected nodes is now always possible as long 
    as not every subnode has been expanded so far. In addition an 
    exclusive expansion of all immediate children can now always be 
    chosen as long as this kind of expansion is not already active.
  * The workaround for the problem that a multiple selection of rows 
    disappeared when the rows were dragged interfered with editable cells 
    in a way that the editing of such cells was much harder to activate. 
    This interference is now avoided.
  * Bugfix - If the content of cells is changed via the entry fields 
    displayed at the bottom, the "save" button is now activated in any 
    case
  * Bugfix - command and prompt options of an Execute action can no 
    longer be moved into other Execute actions if there are already 
    options of the same kind
  * Bugfix - If at least one unused or invisible menu is selected and 
    the context menu is opened, the correct general text "Regularise 
    menu statuses" is now displayed instead of "Generate empty menus"
  * Code optimization and removal of redundant code

0.4 Beta 4 2011-07-23

  * Added multirow drag and drop
  * Added a status bar for drag and drop information
  * Added a GTK version check (GTK 2.>=18 req.)
  * Bugfix - the check for menus that dragged into themselves is now also 
    in effect when the menus are moved more than a level deeper in a tree 
    (this bug was irrelevant, since the check for an irrelevant position 
    led to a break before)
  * Bugfix (regression) - if an action or startupnotify was selected, 
    toggling the status of an "enabled" option was afterwards no longer 
    possible
  * Minor code optimizations, removal of redundant code and cosmetical 
    changes

0.4 Beta 3 2011-07-17

  * The identifiers in .kickshawrc are now identical to the texts of the 
    menu items, so settings that were changed from the defaults have to 
    be redone
  * Bugfix - Memory of string disassembling array was not freed after use
  * Some code rewriting, most of it resulting in more compact code

0.4 Beta 2 2011-07-15

  * It is now possible to drop rows onto other rows, they are added as a 
    new last child of the row they are dropped upon
  * When a new file is created or loaded after a previous one,  
    the treeview columns are now autosized. The same applies to 
    collapsing rows via the context menu.
  * Bugfix - Moving an option to an action that has already the 
    same option is now prevented. It is now also being prevented that a 
    prompt option with a value other than "yes" and "no" is moved into 
    an "Exit" or "SessionLogout" action.
  * Bugfix - Options are now autosorted when having been moved via 
    drag and drop and if autosorting is activated
  * Bugfix - Unused or invisible menus are being dealt with properly now 
    when they are part of a drag and drop process
  * Bugfix - Prompt options can now be moved into SessionLogout actions.
    (This bug was irrelevant, since dropping onto empty rows had not been 
    implemented yet.)
  * Bugfix - Memory of string disassembling array was not 
    freed after use
  * The README file had not been updated with the drag_and_drop file
  * Code optimization, minor changes and removal of redundant code

0.4 Beta 2011-07-13

  * Solved the problem that dropping was done one row before the marked 
    dropped zone if the dragged row was shown with more than its 
    upper half above the marking
  * Added expand/collapse row in context menu for convenience
  * Moved the settings file from ~/.config/openbox/menu_editor_settings 
    to ~/.kickshawrc, since this is no file created by Openbox itself and 
    the settings file is easier to detect this way
  * Code optimzation and removal of redundant code

0.4 Alpha 2011-07-11

  * Added drag and drop functionality. Limitation for now: if multiple 
    elements are selected, only the first one is moved.
  * Minor code rewriting and optimization
  * Renamed application to "kickshaw"

0.3.14 2011-07-08

  * Bugfix - If not located on a toplevel, a separator without a label 
    still received a label="" in the xml file because of outdated code 
    that had not been removed until now
  * Code optimization, also removal of redundant code

0.3.13 2011-07-07

  * Bugfix - If a boolean field inside the tree view was selected, 
    a variable was set internally that a change was done, even without 
    one actually done, so a question would appear when leaving 
    the program or creating a new/opening another file whether to 
    continue dispite unsaved changes.
    The same applies for text fields, if there has been no change or 
    the same value was entered, the variable is no longer set.

0.3.12 2011-07-06

  * Bugfix - If a Menu ID cell was edited directly in the tree view, 
    the new value was shown, but the old value was still kept internally 
    in the list of Menu ID, which could result in double Menu IDs if new 
    ones were added
  * Some code rewriting and optimization

0.3.11 2010-12-06

  * Bugfix - If all root menus without content were selected for deletion
    during the loading phase of the menu and one of these menus was next
    to another one, the second one was not deleted because the rows were
    not deleted via the row references method
  * If menus without corresponding entries in the root menu and/or root 
    menus without content are initialized or deleted, the menu can now be 
    saved directly right from the start with the save toolbar button 
    without using the save as toolbutton as "workaraound", since the menu 
    has already been changed
  * Minor/cosmetic changes

0.3.10 2010-12-05

  * Faster check if a given value exists in a list of strings (streq_any 
    function), returns TRUE immediately now if it has been found
  * More compact code for sorting of Execute and startupnotify options
  * Minor/cosmetic changes

0.3.9 2010-11-28

  * Bugfix - If a menu was saved a second time, the root menu wasn't 
    created correctly, because some variables were not properly reset 
    after the first save
  * Bugfix - The removal of the "(No label)" indicator wasn't done at one 
    place in the code so separators without label were not written 
    correctly
  * Bugfix - If a cell has been edited, the entry fields are now 
    immediately updated. The "save" toolbutton is now shown if this 
    modification was done as first modification after the start of the 
    program.

0.3.8 2010-11-20

  * Removed the "(No label)" indicator for separators without a label to 
    make it equal with the other elements and since this is obvious in the 
    tree view anyway

0.3.7 2010-11-20

  * Cleaner look for the context menu
  * Added the possibility to regularize the status of several unused or 
    invisible toplevel menus via the context menu
  * Minor code cleanup

0.3.6 2010-11-18

  * Added the possibilty to regularize an unused or invisible toplevel 
    menu via the context menu
  * Removed the possibility to change a toplevel menu status to invisible 
    or unused. Even though this can be done by editing the menu xml file 
    by hand, this is something that would usually not be considered as a 
    useful option inside a program.
  * Bugfix - Menus that are inserted as a sub element of a toplevel menu 
    no longer unnecessarily receive a value for the toplevel menu status
  * Minor/cosmetic changes and code cleanup

0.3.5 2010-11-18

  * Labels of unused toplevel menus can no longer be edited. It is also 
    impossible now to insert rows into an unused toplevel menu. To enable
    these operations, an unused toplevel menu has now to be explicitly 
    converted into a visible or an invisible toplevel menu.
  * Code cleanup

0.3.4 2010-11-17

  * Added the option to draw rows in alternating colours (the currently 
    activated GTK theme has to support this)
  * Added the possiblity to keep the highlighting for unused and invisible
    toplevel menus if the toplevel menu status column is shown
  * If highlighting for unused and invisible toplevel menus is activated, 
    the contrast between both menu types is now sharper
  * Minor/cosmetic changes

0.3.3 2010-11-17

  * Changed "show grid" sub menu to radio buttons because there is always 
    only exactly one possible choice

0.3.2 2010-11-16

  * Bugfix - If a row was deleted and had at least one child that was not 
    selected for deletion and was a menu or pipe menu, the menu ID of this 
    child was not removed
  * Bugfix - If the statuses of several toplevel menus were changed to 
    unused at the same time by multiple selection and at least one of the 
    menus had children, the list of the to be deleted children wasn't reset 
    after the children of the first toplevel menu that had any of them 
    were deleted.
    Code of this section has been rewritten and is now much more compact.
  * Bugfix (regression) - If a new grid display option is selected after a 
    previous choice, the check mark of the new choice is displayed in the 
    menu again
  * Bugfix - Allocated RAM for tree selection and row reference lists is 
    now freed throughout the program
  * Minor/cosmetic changes and code cleanup

0.3.1 2010-11-14

  * If a menu element is deleted from a menu that has not been previously
    edited, the "deleted" toolbar button will be deactivated, since there 
    is no current selection after the deletion

0.3 2010-11-12

  * Code optimizations, incl. faster cell rendering.

0.3 Beta 2 2010-11-11

  * Empty Execute and startupnotify actions are now expanded if options 
    are added to them
  * Bugfix (regression) - Reinserted default dummy value for action combo 
    box, otherwise an insertion of a Reconfigure action before a first use 
    of the combo box leads to a crash
  * Bugfix (regression) - If one option of Execute was missing and a button 
    to add the missing option was clicked, a combo box without content was 
    shown instead of inserting the option

0.3 Beta 2010-11-11

  * New functionality: Editable cells
  * Bugfix - When no menu had been found after the start of the program, a 
    rightclick on the empty treeview resulted in a crash

0.2.3 2010-11-10

  * Bugfix (regression) - Insertion of Execute options by combo box works 
    again

0.2.2 2010-11-09

  * Bugfix (regression) - Check for double Menu IDs works again

0.2.1 2010-11-09

  * Bugfix (regression) - It was not possible to insert pipe menus, 
    the last chosen element was inserted again instead

0.2 2010-11-07

  * Makefile now contains install and uninstall options

0.2 Beta 2 2010-11-06

  * Slightly enhanced makefile that supports several jobs at the same time 
    (make -j option) and clean option
  * Switched to a much shorter way to check if X is running which also 
    works on BSDs
  * FreeBSD binaries for x86 and amd64 added

0.2 Beta 2010-11-04

  * Added context menus
  * Removed the possibilty to add menu elements at toplevel when several 
    menu elements are selected, since this is no action that would be 
    considered when selecting multiple elements and could even be 
    confusing
  * Fixed several bugs

0.1 2010-11-02

  * Minor optimization

0.1 Beta 2 2010-10-31

  * Fixed wrong selection after addition of new actions

0.1 Beta 2010-10-29

  * Minor/cosmetic changes

0.1 Alpha 2 Revised 2010-10-27

  * Split up code for a better overview
  * Included a simple makefile for easier compiling

0.1 Alpha 2 2010-10-25

  * Fixed realloc crash that happened when a menu was loaded on 
    x86 machines
  * Faster xml parsing

0.1 Alpha 2010-10-24

  * Initial release
