Commit graph

24162 commits

Author SHA1 Message Date
Pranam Lashkari
ccdf5a379f annotation: display dialog for conflicting comment modification
Signed-off-by: Pranam Lashkari <lpranam@collabora.com>
Change-Id: Ie45aa11a0df506fdb8c9d0d78b186323ee3a4242
2024-06-10 05:39:28 +03:00
Pranam Lashkari
80aae586a2 annotation: show dialog to user when comment list changes
inform user before updating comment list if user is editing comment

We also take care of importing latest update of comment in onACKComment,
because when we show dialog comments are always autosaved. So any subsequesnt
operations (i.e: save or cancle etc) will always trigger onACKComment.
problem:
if user was editing any comment and entire comment list was reimported
(ie: if another user enables show tracked changes) then comments will
not load correctly and will be invisible until doc is reloaded.

Signed-off-by: Pranam Lashkari <lpranam@collabora.com>
Change-Id: I55274633fac0da49989141873f87f29936d1515f
2024-06-10 05:39:28 +03:00
Caolán McNamara
136e4c5dd0 Don't show audit snackbar if all entries are all 'ok' state
I see this on a local nextcloud where the audit dialog only has one entry
which is "ok".

Signed-off-by: Caolán McNamara <caolan.mcnamara@collabora.com>
Change-Id: I55f12125cbc0ca4c88c9220ed114d455e84639e0
2024-06-07 18:46:01 +02:00
Skyler Grey
90a9c3c32a fix(prefs): Add compatibility with existing names
I figured out a way to stop compatibility breakages being so annoying
with the prefs refactor without needing to keep a prefs dictionary
around forever.  If, on starting the application, we set new preference
names to old preference values we can choose when to break
compatibility.

This will allow us to do so later on, i.e. a significant time after the
rename, when many users will have had their preferences migrated and the
version with the old preference names is no longer supported.

Signed-off-by: Skyler Grey <skyler.grey@collabora.com>
Change-Id: I5f4101fb95b5f3b2caaf9ebaf353eb591024dd97
2024-06-07 09:02:34 +00:00
Skyler Grey
f9c3447061 fix(prefs): Use strings for ui_defaults values
Previously we converted some ui_defaults values to booleans.
Unfortunately, when we save similar preferences to LocalStorage, we can
only save them as strings. To make sure code doesn't get booleans when
it's expecting everything to be a string, let's only send strings back
in our ui_defaults json

A nice followup to this might be to continue standardizing ui_defaults
transformation code on the server side so that its use is minimal (e.g.
uiMode, uiTheme variables), however an overhaul of server-side
ui_defaults was deemed to risky for now

Signed-off-by: Skyler Grey <skyler.grey@collabora.com>
Change-Id: I35ce175bf38da40361efd6f246264d0733e975e9
2024-06-07 09:02:34 +00:00
Skyler Grey
f93a9ee086 fix: Use global.savedUIState instead of ui_default
savedUIState isn't a normal UI_default, so it doesn't show up in the
ui_defaults list, and we can't fetch it with our prefs helper. Instead,
we should use the property on window

As a followup, it may be nice to make savedUIState be treated like a
normal ui_default, but I think that an overhaul of server-side
ui_default stuff is too risky for now

Signed-off-by: Skyler Grey <skyler.grey@collabora.com>
Change-Id: Ia66570c4694608a5caf7feba60208f34ca3c8ad3
2024-06-07 09:02:34 +00:00
Gökay Şatır
772339446c Skip a failing test for now.
Signed-off-by: Gökay Şatır <gokaysatir@collabora.com>
Change-Id: I5f662c186bbb87c58e5b3e56861628612f1ed012
2024-06-06 21:22:17 +03:00
Gökay Şatır
441642c9da Don't check text selection handlers on desktop. They're hidden on desktop.
Signed-off-by: Gökay Şatır <gokaysatir@collabora.com>
Change-Id: I826c7c2af914f1480b55b1dd394eb57307a41997
2024-06-06 21:22:17 +03:00
Gökay Şatır
20500adc26 Fix null pointer issue.
Signed-off-by: Gökay Şatır <gokaysatir@collabora.com>
Change-Id: I7afe7c83c96f94584372db9d709e91563ece8b51
2024-06-06 21:22:17 +03:00
Skyler Grey
c19c9718e6 fix: Correct typo in function name
Signed-off-by: Skyler Grey <skyler.grey@collabora.com>
Change-Id: I57f6f19fd9e4e4f7e547714859166cabbb7da61f
2024-06-06 09:48:18 +00:00
Skyler Grey
411a325106 fix(ScrollSection): Standardize on isRTL
In If4261a3e32375f6127241b846b97a3b4ac29eb0b, I introduced isRTL, which
can be set at construction of a ScrollSection. Unfortunately, some
places in ScrollSection still used isCalcRTL which could theorectically
be out-of-sync with isRTL, causing inconsistency in different parts of
ScrollSection code. This commit standardizes on only using isRTL.

Signed-off-by: Skyler Grey <skyler.grey@collabora.com>
Change-Id: Ieaaa373c4db6d48e57e9cfe730d1b4bdffa20a8a
Refs: If4261a3e32375f6127241b846b97a3b4ac29eb0b
2024-06-06 09:48:18 +00:00
Skyler Grey
fc99b2b5ef fix(RTL): Unflip horizontal scrollbar
This is a fix for a regression which I introduced in
If4261a3e32375f6127241b846b97a3b4ac29eb0b.

Before this fix we were flipping the direction of scrolling on RTL mode
twice, once in onMouseMove and once in scrollHorizontalWithOffset. This
had the effect of cancelling to not flip the scroll at all. Oops.

The scrollHorizontalWithOffset isRTL distinction is still important to
keep for panning, so I'll remove the other one.

Refs: If4261a3e32375f6127241b846b97a3b4ac29eb0b
Signed-off-by: Skyler Grey <skyler.grey@collabora.com>
Change-Id: Ie8aa49196ebf2bb04ccbba46e7c0668a9860191b
2024-06-06 09:48:18 +00:00
Skyler Grey
f419700762 fix(mobile): show RTL scrollbar on the proper side
Mobile (not tablet) mode has a different sort of scrollbar to desktop
mode. Like the desktop scrollbar, it should render on the other side if
we are in RTL mode.

Signed-off-by: Skyler Grey <skyler.grey@collabora.com>
Change-Id: I2bcedbe79e572cc59a60648262ff77a48673e555
2024-06-06 09:48:18 +00:00
Szymon Kłos
587504a662 jsdialog: use early initialized map
Fix for using uninitialized app.map, when calling cool.html
without parameters:

Uncaught TypeError: Cannot read properties of null (reading 'fire')
    at JSDialogMessageRouter.processMessage (Util.MessageRouter.ts:95:12)
    at NewClass._onJSDialog (Socket.js:1540:26)
    at NewClass._onMessage (Socket.js:1292:9)
    at NewClass.showModal (Control.UIManager.js:1139:14)
    at NewClass.showInfoModal (Control.UIManager.js:1250:8)
    at main.js:79:16
    at main.js:137:2

Signed-off-by: Szymon Kłos <szymon.klos@collabora.com>
Change-Id: I9307e1117e63f9386374d403d3a24e459e0a0b9a
2024-06-06 10:57:11 +02:00
Miklos Vajna
621ec809b3 cool#9219 kit: fix setclipboard command with HTML payload
Have two COOL servers, copy on one instance, paste an on other instance,
nothing happens on Ctrl-V.

It appears the JS code in Clipboard.js
_dataTransferDownloadAndPasteAsync() gets the correct HTML, but when it
tries to contact the "copy" server for the underlying full clipboard,
some security policy prevents the JS code from doing that. Which means
1) perhaps we should do that HTTP fetch on the server, not in JS and 2)
the fallback code should at least work via normal HTML.

Fix 2) by extending ChildSession::setClipboard() to recognize if the
data has the typical HTML header, and only start the usual parsing in
case the data we got is not bare HTML.

The 1) still needs fixing.

Signed-off-by: Miklos Vajna <vmiklos@collabora.com>
Change-Id: I55a102c2a39d21ac898f82041760a220e46784cb
2024-06-06 09:34:07 +01:00
Skyler Grey
51ca018010 fix: allow changing compact to tabbed mode
This is a fix for a regression from
I4cc9cc885aa8cd0b40646629cd73bef236963a94

Compact/tabbed mode was saved on a per-app basis, but read on a global
basis. This meant that the read preference was never changed, causing it
to be impossible to switch out of compact mode once you had entered it.

The fix is to change back to the previous behavior of saving and reading
on a global basis

Refs: CollaboraOnline/Online#9181
Signed-off-by: Skyler Grey <skyler.grey@collabora.com>
Change-Id: Ie9d72d6b7e10e209f10acf662535c866e06a98de
2024-06-06 09:05:04 +01:00
Caolán McNamara
0368a33faa Fix JSON syntax error for some Hebrew strings
same fix as:

commit 4ab2810fa5
Author: Tor Lillqvist <tml@collabora.com>
Date:   Tue Apr 5 16:20:35 2022 +0300

    Fix JSON syntax error for some Hebrew strings

Signed-off-by: Caolán McNamara <caolan.mcnamara@collabora.com>
Change-Id: Ic25bffa209cb7875756f3474547585ae7e69e4ba
2024-06-06 08:45:40 +02:00
Andras Timar
bd576fdc2a Updated translations from LO core
Signed-off-by: Andras Timar <andras.timar@collabora.com>
Change-Id: I2d4ef21b465a7fad2f2bc0487da63b71ed9ad6f4
2024-06-06 08:43:52 +02:00
Andras Timar
a61ff2bfab Update l10n files for Weblate
Signed-off-by: Andras Timar <andras.timar@collabora.com>
Change-Id: I5e2d0f5b89c757f9fedab1b9cf0512d00e4ff3f9
2024-06-06 08:35:05 +02:00
Darshan-upadhyay1110
f15b4677b8 Print slides with notes
- Added option to print slides with inserted notes in it.
- It is consistent in both view -> Tabbed and Compact view
Signed-off-by: Darshan-upadhyay1110 <darshan.upadhyay@collabora.com>
Change-Id: If47a2384cda633eab4a754c07e690f0a9b0eb4a0
2024-06-05 20:37:33 +05:30
Andras Timar
909104356b rpm: follow-up on wsd/README->wsd/README.md change
Signed-off-by: Andras Timar <andras.timar@collabora.com>
Change-Id: Ia3f71a5f5fa0ffb9800b3a311c53bd06188c0aa0
2024-06-05 16:57:51 +02:00
Szymon Kłos
f5bfde5e40 Audit dialog: make audit per DocumentBroker
This will allow to avoid parallel access from many
sources. If one instance is used by different integrations
- we will warn only affected users.

Signed-off-by: Szymon Kłos <szymon.klos@collabora.com>
Change-Id: Ic397566c8e8e699dbfe5fd60b305040f735b44bc
2024-06-05 15:42:42 +01:00
Szymon Kłos
5ce52d172e Audit dialog: initialize after docLayer is ready
Signed-off-by: Szymon Kłos <szymon.klos@collabora.com>
Change-Id: I99e5bf9b07effd8c84c3f716e98700874c0804c1
2024-06-05 15:42:42 +01:00
Szymon Kłos
6b94f9a5f2 Server audit: generate correct JSON
append "," when needed

Signed-off-by: Szymon Kłos <szymon.klos@collabora.com>
Change-Id: Ic5147ec34ea47521e18687e0ed408bf902962768
2024-06-05 15:42:42 +01:00
Szymon Kłos
f12e9f5ba6 Audit dialog: show all checks
Always show entries for things we check with status: red/green circle.
Initialize values on server start. If any user will not have is_audit
then we will mark that and later admin will see warning.

Signed-off-by: Szymon Kłos <szymon.klos@collabora.com>
Change-Id: I0eb434b4d1ed9e4ec4eb9c463d0aa4516e0926d5
2024-06-05 15:42:42 +01:00
Szymon Kłos
0353e0e2dc Audit dialog: don't show annoying snackbar for all users
so it will not be annoying

Signed-off-by: Szymon Kłos <szymon.klos@collabora.com>
Change-Id: Idefa59b855160035a08da7dce936e83c1475995d
2024-06-05 15:42:42 +01:00
Szymon Kłos
79fc6c28f1 Audit dialog: create ServerAuditUtil in wsd
and get real state of missing is_admin property

Signed-off-by: Szymon Kłos <szymon.klos@collabora.com>
Change-Id: I988ac357d2eca27e0bdf55d144f33caf780be5f4
2024-06-05 15:42:42 +01:00
Szymon Kłos
a41f4e83bf Audit dialog: make it bigger
Signed-off-by: Szymon Kłos <szymon.klos@collabora.com>
Change-Id: Ic64ca75b2bca8b783729285f6ffa43b78f94cc0b
2024-06-05 15:42:42 +01:00
Szymon Kłos
58c4d86f0e Audit dialog: add SDK link support
Treeview can now show links, not only text

Signed-off-by: Szymon Kłos <szymon.klos@collabora.com>
Change-Id: I49f53f598355f398841947adaefb475cfa6ba7d1
2024-06-05 15:42:42 +01:00
Szymon Kłos
1a0d289e13 Added API to send server audit information
we use { code: string, status: string } entries to describe a
problem

Signed-off-by: Szymon Kłos <szymon.klos@collabora.com>
Change-Id: I21dacc0fa7b2c48f08ea2923e73da58fe33f976e
2024-06-05 15:42:42 +01:00
Szymon Kłos
f0dd43191d Added server audit dialog
This is dialog shown only for the admin users, or if is_admin
property is missing in the userPrivateInfo then - all users.

Signed-off-by: Szymon Kłos <szymon.klos@collabora.com>
Change-Id: Ife8355816b1afe6765ef5edc6fe2d3db5e043532
2024-06-05 15:42:42 +01:00
Andras Timar
3e771856a4 Bump version to 24.04.4.1
Signed-off-by: Andras Timar <andras.timar@collabora.com>
Change-Id: Iff5456207adb5bf464290cb0c51acbf6de30b459
2024-06-05 13:51:02 +02:00
Henry Castro
c377673103 browser: toolbar: avoid forcing to clear references
1) press F2 to edit a formula cell with defined range
2) The reference it is marked and painted
3) The formula bar lost focus and force to clear the mark

The references will be cleared due to response from server message.

Change-Id: I32fbacc8d846cf8ba8b3371f3386d07e9cebe470
Signed-off-by: Henry Castro <hcastro@collabora.com>
2024-06-04 17:18:41 +02:00
Michael Meeks
686f04ef2e deltas: force keyframe on the next render if deltas get too large.
This should save server memory, and also complexity de-compressing
and also browser CPU re-rendering deltas from raw fzstd compressed
pixels.

Signed-off-by: Michael Meeks <michael.meeks@collabora.com>
Change-Id: I12281fb85416a059d31b5df52b9ec8d79e4af316
2024-06-04 16:13:04 +01:00
Ashod Nakashian
31e4d54d28 wsd: always exit Kit when unloading
We never re-use a Kit process. Therefore,
when we unload a document, we must also
exit the Kit process.

Alternatively, when there is at least
1 session, we keep the document loaded
and the Kit process so that a new
view can be created.

Change-Id: I33ee87149f326634c6ae67be78584d5c20ec0357
Signed-off-by: Ashod Nakashian <ashod.nakashian@collabora.co.uk>
2024-06-04 16:27:14 +02:00
Ashod Nakashian
e387beb386 wsd: combine logs
Change-Id: I24b7736e0a6a2c794738500c4f128d634aa92c63
Signed-off-by: Ashod Nakashian <ashod.nakashian@collabora.co.uk>
2024-06-04 16:27:14 +02:00
Skyler
1d436f0ada Make Collabora Office folder visible in iCloud
Previously the Collabora Office folder was hidden in iCloud. This was
normally fine as you could only create documents outside it, however
creating documents from the "Recents" tab still created them inside the
folder, making it impossible to later find the documents.

Showing the folder fixes this issue.

Signed-off-by: Skyler <skyler.grey@collabora.com>
Change-Id: I3ad9f2708934006fe25e8aa64af3c8f0378ab267
2024-06-04 16:06:13 +02:00
Skyler
5593f12517 iOS: Add declarations for APIs
Some APIs require declaration of reason, and after May 1st this would
prevent us from uploading new builds. This commit adds the required
compliance information to explain why we use the APIs we do.

Please see https://developer.apple.com/documentation/bundleresources/privacy_manifest_files/describing_use_of_required_reason_api
for more details on APIs which require reasoning to use

Signed-off-by: Skyler <skyler.grey@collabora.com>
Change-Id: Ie6b05b754b2f3fd8e3e9b49d8e3b0581f63a8a1d
2024-06-04 16:06:13 +02:00
Skyler
68ddecba95 Add macOS metadata to .gitignore
Signed-off-by: Skyler <skyler.grey@collabora.com>
Change-Id: I03471f1f7015a41f98d1120355ba3879aebfa54a
2024-06-04 16:06:13 +02:00
Skyler
db68ed7cd6 iOS: Change document editing roles & ranks
The ranks in iOS are "Owner", "Default", "Alternate" and "None". We used
"Owner" for all of the OASIS formats, which are not defined by us, but
for .fodt which is specified as "com.collabora.xyz" we had "Default".

Similarly, we only open PDFs in "Read Only" mode so should be classified
as a viewer rather than an editor.

Signed-off-by: Skyler <skyler.grey@collabora.com>
Change-Id: I411d9b26e7f4a70ed7cc36974459fdf5c89a6c22
2024-06-04 16:06:13 +02:00
Chris Lord
8ef93d742f Fix reconstituting old keyframes unnecessarily in CanvasTileLayer
It looks like in the case where _ensureContext needs to create a new
context in response to a keyframe delta, we were decompressing,
unpremultiplying and drawing the old data first.

This patch clears the old data immediately when receiving a keyframe.

Signed-off-by: Chris Lord <chrislord.net@gmail.com>
Change-Id: Iebc4de1a4f08cb4353c3daa50cdfe27309f01b9f
2024-06-04 13:06:50 +01:00
Michael Meeks
727417c140 UnitPerf: add a simple performance unit test.
Change-Id: I367bb88c0acc22c0f57255403319d50c4ece849c
Signed-off-by: Michael Meeks <michael.meeks@collabora.com>
2024-06-04 09:11:52 +02:00
Michael Meeks
a5ddaf7c2a Add SysStopwatch to use /proc/self/stat tick timings to measure time.
Signed-off-by: Michael Meeks <michael.meeks@collabora.com>
Change-Id: I52c115d63268e3b7086d0426f5dd95390a7331c4
2024-06-04 09:11:52 +02:00
Skyler Grey
cb6cf1314b fix: improve global.js/Socket.js init parity
Ic661358cd47600ec9c3a329bef361b8087483017 prevented us from executing
cypress tests with accessibility enabled when in calc. Unfortunately, it
omitted to make the same change in the logic which sets
accessibilityState in Socket.js

Signed-off-by: Skyler Grey <skyler.grey@collabora.com>
Change-Id: Ic0e201c6402c1c22717e789a8bcf24579c07d414
2024-06-03 16:16:50 +00:00
Skyler Grey
98035fedb5 refactor: remove per-app darkmode vestiges
Dark mode being saved in localstorage per-application doesn't make much
sense and is different to the ui_defaults options. It's far better to
save dark mode gobally.

In a previous commit, we did that. After doing so, this code is obsolete

Signed-off-by: Skyler Grey <skyler.grey@collabora.com>
Change-Id: Ic00bf2d7a7ad58bfdcf3f7375bebfafe62a75686
2024-06-03 16:16:50 +00:00
Skyler Grey
e36d6ffb9b fix: fix UI preference inconsistencies
Add helper functions for fetching preferences from localstorage and
ui_defaults. By having these in unified helpers, we can be certain that
we're not making differences in the priority or use of different stores
which can cause UI inconsistency.

BREAKING-CHANGE: This changes the naming of many of the preferences in localStorage, effectively resetting lots of UI preferences

Signed-off-by: Skyler Grey <skyler.grey@collabora.com>
Change-Id: I4cc9cc885aa8cd0b40646629cd73bef236963a94
Fixes: CollaboraOnline/online#9166
2024-06-03 16:16:50 +00:00
Caolán McNamara
e5c0c42072 remove mention of saveDataToFileSafely that doesn't exist
doesn't exist since:

commit fdf5687d7c
Date:   Mon Apr 20 16:30:05 2020 +0300

    Bin some dead code, this gets rid of a use of Util::alertAllUsers(), yay

Signed-off-by: Caolán McNamara <caolan.mcnamara@collabora.com>
Change-Id: I90976ab75649ab58197d593520d90d6579a07cfe
2024-06-03 15:26:09 +02:00
Szymon Kłos
0a9b7b6b82 jsdialog: move About dialog to separate file
- converted to TS
- will be later extended with additional functionality

Signed-off-by: Szymon Kłos <szymon.klos@collabora.com>
Change-Id: I883da61018808d79d616d7346e86dadf9fa7079e
2024-06-01 07:48:48 +02:00
Gökay Şatır
f846e66c4b Text selections handles should be active when there is a text selection.
That condition shouldn't be checked before scrolling to selection position.

This fixes "doesn't scroll to searched text" issue.

Signed-off-by: Gökay Şatır <gokaysatir@collabora.com>
Change-Id: I9f901ba2fa15ade5416ad68f62e356e34163c641
2024-06-01 07:48:25 +02:00
Pedro Pinto Silva
2da77405ad Formula bar: buttons: make grid on equably sized columns and fix btn
- Toolbox: Remove height min-content as it's prone to problems and different
outcomes depending on the context. Plus we don't need it if we enforce
it via grid
- Center all elements
  - Including unotoolbutton

Signed-off-by: Pedro Pinto Silva <pedro.silva@collabora.com>
Change-Id: Iadc55f0d253dd4a06c11ad8cd062c02863b1d12f
2024-05-31 14:30:19 +01:00