This is quite similar to SwFrame::GetFrameId(), i.e. it assigns a
numeric identifier to each instance to help debugging, as those
identifiers are stable accross runs.
Change-Id: I9cc57e316435f0284a1d481a956a703be859d67e
Reviewed-on: https://gerrit.libreoffice.org/27669
Reviewed-by: Miklos Vajna <vmiklos@collabora.co.uk>
Tested-by: Jenkins <ci@libreoffice.org>
comphelper::AsyncEventNotifier is an amazing class that dispatches
events in separate threads, no doubt implemented during times of
exuberant optimism about the tractability of shared-state
multi-threading.
Unfortunately the authors forgot to think about how all those awesome
threads will be joined, so if they are somehow blocked, then it may well
happen that the events are dispatched when the main thread is already in
DeInitVCL, and the objects required for the dispatching already smell
somewhat funny.
This happens quite reproducibly when changing dbaccess' ModelMethodGuard
to lock the SolarMutex too, then CppunitTest_dbaccess_RowSetClones
crashes in DeInitVCL() because one AsyncEventNotifier thread was blocked
until then by SolarMutexGuard, and this test never Yields once its
document is loaded.
Try to fix this by joining the "DocumentEventNotifier" threads from
DeInitVCL() itself.
Since there's no rtl::WeakReference to go with rtl::Reference, refactor
the AsyncEventNotifier and create a new AsyncEventNotifierAutoJoin
that has to be used with std::shared_ptr and std::weak_ptr.
Change-Id: I50a0749795acb04b0776e543f7125767b697ea35
Reviewed-on: https://gerrit.libreoffice.org/27581
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Michael Stahl <mstahl@redhat.com>
Tab Window
Add emoji.json to installation directory
Read the JSON data from code
Filter emojis according to categories
Insert Emoji at cursor position
Toolbar control
Change-Id: Ia5a577ce41398132872914ebfa499e4d4077d57e
Reviewed-on: https://gerrit.libreoffice.org/26700
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Akshay Deep <akshaydeepiitr@gmail.com>
Reviewed-by: Samuel Mehrbrodt <Samuel.Mehrbrodt@cib.de>
This is a follow-up to commit 9d91d371e92548c7f75a7d0155eecaf3769fdee6
(svx lok: draw text edits in all views, 2016-07-26). Two corner-cases
are now handled:
1) When the SfxViewShell is created after begin text edit and
2) When the other draw view is already created, but at the time begin
text edit happens, the other draw view shows a different page.
And the opposite of these: switching away from a page were we observe a
text edit done in an other view or destroying a view that observes a
text edit.
When the complete view goes away, then SdrObjEditView::HideSdrPage() is
not called, so also try to destroy the outliner view of the text edit
from SdrObjEditView::DeleteWindowFromPaintView(). The GetSfxViewShell()
call in SdrObjEditView::ShowSdrPage() is important, because we let the
other draw view create the outliner view, but the outliner view should
invoke our view shell, not the view shell of the other draw view.
Also improve the SdTiledRenderingTest::testCursorViews() testcase, so
that it asserts it managed to begin text edit and use a test document
that still has a single slide and shape, but the shape is not
auto-sized; otherwise invalidations happen even if outliner views are
not created in all draw views, so the test would pass even without the
fixes.
Change-Id: I2c3bb27826c6887115366db818599fc8adabc5a5
Reviewed-on: https://gerrit.libreoffice.org/27583
Reviewed-by: Miklos Vajna <vmiklos@collabora.co.uk>
Tested-by: Jenkins <ci@libreoffice.org>
Any string can be used as delimiter between integer and fraction.
It is now saved/loaded to/from ODF, as it was from XLS.
Change-Id: Ie6364d1cdefc020ea615c18099118135c619f96b
Reviewed-on: https://gerrit.libreoffice.org/27262
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Eike Rathke <erack@redhat.com>
Tested-by: Eike Rathke <erack@redhat.com>
change since...
commit c23ab5eaed57cc3fb5860e26c591c73c5b22687b
Author: Steve Yin <steve_y@apache.org>
Date: Tue Nov 26 14:25:22 2013 +0000
Integrate branch of IAccessible2
keep the accessible description, but drop thea accessible name which
is reportedly an undesirable change.
Change-Id: I8f9c53ef967c4e566fde1829832aa035efce4f23
Currently when a text edit is started, then in the LOK case if there is
an other view that shows the same page, then both draw views will have
an outliner view showing the text edit. This means that in case a view
shell is created after starting the text edit, that won't have an
outliner view for the text edit.
Before fixing this, calls to SfxViewShell::Current() has to be avoided
when we're in the process of setting up a new LOK view. In case of
Impress, this is a double initialization, and by the time
SdrObjEditView::ImpMakeOutlinerView() is called, we're already in the
process of setting up the second SfxViewShell (as part of
SdXImpressDocument::initializeForTiledRendering()), but
SfxViewShell::Current() still points to the old view shell. Which means
that the outliner view would refer to a view shell that's deleted soon,
and we crash as soon as it tries to invoke a LOK callback.
Fix this by adding a virtual member function to SdrObjEditView, and
override it in sd, so in case applications want to provide a more
precise way of giving the view shell owning a draw view, then they can.
Change-Id: Ie0005f73237d4ff9cf576bf16fa5b46280f13759
Reviewed-on: https://gerrit.libreoffice.org/27561
Reviewed-by: Miklos Vajna <vmiklos@collabora.co.uk>
Tested-by: Jenkins <ci@libreoffice.org>
verify that parameters on override methods have the same set of default
values for their params as their parent/super-methods do.
Change-Id: Ibdbc1c6e417fbaa680ea025a6bbf5ba9c2e5bcd2
Reviewed-on: https://gerrit.libreoffice.org/27437
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Noel Grandin <noelgrandin@gmail.com>
+ selected default tab page in the Impress
+ the default tab page is set when context isn't supported
+ switching between unsupported contexts is not causing
switch to default tab to avoid closing of tab which was
recently used by user
Change-Id: Ieeda8a79e6c67708551351f9bb49d8b006c0e74f
Reviewed-on: https://gerrit.libreoffice.org/27432
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Samuel Mehrbrodt <Samuel.Mehrbrodt@cib.de>
When we're after SdrBeginTextEdit(), but before SdrEndTextEdit(), and
have multiple views, then only the active view paints the edited text,
the other views look like the shape has no text at all.
Add a new callback that exposes the position and size of the rectangle
where the shape text will be painted after text edit ended, so clients
can draw some kind of locking indicator there. This way the rendered
result can differ in the "shape has no text" and the "shape text is
edited in an other view" cases.
Change-Id: I6096479a8a05c2547d15222e6d997b848af02945
Reviewed-on: https://gerrit.libreoffice.org/27441
Reviewed-by: Miklos Vajna <vmiklos@collabora.co.uk>
Tested-by: Jenkins <ci@libreoffice.org>
It requires a precise mouse down button in the rectangle border bounds
to select a full table, so it has added a tolerance value.
Change-Id: Ia8213ae452f93cd2faa957a50246638d1eb2198e
Reviewed-on: https://gerrit.libreoffice.org/27356
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Henry Castro <hcastro@collabora.com>
The problem was the the blinking cursor was hidden when another vcl
window got its focus, so it wasn't possible to edit two shape text in
parallel in two windows.
The code path is like this:
- show cursor, cursor is created: SdrObjEditView::SdrBeginTextEdit() ->
OutlinerView::ShowCursor()
- show cursor, focus case: sd::FuText::Activate() ->
OutlinerView::ShowCursor()
- hide cursor, cursor is deleted: SdrObjEditView::SdrEndTextEdit() ->
OutlinerView::HideCursor()
- hide cursor, focus case: sd::FuText::Deactivate() ->
OutlinerView::HideCursor()
So add a new optional bool parameter that allows not emitting the
LOK_CALLBACK_CURSOR_VISIBLE callback in the focus change case.
Also, if we're at it, make sure that painting emits no show/cursor LOK
callbacks.
Change-Id: I1068a1b1f5cd76fd09b5a79066834bfb0daebc77
Reviewed-on: https://gerrit.libreoffice.org/27335
Reviewed-by: Miklos Vajna <vmiklos@collabora.co.uk>
Tested-by: Jenkins <ci@libreoffice.org>
Revert "tdf#42788: FORMATTING - Numbering/ordered list"
This reverts commit 6517141b6233c5f9667031bc92f66109fddf5b76.
https://gerrit.libreoffice.org/#/c/23006/ was apparently
intended to revert this, but it never was
Then there was https://gerrit.libreoffice.org/#/c/23427/
which was an attempt to improve it but it was abandoned
Then there was https://gerrit.libreoffice.org/#/c/23542/
whichw as another attempt to improve it, but it was too
abandoned.
all of which leaves us worse than when we started with
a pile of unhappy abandoned efforts and cruddy indent
Change-Id: I8b3666a957339030d5a946a2b387f452e7fb0099
If more than one place in the code submits tasks to the shared
pool, then waitTillDone() becomes unreliable.
Add a tagging mechanism, so different callsites can wait
on different sets of tasks.
Also try to protect our worker threads against exceptions from
the thread tasks code.
Change-Id: Idde664ab50008d31a2dd73910bb22f50e62ae22f
Reviewed-on: https://gerrit.libreoffice.org/27042
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Noel Grandin <noelgrandin@gmail.com>
<sberg> thorsten, remember what that "TODO" in
SvxAccessibleTextPropertySet::getSupportedServiceNames was to be about exactly,
in a909acb7009acadffa53e74ea05ddb88803490f1 ?
<thorsten> sberg: that's a nonsense, prolly copy'n'pasted, or a 'please review
me'
<sberg> thorsten, OK, thanks (that override will eventually go away with
loplugin:unnecessaryoverride, and the TODO comment be lost)
Change-Id: Iba964c61768459aac4067bbd4e1f7d4f78f6adac
Reviewed-on: https://gerrit.libreoffice.org/27232
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
Tested-by: Stephan Bergmann <sbergman@redhat.com>