summaryrefslogtreecommitdiff
path: root/framework
AgeCommit message (Collapse)AuthorFilesLines
2016-11-11tdf#103826 Missing master page pane context menus in DrawMaxim Monastirsky1-3/+3
(cherry picked from commit 749fe62b32acc3159cf2756aae16df36f091a862) changes from master: Removed officecfg part to avoid breaking string freeze, added nullptr check to be on the safe side. Change-Id: I355e9507692e770063a91d05efd3ebc3e2671d57 Reviewed-on: https://gerrit.libreoffice.org/30766 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Caolán McNamara <caolanm@redhat.com> Tested-by: Caolán McNamara <caolanm@redhat.com>
2016-09-27tdf#101898: Only re-substitute whole segments with $(username)Stephan Bergmann1-1/+2
...otherwise, if $(username) happens to be "user", it will endlessly re- substitute inside a (already partly re-substituted) URL of the form $(user)/... Regression introduced with 16fb0d3d0f68708c183c53bd18660a23970b77fe "tdf#98407 PathSubstitution: Add substitution for $(username)". Change-Id: I1c8b64f383fdfd97fa5edc192e9ca4b46944d6f1 (cherry picked from commit 653e0ccc4e6230f28dd4c553dc7e9482beafa3cd) Reviewed-on: https://gerrit.libreoffice.org/29314 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Caolán McNamara <caolanm@redhat.com> Tested-by: Caolán McNamara <caolanm@redhat.com>
2016-08-11Revert "tdf#98837 - Fail loading a new document with read only property ..."Tor Lillqvist2-22/+9
There was not really a good enough reason for the change, and it causes unfortunate regressions in 3rd-party code that previously worked fine. (It also caused two regressions in LO's own code, but those were already fixed.) This reverts commit 5334ff287c65f028753171c7b38da7ffbcebc1cc. (cherry picked from commit 38a3743e0c5d52f9386f74097fd512d3133fbbe3) Change-Id: Iec36345fa3663bc5d96ce3e74d334c7aa075ada2 Reviewed-on: https://gerrit.libreoffice.org/28035 Reviewed-by: Eike Rathke <erack@redhat.com> Tested-by: Tor Lillqvist <tml@collabora.com>
2016-08-09tdf#96607 'Save as' doesn't update global auto-recovery stateanwilli51-0/+13
The auto-recovery service maintains a list of structures (one for each open document) containing information needed to carry out the auto-save functionality. One such piece of information is the location of the backup file, stored in a struct member named 'OldTempURL'. At every auto-save interval, this list is iterated through and a function (implts_saveOneDoc) is called during each iteration to save the current state of the associated document. The algorithm works as follows: 1. A new backup file URL is chosen so as not to conflict with any already existing backup files in the backup directory. This URL is based on the file name and incorporates a number (starting at 0) that is incremented until a name is chosen that doesn't conflict. 2. The document is saved to this new backup file URL 3. The previous backup file (indicated by its structure's 'OldTempURL') is deleted 4. The new backup file URL is stored (in its structure's 'OldTempURL') for the next time the file needs to be saved. Assuming you start with a new Writer doc and then make some changes, when it is time to auto-save, the backup file name 'untitled_0.odt' (excluding path) will be selected, the latest state of the open file will be written to that backup file, and the full URL for the backup file will be saved into the struct 'OldTempURL' member. The next time changes are made and an auto-save occurs, this algorithm will result in the name 'untitled_1.odt' being selected, the file contents saved into this new file, 'untitled_0.odt' being deleted, and the full URL for the new backup file being saved in 'OldTempURL'. The third time through results in 'untitled_0.odt' being selected (since this file doesn't exist on disk), and subsequent iterations of auto-saving cause the backup file name to alternate between the two aforementioned. The problem occurs during a 'Save as' operation. When this happens, the backup file is deleted (which is fine - it was just saved, and the next auto-save will back it up) but 'OldTempURL' is not properly reset (see below for more info.) During the next auto-save, 'untitled_0.odt' will be selected for the new backup file name (since no file exists by this name), and one of two things will happen (based on how many auto-saves have occurred): 1. 'OldTempURL' points to 'untitled_1.odt', and the algorithm above continues to work correctly (at least in that it continues to backup file contents.) 2. 'OldTempURL' points to 'untitled_0.odt', the name chosen for the new backup file. In this case, the document contents will be saved to this file (step 2) but then the file will be deleted (step 3). 'OldTempURL' will maintain this URL from then on out, causing this case to be hit for all future auto-save intervals. So, 50% of the time (30 minutes out of every hour) auto-save will stop backing up file contents on a 'Save as'. The function that handles the 'Save as' case (implts_markDocumentAsSaved) clears 'OldTempURL' and sets other relavent struct members for a local variable copy of the global struct, but doesn't copy them back. :( These changes are effectively lost when the function returns. There are several other cases where this appears to be happening as well, but more work is needed to determine whether this is actually the case: - implts_prepareSessionShutdown - implts_saveDocs, handling the 'dangerousDocs' and in a few other places - implts_openDocs - implts_resetHandleStates Also, there is some JUnitTest code for auto-save, but it is currently disabled (and fails to run successfully.) It'd be great to get these working again, or to just write python equivalents. Implementing this would like take me a while, though, so for now I just tested manually to ensure that this fixes the issue. When I have some more time I'd like to work more on this, but I wanted to send this patch in for now to address bug #96607. This may also address bug #99890, since some of the struct members that don't make it into the global state relate to the file name. I haven't explicitly tested this case, though. Change-Id: Ic702d6f78e60c7cf828a1564ccca118dd45d152b Reviewed-on: https://gerrit.libreoffice.org/25948 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: jan iversen <jani@documentfoundation.org> Reviewed-on: https://gerrit.libreoffice.org/27919 Tested-by: jan iversen <jani@documentfoundation.org> Reviewed-by: Aron Budea <baron@caesar.elte.hu> Reviewed-by: Michael Stahl <mstahl@redhat.com>
2016-08-09framework: stop adding silly empty accelerator/current.xml filesMichael Stahl3-24/+12
... to ODF packages. Somehow this is even skipped sometimes, but it's much easier to just turn off the silliness than find out why. Change-Id: Iff509dfd8325fd517e6434bcb56edbd06a3c27f1 (cherry picked from commit d76e3abe130007086099c62c5b425aaef82dc944) Reviewed-on: https://gerrit.libreoffice.org/27900 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Miklos Vajna <vmiklos@collabora.co.uk>
2016-07-28do not force the Paste command to enabled for Calc, tdf#60021 relatedEike Rathke1-2/+8
... so it actually gets disabled in menu or removed from context menu if we say so. Used with disallowing Paste for Ctrl+A selection or protected cells. Change-Id: I7d5f8bdc7b7adee65d08b93ddee015aef953d95d (cherry picked from commit fe46041a6b2fd29715389cc5eb2dfbaf65f7f1f9) Reviewed-on: https://gerrit.libreoffice.org/27648 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Markus Mohrhard <markus.mohrhard@googlemail.com>
2016-07-11Resolves: tdf#100732 hang closing Print Preview with X-icon on menubarCaolán McNamara1-0/+9
triggered by change... commit f9bb13419549d621ffd55d9d81e0732a89560e2e Author: Juergen Funk <juergen.funk_ml@cib.de> Date: Fri May 13 10:42:17 2016 +0200 tdf#99815 use XNotifyingDispatch in sfx2 which allowed the problem introduced by... commit d0c3c24da2506bff1719a276f2eff34589fa7663 Author: Kohei Yoshida <kohei.yoshida@gmail.com> Date: Wed Jun 6 01:28:55 2012 -0400 Check if the system window has a close handler, and if yes, call it. This allows the close event in the preview window to be handled in a custom fashion, instead of having it call the normal "close window" command. to show up Change-Id: I5c46fb7a49ae44fd748b5b7192aeb951c7d65191 (cherry picked from commit 903e60753f4cf8fb03e27ed312a699f72ac1649a) Reviewed-on: https://gerrit.libreoffice.org/27077 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Markus Mohrhard <markus.mohrhard@googlemail.com>
2016-06-19Try to fix the crashreport with SaveToolbarController::modifiedMaxim Monastirsky1-9/+0
No idea how one managed to trigger this. The only way I see is to add the save button to one of the custom shapes dropdowns. The ToolBox there has mpData->mbWillUsePopupMode set to true, which causes ToolBarManager to call the update method of the controller twice. update registers additional modify listener each time, but there is only one "remove listener" call in dispose. Change-Id: I2a1d6e02f6d8b6bc847fb7694fffa6e85b1f5604 (cherry picked from commit 1771e2b2753af2c078b575c44e788ee70500bbca) Reviewed-on: https://gerrit.libreoffice.org/26487 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Maxim Monastirsky <momonasmon@gmail.com>
2016-06-17SaveToolbarController: back to using XStorableMaxim Monastirsky1-21/+27
See 747a0fdda2a7723c2f8a8a022b468bcf29c700e3 ("SaveToolbarController: Better support of readonly docs") for the background. However this doesn't work, because the save slot is disabled in other cases too, not just for r/o docs (e.g. locked UI during file save, or when cond. formatting window open in Calc). Until a better solution is found, at least make sure that the button is disabled, instead of going into the normal save mode, which doesn't work. Change-Id: If6e1b91b7c780fffac22cdb25c82bbd0a8520dc4 (cherry picked from commit 011128aa9493a680c3e9da6d074f125a90ec455c) Reviewed-on: https://gerrit.libreoffice.org/26417 Reviewed-by: Maxim Monastirsky <momonasmon@gmail.com> Tested-by: Maxim Monastirsky <momonasmon@gmail.com>
2016-06-07gtk3: move the updating of native menu to right after its activatedCaolán McNamara1-2/+0
try fix that view->toolbars isn't in sync Change-Id: I095be3003f076193878f2c3ce2a2be5acbe0e33f (cherry picked from commit 15436c009e756dd4c94046f9849ad5a186454af8)
2016-05-25sw: replace boost::shared_array with std::shared_ptrMichael Stahl1-1/+0
Change-Id: I99eec60db7f6d586b3b424661e03a7891422ab2e
2016-05-25(nearly) nothing uses GetUniqueId anymore, so remove it.Caolán McNamara4-31/+0
The odd one out is the usage in Formula, which attempts to restore focus to a particular window identified by an unique id. In this case restore focus by keeping a VclPtr to the desired window. Change-Id: I1dc335325c109d75745c6bba2e12662e6ae50638
2016-05-25convert ImageType to scoped enumNoel Grandin3-55/+49
and drop duplicate definition in framework. Change-Id: I6cb95241e659ad58429bffeaaf2f95b07ad12df6 Reviewed-on: https://gerrit.libreoffice.org/25400 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Noel Grandin <noelgrandin@gmail.com>
2016-05-25Fix typosAndrea Gelmini1-2/+2
Change-Id: I860cc4aa04b4e5cd1437b2f24176ee2ccdec3266 Reviewed-on: https://gerrit.libreoffice.org/25420 Reviewed-by: Noel Grandin <noelgrandin@gmail.com> Tested-by: Noel Grandin <noelgrandin@gmail.com>
2016-05-25tdf#98753 Find Toolbar does not display "Search key not found"Samuel Mehrbrodt1-7/+22
Revert "Toolbar: Refactor insert toolitem code" This reverts commit 27bdc70d83d4a4f1ebb89429f61b39084e739aaa. Change-Id: I1d46cddfd656ab8c809b6cd6308725a8e67fe538 Reviewed-on: https://gerrit.libreoffice.org/25433 Reviewed-by: Samuel Mehrbrodt <Samuel.Mehrbrodt@cib.de> Tested-by: Samuel Mehrbrodt <Samuel.Mehrbrodt@cib.de>
2016-05-24Revert "remove some manual ref-counting"Noel Grandin2-5/+6
until I have a better understanding of the UNO reference counting. This reverts commit 111de438ea3e512a541281dc0716cc728ea8d152.
2016-05-24remove some manual ref-countingNoel Grandin2-6/+5
triggered when I noticed a class doing acquire() in the constructor and then release() in the destructor. found mostly by git grep -n -B5 -e '->release()' Change-Id: Ie1abeaed75c1f861df185e3bde680272dbadc97f Reviewed-on: https://gerrit.libreoffice.org/25363 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Noel Grandin <noelgrandin@gmail.com>
2016-05-23framework: last dispatchInterceptor gets asked firstThorsten Behrens1-9/+8
Align implementation with API contract as spelled out in offapi/com/sun/star/frame/XDispatchProviderInterception.idl - no idea why this change happenend in 2003: Date: Fri Apr 4 16:16:05 2003 +0000 INTEGRATION: CWS fwk01 (1.1.72); FILE MERGED 2003/04/01 12:40:09 as 1.1.72.1: #107642# change order of used interception objects At any rate, with this change extensions actually get a chance to see dispatch requests first, and process/ignore at will. Change-Id: I58876150ee6d67e592f41b3e82a9ffc314e091a3 Reviewed-on: https://gerrit.libreoffice.org/25215 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Thorsten Behrens <Thorsten.Behrens@CIB.de>
2016-05-20framework: avoid excessive queryDispatch callsThorsten Behrens1-7/+14
Make better use of the css::frame::XInterceptorInfo interface, to avoid calling queryDispatch() pointlessly on interfaces that have explicitely opted out. Since that already broadcasts which urls we're interested in - so just don't bother calling entries who are not matching. Change-Id: Id5e780568fd60c38f4cee4ee800d747d65a31dae Reviewed-on: https://gerrit.libreoffice.org/25214 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Thorsten Behrens <Thorsten.Behrens@CIB.de>
2016-05-20clang-tidy misc-assign-operator-signatureNoel Grandin8-8/+11
Change-Id: I2953a88d9e2f5923732865ef17615d5928ac5f5f Reviewed-on: https://gerrit.libreoffice.org/25154 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Noel Grandin <noelgrandin@gmail.com>
2016-05-19clang-tidy misc-unused-alias-declsNoel Grandin1-1/+0
Change-Id: Iabde7a84b9c2758e0d2b2ffe0fb99fcfa51ff124 Reviewed-on: https://gerrit.libreoffice.org/25075 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Noel Grandin <noelgrandin@gmail.com>
2016-05-19Fix unnecessary indent.Jan Holesovsky1-9/+11
Change-Id: Icf60f59e997afba28ac5115f7d7c4709a3f11a4a
2016-05-19tdf#99926 Add "Save as template" to Save dropdownSamuel Mehrbrodt1-15/+24
Change-Id: Ia594e69e46253eb2db4fcf27ca108323a3d45f5f Reviewed-on: https://gerrit.libreoffice.org/25113 Reviewed-by: Samuel Mehrbrodt <Samuel.Mehrbrodt@cib.de> Tested-by: Samuel Mehrbrodt <Samuel.Mehrbrodt@cib.de>
2016-05-18update unusedmethods plugin to deal with constructorsNoel Grandin9-830/+0
and fix the operator< implementations in some of the other plugins too. Change-Id: Ie5631e0cdc8d2a994ad2af2533cdb558a6cfc035 Reviewed-on: https://gerrit.libreoffice.org/25057 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Noel Grandin <noelgrandin@gmail.com>
2016-05-16Resolves: tdf#99857 missing items from toolbar right clickCaolán McNamara2-15/+6
we do an activate/deactivate to force the vcl menu to update so we have a full model before we try to show the gtk one. This particular toplevel menu has a deactivate handler which empties out the submenus on the deactivate, so we don't get the full thing, so we end up with missing entries. The Deactivate to empty the menu is a bit dubious. Even if we limited the activate/deactivate to submenus we still get the deactivate before the "select" so the ordering is fragile. The Deactivate handler seems dubious anyway, why not just clear it out after the Execute has finished which is simpler and more direct anyway dde83e3cea5b5fc1f91ebd336a2071ce8ff75e75 Change-Id: I56145f6236db1787cc4ee623c513cb927bf2a972
2016-05-12framework: register DispatchDisabler serviceMiklos Vajna1-0/+3
Change-Id: I72d9f8b00ba8b2e4e5dc70d7fd77e13ccf9d3bcc Reviewed-on: https://gerrit.libreoffice.org/24940 Reviewed-by: Miklos Vajna <vmiklos@collabora.co.uk> Tested-by: Jenkins <ci@libreoffice.org>
2016-05-12framework: initial implementation of a dispatch disabler.Michael Meeks6-3/+295
This should allow remote, eg. URE dispatchers to trivially disable lots of the UI without requiring a large volume of round-trip IPC. Change-Id: Ibd0681ac993196f826b4ed411da5ffedb7f85786 Reviewed-on: https://gerrit.libreoffice.org/24938 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Miklos Vajna <vmiklos@collabora.co.uk>
2016-05-11Include cppumaker-generated .hpp, not .hdlStephan Bergmann1-1/+1
Change-Id: Ib0451f26edbfbcdfdca78caa97bd09bc65ec2782
2016-05-10Convert TOOLBOX_MENUTYPE_ to scoped enumNoel Grandin3-6/+6
Change-Id: I8eb25fc274b45b8add04dfc03e4b52f130ad04de Reviewed-on: https://gerrit.libreoffice.org/24827 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Noel Grandin <noelgrandin@gmail.com>
2016-05-10Convert StatusBarItemBits to scoped enumNoel Grandin5-32/+32
Change-Id: Ic979d1470052039c4b966edd1d896af31ef55668 Reviewed-on: https://gerrit.libreoffice.org/24826 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Noel Grandin <noelgrandin@gmail.com>
2016-05-10convert WINDOWSTATE_MASK to scoped enumNoel Grandin2-4/+1
Change-Id: Ic8259d81d8080c518aa07697e253a59cd6efaa4b
2016-05-04LoadEnv::getTargetComponent() is supposed to return nothingMaxim Monastirsky1-0/+1
... if loading the document failed. Make sure that's the case also when the frame containing BackingComp was about to be recycled. Can be tested by trying to open password-protected odt, but canceling the password prompt. Change-Id: I733357b3a961fd88db010dd8eb89e01f0cad10fa
2016-05-01tdf#97499 Fixed containers parameters clearing #8tymyjan1-2/+2
Change-Id: I82ca89ac483e9742be0d38a3c6882a240c7c38d8 Reviewed-on: https://gerrit.libreoffice.org/24499 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Markus Mohrhard <markus.mohrhard@googlemail.com>
2016-04-28framework: CheckXTitle still sometimes fails on WNT...Michael Stahl1-0/+2
... when dispatching the .uno:CloseWin. Change-Id: Iaf0651ea7e05bd8a6629d5af6e62f5918ef241ce
2016-04-27SubToolBarController: Use initialize to change tb bitsMaxim Monastirsky1-6/+6
update is called so late that the dropdown addition is noticeable by the user. Change-Id: I36d76770125f927a851caef010e81f12f40d4405
2016-04-27tdf#80999 Canceling password prompt should abort detectionMaxim Monastirsky1-0/+5
... instead of continuing the detection loop and being "detected" as plain text. The detection API will from now return a type based on the file extension only, which is far more useful than "plain text" anyway. Plus the media descriptor has a flag to indicate that the detection wasn't completed, which can be also used by the loading code to abort the loading process. Change-Id: Ida37e2687bd5cd86b5780620724e9bce82e11946 Reviewed-on: https://gerrit.libreoffice.org/24428 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Maxim Monastirsky <momonasmon@gmail.com>
2016-04-27clang-tidy modernize-loop-convert in f*Noel Grandin6-28/+28
Change-Id: Id866aa244378758e3bdb9e99d02cdd2ae6104e16
2016-04-27tdf#99527: show all accelerators in menus of extensionsOliver Specht1-1/+4
XCUBasedAcceleratorConfiguration::getPreferredKeyEventsForCommandList() throws if the command string of a menu entry is empty. Parent entries of sub menus of extensions are empty. As the method doesn't know about the source of the command a dummy entry is supplied. Change-Id: I1d12bbf41c22b66e9ee29f1f05ea216134168795 Reviewed-on: https://gerrit.libreoffice.org/24423 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Oliver Specht <oliver.specht@cib.de>
2016-04-26Change label to title case similar to other surrounding labelsYousuf Philips1-1/+1
Change-Id: I4b02aada5e50e7b30ed23fe12fab1c99f38ccfeb Reviewed-on: https://gerrit.libreoffice.org/24056 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Samuel Mehrbrodt <Samuel.Mehrbrodt@cib.de>
2016-04-22loplugin:salboolStephan Bergmann1-1/+1
Change-Id: I14a902c644c467d8e02474e5d0ba8d3dced2860f
2016-04-22Fix typosAndrea Gelmini2-2/+2
Change-Id: Iea11112a1bf1ff934de0e355b9e81979aa1966a3 Reviewed-on: https://gerrit.libreoffice.org/24286 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: jan iversen <jani@documentfoundation.org>
2016-04-21Fix typosAndrea Gelmini2-2/+2
Change-Id: Ic4fbc8e7220eb4641f67ef4f85d4853608a369f4 Reviewed-on: https://gerrit.libreoffice.org/24257 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Eike Rathke <erack@redhat.com> Tested-by: Eike Rathke <erack@redhat.com>
2016-04-20loplugin:salbool: Automatic rewrite of sal_False/TrueStephan Bergmann49-160/+160
Change-Id: Idf27ee5370f1fa24adf22908d9e801c7d40db935
2016-04-19Elide macros used onceStephan Bergmann2-22/+11
Change-Id: I5d5c916c966c9e9f2c77c9655f3e8d13a7032117
2016-04-18Remove unused XMLNS_XLINKStephan Bergmann2-6/+0
Change-Id: Ibb2831ed71f61461e7f23edd6eea29ba64df05a9
2016-04-18Elide macro used onceStephan Bergmann2-3/+3
Change-Id: Ie0ad7834f54a5bf9cea65b4bb6d7501a90da0f24
2016-04-18Clean up framework/inc/dispatchcommands.hStephan Bergmann3-16/+12
Change-Id: I6a9a8ae34c2f5abafd4192287fb12d4289a761ff
2016-04-18Remove dead ENABLE_COMPONENT_SELF_CHECKStephan Bergmann2-349/+0
There is no sign it got ever used past 4011187ff516846635d4e2c3256dca3eb8c3719f "MWS_SRX644: migrate branch mws_srx644 -> HEAD" at least. Change-Id: Ia98613420a095b326ad26c024ff74f3c62bf4f99
2016-04-18clang-tidy performance-unnecessary-copy-initializationNoel Grandin10-91/+43
probably not much performance benefit, but it sure is good at identifying leftover intermediate variables from previous refactorings. Change-Id: I3ce16fe496ac2733c1cb0a35f74c0fc9193cc657 Reviewed-on: https://gerrit.libreoffice.org/24026 Reviewed-by: Noel Grandin <noelgrandin@gmail.com> Tested-by: Noel Grandin <noelgrandin@gmail.com>
2016-04-18clean-up: unused using declarations and includesJochen Nitschke2-2/+0
Searched source for using declarations. Checked if those symbols reappear in the source file, even in comments or dead code but not in #include statements. If they don't reappear, remove the declaration. Remove includes whose symbol got removed. Change-Id: Ibb77163f63c1120070e9518e3dc0a78c6c59fab0 Reviewed-on: https://gerrit.libreoffice.org/24148 Reviewed-by: Jochen Nitschke <j.nitschke+logerrit@ok.de> Reviewed-by: Noel Grandin <noelgrandin@gmail.com> Tested-by: Noel Grandin <noelgrandin@gmail.com>