[Libreoffice-ux-advise] [Bug 41063] Saving/Autosaving (Save/Autosave) while in table causes view to jump to cursor position

bugzilla-daemon at bugs.documentfoundation.org bugzilla-daemon at bugs.documentfoundation.org
Thu Jul 26 05:11:13 UTC 2018


https://bugs.documentfoundation.org/show_bug.cgi?id=41063

--- Comment #67 from Mike Kaganski <mikekaganski at hotmail.com> ---
The call stack that resets the view is the following:

> swlo.dll!SwViewShell::IsViewLocked() Line 461
> 	at c:\lo\core\sw\inc\viewsh.hxx(461)
> swlo.dll!SwViewShell::MakeVisible(const SwRect & rRect) Line 572
> 	at c:\lo\core\sw\source\core\view\viewsh.cxx(572)
> swlo.dll!SwCursorShell::MakeSelVisible() Line 2828
> 	at c:\lo\core\sw\source\core\crsr\crsrsh.cxx(2828)
> swlo.dll!SwFEShell::MakeSelVisible() Line 2584
> 	at c:\lo\core\sw\source\core\frmedt\feshview.cxx(2584)
> swlo.dll!SwCursorShell::UpdateCursor(unsigned short eFlags, bool bIdleEnd) Line 1844
> 	at c:\lo\core\sw\source\core\crsr\crsrsh.cxx(1844)
> swlo.dll!SwCursorShell::EndAction(const bool bIdleEnd, const bool DoSetPosX) Line 274
> 	at c:\lo\core\sw\source\core\crsr\crsrsh.cxx(274)
> swlo.dll!SwCursorShell::CheckTableBoxContent(const SwPosition * pPos) Line 868
> 	at c:\lo\core\sw\source\core\crsr\trvltbl.cxx(868)
> swlo.dll!SwCursorShell::EndAllTableBoxEdit() Line 923
> 	at c:\lo\core\sw\source\core\crsr\trvltbl.cxx(923)
> swlo.dll!SwDocShell::SaveAs(SfxMedium & rMedium) Line 506
> 	at c:\lo\core\sw\source\uibase\app\docsh.cxx(506)
> sfxlo.dll!SfxObjectShell::SaveAsOwnFormat(SfxMedium & rMedium) Line 3087
> 	at c:\lo\core\sfx2\source\doc\objstor.cxx(3087)
> sfxlo.dll!SfxObjectShell::SaveTo_Impl(SfxMedium & rMedium, const SfxItemSet * pSet) Line 1427
> 	at c:\lo\core\sfx2\source\doc\objstor.cxx(1427)
> sfxlo.dll!SfxObjectShell::PreDoSaveAs_Impl(const rtl::OUString & rFileName, const rtl::OUString & aFilterName, const SfxItemSet & rItemSet) Line 2847
> 	at c:\lo\core\sfx2\source\doc\objstor.cxx(2847)
> sfxlo.dll!SfxObjectShell::CommonSaveAs_Impl(const INetURLObject & aURL, const rtl::OUString & aFilterName, SfxItemSet & rItemSet) Line 2705
> 	at c:\lo\core\sfx2\source\doc\objstor.cxx(2705)
> sfxlo.dll!SfxObjectShell::APISaveAs_Impl(const rtl::OUString & aFileName, SfxItemSet & rItemSet) Line 307
> 	at c:\lo\core\sfx2\source\doc\objserv.cxx(307)
> sfxlo.dll!SfxBaseModel::impl_store(const rtl::OUString & sURL, const com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> & seqArguments, bool bSaveTo) Line 2970
> 	at c:\lo\core\sfx2\source\doc\sfxbasemodel.cxx(2970)
> sfxlo.dll!SfxBaseModel::storeToRecoveryFile(const rtl::OUString & i_TargetLocation, const com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> & i_MediaDescriptor) Line 1666
> 	at c:\lo\core\sfx2\source\doc\sfxbasemodel.cxx(1666)
> fwklo.dll!`anonymous namespace'::AutoRecovery::implts_saveOneDoc(const rtl::OUString & sBackupPath, `anonymous-namespace'::AutoRecovery::TDocumentInfo & rInfo, const com::sun::star::uno::Reference<com::sun::star::task::XStatusIndicator> & xExternalProgress) Line 3061
> 	at c:\lo\core\framework\source\services\autorecovery.cxx(3061)
> fwklo.dll!`anonymous namespace'::AutoRecovery::implts_saveDocs(bool bAllowUserIdleLoop, bool bRemoveLockFiles, const `anonymous-namespace'::DispatchParams * pParams) Line 2960
> 	at c:\lo\core\framework\source\services\autorecovery.cxx(2960)
> fwklo.dll!`anonymous namespace'::AutoRecovery::implts_timerExpired(Timer * __formal) Line 2310
> 	at c:\lo\core\framework\source\services\autorecovery.cxx(2310)
> fwklo.dll!`anonymous namespace'::AutoRecovery::LinkStubimplts_timerExpired(void * instance, Timer * data) Line 2248
> 	at c:\lo\core\framework\source\services\autorecovery.cxx(2248)
> vcllo.dll!Link<Timer *,void>::Call(Timer * data) Line 84
> 	at c:\lo\core\include\tools\link.hxx(84)
> vcllo.dll!Timer::Invoke() Line 77
> 	at c:\lo\core\vcl\source\app\timer.cxx(77)
> vcllo.dll!Scheduler::ProcessTaskScheduling() Line 448
> 	at c:\lo\core\vcl\source\app\scheduler.cxx(448)
> vcllo.dll!Scheduler::CallbackTaskScheduling() Line 271
> 	at c:\lo\core\vcl\source\app\scheduler.cxx(271)
> vcllo.dll!SalTimer::CallCallback() Line 56
> 	at c:\lo\core\vcl\inc\saltimer.hxx(56)
> vcllo.dll!WinSalTimer::ImplHandleElapsedTimer() Line 158
> 	at c:\lo\core\vcl\win\app\saltimer.cxx(158)
> vcllo.dll!WinSalTimer::ImplHandleTimerEvent(unsigned __int64 aWPARAM) Line 168
> 	at c:\lo\core\vcl\win\app\saltimer.cxx(168)
> vcllo.dll!SalComWndProc(HWND__ * __formal, unsigned int nMsg, unsigned __int64 wParam, __int64 lParam, bool & rDef) Line 642
> 	at c:\lo\core\vcl\win\app\salinst.cxx(642)
> vcllo.dll!SalComWndProcW(HWND__ * hWnd, unsigned int nMsg, unsigned __int64 wParam, __int64 lParam) Line 670
> 	at c:\lo\core\vcl\win\app\salinst.cxx(670)
> user32.dll!UserCallWinProcCheckWow()
> user32.dll!DispatchMessageWorker()
> vcllo.dll!ImplSalDispatchMessage(const tagMSG * pMsg) Line 458
> 	at c:\lo\core\vcl\win\app\salinst.cxx(458)
> vcllo.dll!ImplSalYield(bool bWait, bool bHandleAllCurrentEvents) Line 526
> 	at c:\lo\core\vcl\win\app\salinst.cxx(526)
> vcllo.dll!WinSalInstance::DoYield(bool bWait, bool bHandleAllCurrentEvents) Line 555
> 	at c:\lo\core\vcl\win\app\salinst.cxx(555)
> vcllo.dll!ImplYield(bool i_bWait, bool i_bAllEvents) Line 470
> 	at c:\lo\core\vcl\source\app\svapp.cxx(470)
> vcllo.dll!Application::Yield() Line 536
> 	at c:\lo\core\vcl\source\app\svapp.cxx(536)
> vcllo.dll!Application::Execute() Line 450
> 	at c:\lo\core\vcl\source\app\svapp.cxx(450)
> sofficeapp.dll!desktop::Desktop::Main() Line 1635
> 	at c:\lo\core\desktop\source\app\app.cxx(1635)
> vcllo.dll!ImplSVMain() Line 200
> 	at c:\lo\core\vcl\source\app\svmain.cxx(200)
> vcllo.dll!SVMain() Line 239
> 	at c:\lo\core\vcl\source\app\svmain.cxx(239)
> sofficeapp.dll!soffice_main() Line 169
> 	at c:\lo\core\desktop\source\app\sofficemain.cxx(169)
> soffice.bin!sal_main() Line 48
> 	at c:\lo\core\desktop\source\app\main.c(48)
> soffice.bin!main(int argc, char * * argv) Line 47
> 	at c:\lo\core\desktop\source\app\main.c(47)
> soffice.bin!WinMain(void * _hinst, void * _dummy, char * _cmdline, int _nshow) Line 47
> 	at c:\lo\core\desktop\source\app\main.c(47)
> soffice.bin!invoke_main() Line 107
> 	at f:\dd\vctools\crt\vcstartup\src\startup\exe_common.inl(107)
> soffice.bin!__scrt_common_main_seh() Line 283
> 	at f:\dd\vctools\crt\vcstartup\src\startup\exe_common.inl(283)
> soffice.bin!__scrt_common_main() Line 326
> 	at f:\dd\vctools\crt\vcstartup\src\startup\exe_common.inl(326)
> soffice.bin!WinMainCRTStartup() Line 17
> 	at f:\dd\vctools\crt\vcstartup\src\startup\exe_winmain.cpp(17)
> kernel32.dll!BaseThreadInitThunk()
> ntdll.dll!RtlUserThreadStart()

... so the problematic part is the SwCursorShell::EndAllTableBoxEdit being not
wrapped into some guard like the one that was fixed in
http://cgit.freedesktop.org/libreoffice/core/commit/?id=2d67042dc2f0672d1aca4784e61eb2a5d0e91e08
(see bug 95797).

-- 
You are receiving this mail because:
You are on the CC list for the bug.


More information about the Libreoffice-ux-advise mailing list