Age | Commit message (Collapse) | Author | Files | Lines |
|
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>
|
|
some places are marked with "dodgy"- need to check those to see
what is going on, because they are leaving dangling pointers behind
in the Menu class
Change-Id: I41d5c7c0fec2f70ce9e3ffdc48cd03d26c0a869b
Reviewed-on: https://gerrit.libreoffice.org/26516
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Noel Grandin <noelgrandin@gmail.com>
|
|
but stop basic execution on the exit attempt, and then resend exit at a safe
place when basic execution has stopped
Change-Id: I77c43acffa0b82e8125dcb3b10ad9bf0d6dd26c3
|
|
Change-Id: I25bb67449c8c572075d354e62b1c731e95655b4f
|
|
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
|
|
Change-Id: Ibfb27b3eded45e2646dada37ce3663f427985ae9
|
|
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
|
|
Change-Id: I50c122426030ba5b508dcd6ac33464ecab154981
|
|
Change-Id: Ic3efae53430fbb2c1eb7962c3cf69bf99315e55b
Reviewed-on: https://gerrit.libreoffice.org/26202
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: jan iversen <jani@documentfoundation.org>
|
|
Change-Id: I55982944bf2ee3d9aa6899bcc59e94f9342b4036
|
|
- remove unused variable
- check of given parameter over constructor
Change-Id: If506ef9065c67da35f672466e1e49f82e2a5a678
Reviewed-on: https://gerrit.libreoffice.org/26093
Reviewed-by: Thorsten Behrens <Thorsten.Behrens@CIB.de>
Tested-by: Thorsten Behrens <Thorsten.Behrens@CIB.de>
|
|
Change-Id: I7b43e417607b20c300e3c18e7da76a6173a18b7d
Reviewed-on: https://gerrit.libreoffice.org/26098
Reviewed-by: Maxim Monastirsky <momonasmon@gmail.com>
Tested-by: Jenkins <ci@libreoffice.org>
|
|
Change-Id: I469439abfa4e9dcd29f2d1693b03d37b3d61c81e
Reviewed-on: https://gerrit.libreoffice.org/26047
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Noel Grandin <noelgrandin@gmail.com>
|
|
- move DispatchHelper somewhere public
- use it from generic dispatcher call sites in sfx2
- return result of dispatcher calls (conveyed via
XDispatchResultListener) to calling code, instead of faking it
Change-Id: Ie8041133e99dd99e45819f98798829b96532b9e6
Reviewed-on: https://gerrit.libreoffice.org/24953
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Thorsten Behrens <Thorsten.Behrens@CIB.de>
|
|
try fix that view->toolbars isn't in sync
Change-Id: I095be3003f076193878f2c3ce2a2be5acbe0e33f
|
|
Change-Id: Ic8c9b50f496ee97da3f03af966005f28c37ff7e9
|
|
Change-Id: I95041f49dd22ba9a15da3598b04a010eecf761a8
|
|
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: I96e43a3d30ffd9ae9a34275f24cd914d8f7b026f
Reviewed-on: https://gerrit.libreoffice.org/25806
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Noel Grandin <noelgrandin@gmail.com>
|
|
Change-Id: I8ff0e104aad045f3835dc8facc760a8339b1d088
|
|
Fails with commit 08cf2fd01064306eef7fdbb5b62320947c4d1089 (framework:
last dispatchInterceptor gets asked first, 2016-05-20) reverted.
Change-Id: I0e025a5d8996ecafa6b2fef753d6134079936b00
Reviewed-on: https://gerrit.libreoffice.org/25808
Reviewed-by: Miklos Vajna <vmiklos@collabora.co.uk>
Tested-by: Jenkins <ci@libreoffice.org>
|
|
Change-Id: Iabf9b94626b599b4fe799523b3523e18df5203c5
|
|
Change-Id: I21ad7278f7978e7eebf6962fdf1fac2d3cb2bddb
Reviewed-on: https://gerrit.libreoffice.org/25637
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Noel Grandin <noelgrandin@gmail.com>
|
|
Change-Id: Ieed5f4d9411478d2568b8e5f4bbe0782bd1d309d
Reviewed-on: https://gerrit.libreoffice.org/25724
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Noel Grandin <noelgrandin@gmail.com>
|
|
found with a python script that looks like:
process = subprocess.Popen(
"git ls-files *.hrc | xargs grep -hE '#define +SID_' | cut -d ' ' -f 2 | sort -u",
shell=True, stdout=subprocess.PIPE)
for line in iter(process.stdout.readline, b''):
line = line.strip()
if line.startswith("//"): continue
if line.startswith("sfx"): continue
if len(line) < 10: continue
i = subprocess.check_output("git grep -nP \"#define +" + line + " \"",
shell=True)
if i.count("#define") < 2: continue
print line + "
" + i
Change-Id: I40eac2569c2b5b129d9459cb723a9d6f26d09264
Reviewed-on: https://gerrit.libreoffice.org/25715
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Noel Grandin <noelgrandin@gmail.com>
|
|
Change-Id: I7aca03334c6609a8729bbc88ada6ecce4309c21d
Reviewed-on: https://gerrit.libreoffice.org/25607
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Noel Grandin <noelgrandin@gmail.com>
|
|
When it is saving a impress file, the status indicator sometimes receives
lower values, that it is reflected to client side a flash to the progress bar.
Change-Id: Ib3e8499357984843650c8d897c7b1d6baeb65ff6
Reviewed-on: https://gerrit.libreoffice.org/24326
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: jan iversen <jani@documentfoundation.org>
|
|
Change-Id: I99eec60db7f6d586b3b424661e03a7891422ab2e
|
|
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
|
|
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>
|
|
Change-Id: I860cc4aa04b4e5cd1437b2f24176ee2ccdec3266
Reviewed-on: https://gerrit.libreoffice.org/25420
Reviewed-by: Noel Grandin <noelgrandin@gmail.com>
Tested-by: Noel Grandin <noelgrandin@gmail.com>
|
|
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>
|
|
until I have a better understanding of the UNO reference
counting.
This reverts commit 111de438ea3e512a541281dc0716cc728ea8d152.
|
|
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>
|
|
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>
|
|
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>
|
|
Change-Id: I2953a88d9e2f5923732865ef17615d5928ac5f5f
Reviewed-on: https://gerrit.libreoffice.org/25154
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Noel Grandin <noelgrandin@gmail.com>
|
|
Change-Id: Iabde7a84b9c2758e0d2b2ffe0fb99fcfa51ff124
Reviewed-on: https://gerrit.libreoffice.org/25075
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Noel Grandin <noelgrandin@gmail.com>
|
|
Change-Id: Icf60f59e997afba28ac5115f7d7c4709a3f11a4a
|
|
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>
|
|
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>
|
|
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
|
|
Change-Id: I72d9f8b00ba8b2e4e5dc70d7fd77e13ccf9d3bcc
Reviewed-on: https://gerrit.libreoffice.org/24940
Reviewed-by: Miklos Vajna <vmiklos@collabora.co.uk>
Tested-by: Jenkins <ci@libreoffice.org>
|
|
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>
|
|
Change-Id: Ib0451f26edbfbcdfdca78caa97bd09bc65ec2782
|
|
Change-Id: I8eb25fc274b45b8add04dfc03e4b52f130ad04de
Reviewed-on: https://gerrit.libreoffice.org/24827
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Noel Grandin <noelgrandin@gmail.com>
|
|
Change-Id: Ic979d1470052039c4b966edd1d896af31ef55668
Reviewed-on: https://gerrit.libreoffice.org/24826
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Noel Grandin <noelgrandin@gmail.com>
|
|
Change-Id: Ic8259d81d8080c518aa07697e253a59cd6efaa4b
|
|
... 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
|
|
Change-Id: I82ca89ac483e9742be0d38a3c6882a240c7c38d8
Reviewed-on: https://gerrit.libreoffice.org/24499
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Markus Mohrhard <markus.mohrhard@googlemail.com>
|
|
... when dispatching the .uno:CloseWin.
Change-Id: Iaf0651ea7e05bd8a6629d5af6e62f5918ef241ce
|