In Hide Changes mode, deleting table columns with change tracking
wasn't applied on the table layout immediately, only using Show
Changes and Hide Changes again. Now the deleted column removed from
the table instead leaving an empty table column.
Also revert commit 33058b5dc4
"tdf#156544 sw tracked table column: delete empty column".
See also commit a74c51025f
"tdf#146962 sw: hide deleted row at deletion in Hide Changes".
Change-Id: If03d2bc5996a168cb44839b0753effb9031edbc7
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/155522
Tested-by: Jenkins
Reviewed-by: László Németh <nemeth@numbertext.org>
Reproducing tdf#151866 on the .odt attachment, it becomes clear that the
fix for tdf#147938 is in the wrong place.
There a node has the merge flag None although it is the last node of a
merge, because CheckParaRedlineMerge() first sets the node flags and
then calls DelFrames(), which now resets the flags.
In case there's another caller of DelFrames() that needs this, it's not
obvious, can be added later.
(regression from commit 5b55ccfd38)
Change-Id: Iba0cb83260ecb18a4b96ded20a95b2b20d696fc4
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/155516
Tested-by: Jenkins
Reviewed-by: Michael Stahl <michael.stahl@allotropia.de>
... and "#CHECK XInterface#" comments;
it's obvious that this is what the next lines do.
Change-Id: I09234d1a2f5c58cfab1580f188229d28d27fc402
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/155506
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
... to return the `IAccessible*` in
`AccObjectWinManager::GetIAccessibleFromXAccessible` and
`CMAccessible::get_IAccessibleFromXAccessible` and adapt
the call sites accordingly.
This is more straight-forward and the extra bool return
value didn't add anything, since it was also just
saying whether the pointer was a nullptr, so rather
check that directly.
Also drop `AccObjectWinManager::GetIMAccByXAcc` that
does the same thing and switch the only call site
to use `AccObjectWinManager::GetIAccessibleFromXAccessible`
instead.
Change-Id: I72933df62aa9ac1ff3f2a84c5045dfae354c18e2
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/155505
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
When not embedded, databases usually
require user and password to grant
access to scripts.
When the access was refused, so far the
execution was stopped brutally with an
error message provided by LO internal
code.
This was made visible during some tests
with a MySql database server.
The code to be reviewed is located in the
creation of the "database" service. This
service has the sungularity that it can
be called from several other service
instances.
As from this commit unsuccessful tentatives
to login to a database from code are
rejected with a clean SF error message.
The different scenarios to create a
database service have been (re)tested.
Change-Id: I695d108242872d27671688af76916784908aeebe
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/155507
Reviewed-by: Jean-Pierre Ledure <jp@ledure.be>
Tested-by: Jenkins
The code was all over the place with classes split between files or
grouped in some files and I couldn’t make a head or tail of it. Move
each class to a dedicated source/header file.
Change-Id: I35daa05b4684c13339c637819dc30fa47a60cf65
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/155503
Tested-by: Jenkins
Reviewed-by: خالد حسني <khaled@libreoffice.org>
Only the "active" document was waiting for a user idle.
But that doesn't make sense because the background apps
still lock the foreground app during file save.
So all timed backups should wait for a user idle period
before starting their recovery / autosave.
Once an idle loop is triggered, no autosave will ever run again
until an idle timeout occurs! So a busy user who switches from
one doc to another without ever pausing still wouldn't ever
get a backup - even from the background docs!
Without this patch, only the first modified documents
(if backgrounded within 10 minutes) would ever
get a recovery save. So in pretty much every case
this patch makes sense AFAICS.
Change-Id: I6e9e04aa2e50895e53826b427cb52c129da43701
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/155459
Reviewed-by: Justin Luth <jluth@mail.com>
Tested-by: Jenkins
of the insert special character dialog. The character popdown uses
multiple rows instead.
Change-Id: If3c5578a018a31dbdb0a0d9785f18b570e13112f
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/155502
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com>
A section frame is created so that content can move back from another
page into it.
Apparently only the pPrv frame is on the same page, and formatting it in
SwFrame::MakePos() moves it backward, then CheckPageDescs() sees a page
with only empty section frames on it and deletes the whole page.
(regression from commit b9ef71476f)
Change-Id: I4f8e4debd4bcf993c9355dcfc3ced779fe6732ff
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/155467
Tested-by: Jenkins
Reviewed-by: Michael Stahl <michael.stahl@allotropia.de>
This patch fixes the recent problem with building LibreOffice with ccache
on Windows which was caused by the lack of double quotation mark between
ccache.exe and path to the MSVC compiler.
Change-Id: I1a714513ccb8cd674895d0c887013ea862d3b544
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/152277
Tested-by: Jenkins
Reviewed-by: Hossein <hossein@libreoffice.org>
The bugdoc has 2 floating tables, the second one is shifted down in
Word, so it doesn't overlap, even if the positioning attributes would
lay them out with an overlap.
The bugdoc has <w:tblOverlap w:val="never"> set for the second table, we
can import that to Writer's
SwFormatWrapInfluenceOnObjPos::mbAllowOverlap, which was originally
added for shapes.
writerfilter/ only has access to the UNO API, so do this via the
AllowOverlap text frame property.
The layout is still missing for this, but now the doc model is correct.
Change-Id: I25df9b75633c05af206b94ff0ad71bd240f393f5
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/155499
Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
Tested-by: Jenkins
Which means what the test actually does is now not hidden behind a
custom macro.
Change-Id: I75d2429dab899ab44f41c9930adbe66f09cacefd
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/155468
Tested-by: Jenkins
Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
ScPostIt::mnLastPostItId is a static variable, which is used for
generated the comment ID. In the test we depend that the ID are
consistent and start with 1, but as we have more tests that insert
comments this can be a problem.
testCommentCallback and testCommentCellCopyPaste, both add comments
and the expected execution order is testCommentCallback and then
testCommentCellCopyPaste, so the latter test resets the mnLastPostItId
variable to 1, so the IDs are consistent. In a LO 7.6 build for
Fedora, it happened that the testCommentCellCopyPaste was executed
first and testCommentCallback afterwards, but in testCommentCallback
we do not reset the mnLastPostItId and the build failed.
This change resets the mnLastPostItId also in testCommentCallback.
Change-Id: I123b2f47b0d6177b2f5bdefcf6d8e9c301a7413b
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/155498
Tested-by: Tomaž Vajngerl <quikee@gmail.com>
Reviewed-by: Tomaž Vajngerl <quikee@gmail.com>
When `AccTextBase::get_offsetAtPoint` gets called with
screen coordinates, convert them to local coordinates
within the text object first, because that is what
`XAccessibleText::getIndexAtPoint` expects.
Not doing so resulted in NVDA failing to create
a TextInfo object in the mouse event handler [1]
when hovering over a Calc cell containing text,
because the method would always return an offset
of -1.
With this change in place, NVDA now announces the
text when hovering over the text and mouse tracking
is enabled in NVDA (which is the case by default).
Other than with Microsoft Excel, the text is only
announced when the mouse is actually over the text,
not over free space in the cell, which might be
because Excel uses UIA and the UIA equivalent,
`ITextProvider::RangeFromPoint` [2] shall also return
the index of the closest character when the point
itself is not over the actual bounds of any
character.
[1] a198c9b5f2/source/NVDAObjects/__init__.py (L1209)
[2] https://learn.microsoft.com/en-us/windows/win32/api/uiautomationcore/nf-uiautomationcore-itextprovider-rangefrompoint
Change-Id: I1e4ab2dd3dace5fea1de2eef67a91fe3c31218a9
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/155492
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
Instead of manually iterating over the children
and checking whether the given position is in the location
that they're in in `CMAccessible::accHitTest`, use
`XAccessibleComponent::XAccessibleComponent`, which
provides exactly the functionality that's needed.
(This is similar to what the Qt-based VCL plugins
on Linux do, s. `QtAccessibleWidget::childAt`.)
This also drops the need to limit this to objects
that have at most a certain amount of children
for performance reasons (previously 256) and thus
makes this work e.g. also to identify a Calc cell
that the mouse pointer is currently over while previously
the document was returned, as could be seen also in
NVDA's Python console:
1) start NVDA
2) hover over a Calc cell
3) press NVDA+Ctrl+Z to capture snapshot variables
4) check what NVDA identifies as the mouse object
via the Python Console:
Before:
>>> mouse
<NVDAObjects.IAccessible.IAccessible object at 0x00FB9910>
>>> mouse.name
'Untitled 1 - LibreOfficeDev Spreadsheets'
>>> mouse.role
<Role.DOCUMENT: 52>
With this change in place:
>>> mouse
<NVDAObjects.Dynamic_SymphonyIATableCellEditableTextWithAutoSelectDetectionIAccessible object at 0x0774DD10>
>>> mouse.name
>>> mouse.role
<Role.TABLECELL: 29>
The cell's text still isn't announced by NVDA even
with mouse tracking enabled, but that's another issue.
Change-Id: Ib821020cef6303ab786c4c3fc3ccd917398214f1
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/155491
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>
If we currently are in a user idle state, then don't delay
any recovery / autosave's until a future idle timeout.
Change-Id: Ie3953bb7456370d046b76a4cad816498dbfc85e5
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/155462
Tested-by: Jenkins
Reviewed-by: Justin Luth <jluth@mail.com>
This patch makes keyboard navigation of the sidebar tabbar skip over
disabled tabs. Tabs become disabled when a document is set in read-
only mode. They can also be disabled by user customization of the
tabbar.
Change-Id: Iafabfe27fbeaea60acf66527eafbb5396edaf647
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/155442
Tested-by: Jenkins
Reviewed-by: Rafael Lima <rafael.palma.lima@gmail.com>
The problem was that the fly's anchor frame was moved to page 2, and
then IsShortCut() returns true for the anchor frame, which means only
the anchor frame itself is formatted, but not its fly.
Thus the fly remains invalid and positioned on page 1 when its rectangle
is passed to SwViewShell::VisPortChgd(), and only later it is properly
positioned.
(regression from commit eb85de8e6b)
Change-Id: I9e0554bd0d9751b47a11a3917575d382139ee93a
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/155461
Tested-by: Jenkins
Reviewed-by: Michael Stahl <michael.stahl@allotropia.de>
no need to use two different ImplHelpers here
Change-Id: I1c871f8e0e49ff8a0a540e8051f3a89a54130322
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/155457
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
CN..."
This reverts commit 22c7ce6c8e.
Not needed any more as we now get the style from FontConfig, since:
commit 0b5e88bc88
Author: Khaled Hosny <khaled@libreoffice.org>
Date: Thu Aug 3 13:44:43 2023 +0000
tdf#114192: Speed up populating font list when FontConfig is used
Change-Id: If6a51ffe681896a7ffda1a06da02585e8141c81e
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/155458
Tested-by: Jenkins
Reviewed-by: خالد حسني <khaled@libreoffice.org>
* Update translations from branch 'master'
to 9c0d5620123db0ea25d5ecddbc4136c00d9413a7
- update translations for 7.6.0 rc3
and force-fix errors using pocheck
Change-Id: I39580c4b4ae6b4baffb5a959d7275c8f49751059
so checking for ShowNotes() again is redundant
Change-Id: I0045a352232ed4e09344b36d2774aae81f8b0d8f
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/155448
Tested-by: Caolán McNamara <caolan.mcnamara@collabora.com>
Reviewed-by: Caolán McNamara <caolan.mcnamara@collabora.com>
Useful for QA test queries.
..
Signed-off-by: Henry Castro <hcastro@collabora.com>
Change-Id: Ibd3c902405f478032447b10286a788cd0769c855
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/154600
Tested-by: Jenkins
Reviewed-by: Tomaž Vajngerl <quikee@gmail.com>
When the formula reference mode is active and it process
the keyboard event UP, it should decrease -1 according
the merge attribute row, col span.
Signed-off-by: Henry Castro <hcastro@collabora.com>
Change-Id: I278bcd9d52caeb09e4a47336af8c8e9b522397c9
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/154599
Tested-by: Jenkins
Reviewed-by: Tomaž Vajngerl <quikee@gmail.com>
Extend the merged cell if the current has the attribute "Merged".
Signed-off-by: Henry Castro <hcastro@collabora.com>
Change-Id: Ia2d5983d89b8661abb683d10d4de8bd0c5adea7d
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/153657
Tested-by: Jenkins
Reviewed-by: Tomaž Vajngerl <quikee@gmail.com>
encountering when we need to pass a std::string to an OString
Change-Id: I91d2aa1f20e7c2407c708c9ce4ae82fb52934c85
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/152526
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
... wants to move back.
In this document, the table 1709 splits across 3 columns of the section
1702 with 1 row each, and when its follows are invalidated in
CalcContent(), the later SwTabFrame::MakeAll() of the 1st follow joins
the 2nd follow and invalidates the size of the section frame, causing a
loop.
So only invalidate if that actually looks necessary.
(regression from commit 59987d3c77)
Change-Id: I360c8f697a7666a19a08d8ebcabbcfa3a7cdf844
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/155452
Tested-by: Jenkins
Reviewed-by: Michael Stahl <michael.stahl@allotropia.de>
In this case footnote really means footnote, as there is a separate
class for endnotes.
Change-Id: Ic701e33b45d22ac42a9518a7d44b2e8a43fac4a6
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/155431
Tested-by: Jenkins
Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
Opening the bugdoc and inserting a page break at the document start
resulted in a crash.
The direct problem was a nullptr deref in Notify_Background(), because
pCnt reported true for IsInTab(), but then FindTabFrame() didn't find
anything. The deeper problem was that SwFrame::GetNextFlyLeaf() had a
case where it created a follow text frame for the anchor of a floating
table, but that follow text frame went inside a table on the start of
the next page, not to the start of the page.
Fix the problem by continuing to use GetNextLayoutLeaf() (which knows
how to traverse the layout tree from a fly frame to its anchor and then
to a next page), but once we moved to a body on a next page and we would
insert inside an inline table, insert before the table instead.
Need to make sure the target is in a body frame, because a next layout
leaf in a footer's table is not OK.
Change-Id: I3ff6a0bbc2cac5f1bc2803a52a632c13053d4daa
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/155444
Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
Tested-by: Jenkins
`AccObjectManagerAgent` was holding an
`AccObjectWinManager` object and forwarding
everything to that one and the event listeners
were holding a pointer to the `AccObjectManagerAgent`
object.
Drop this `AccObjectManagerAgent` indirection
and let all of the classes that were interacting
with the `AccObjectManagerAgent` directly interact
with the `AccObjectWinManager` instead.
The idea of having the agent seems to have been
to have an abstraction layer and implement
different accessible object managers for all
platforms, but the agent already has quite some
Windows-/IAccessible-specific code/interface and by now, the
Linux VCL plugins and macOS have their own
a11y bridges, so the TODO do implement this here
for Linux as well seems outdated to me.
Even if implementing this for Linux and/or macOS
in a similar way, I don't see the need for the
agent layer, but one way might be to
just have an abstract base class
(e.g. `AccObjectManager`) that `AccObjectWinManager`
and implementations for other platforms derive from,
and have the SalInstance return the platform-specific
implementation that the `AccTopWindowListener` would
then retrieve and pass on.
Given that `AccObjectManagerAgent` was forwarding
all calls to `AccObjectWinManager` and the methods
and params are mostly the same by now (s.a. the
preparatory commits), this change is mostly
straightforward.
A few notes:
* `AccObjectManagerAgent::InsertAccObj` had a default
nullptr value for the HWND that
`AccObjectWinManager:InsertAccObj` didn't have yet,
so add that.
* `AccObjectManagerAgent::GetIAccessibleFromResID` had
an out param instead of a return value; call sites
were adapted to fit
`AccObjectWinManager:GetIAccessibleFromResID`.
* The `UpdateValue` and `UpdateAccName` methods
taking 2 params are called `SetValue` and
`SetAccName` in `AccObjectWinManager` instead,
so adapt call sites accordingly.
* prewin.h and postwin.h includes had to be added
around the windows.h include in AccObjectWinManager.hxx
(build would otherwise fail)
* A few `AccObjectWinManager` methods had to be made
virtual to make linking work.
Change-Id: I88741bf416d4db25d78e973c0db060a828f27926
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/155440
Tested-by: Jenkins
Reviewed-by: Michael Weghorn <m.weghorn@posteo.de>