This code was lifted from Open-Sankoré 2.10.
This fixes an issue where erasing part of a stroke that had been moved
or rotated, then clicking "undo" then "redo" would place part of the
stroke in the wrong place.
We can (again) check for updates and, if an update is available, send
the user to the site to download them.
The old format (a .json specifying a version number and download URL)
was kept. The address for this file is now specified in the settings.
Images (UBGraphicsPixmapitem and UBGraphicsSvgItem) can be set as
background via the menu on their frame. Currently, the image is first
centered and un-transformed before being set as background.
The option in the frame appears for any UBGraphicsItem for which
`data(UBGraphicsItemData::ItemCanBeSetAsBackground)` is true.
This is (currently) only enabled for image items.
We can (again) check for updates and, if an update is available, send
the user to the site to download them.
The old format (a .json specifying a version number and download URL)
was kept. The address for this file is now specified in the settings.
Fixes an issue where locked items could be moved if they were selected
along with other items, and these items all moved by dragging the
selection frame.
This implementation prevents any movement of the selected items if at
least one of them is locked. It also changes the colour of the selection
frame, like a locked UBGraphicsDelegateFrame.
When drag-n-dropping a document to the trash, it would reappear in the
"untitled documents" folder on the next restart. (This was introduced by
bd3d8e95)
Added checks for the size of the interior, cut-out triangle to make sure
everything is drawn correctly at small sizes; buttons are now also
hidden if they overflow from the tool.
This removes a few instances of deleting a scene twice, or accessing
elements of a scene after they've been deleted.
Previously, the application would crash upon exiting if the scene was
empty but had been modified (e.g if an object was placed on the board
then deleted, then the application closed)
Previously, only transforms were saved -- not positions (which are set
if a group is moved by dragging it directly; if dragged by its frame,
its transform is updated instead).
Issue observed was that a group that had been moved would lose its new
position when the document was saved then loaded. (All other transforms
were kept, however).
Now, when duplicating a group before saving a document, position is
included in the group's transform.
This was observed in some cases on low-resolution screens, at least on
Linux and Windows.
The previously hardcoded value for the width of the text items' titlebar
(consisting of the buttons for formatting text) was replaced by a
method calculating its width (which varies based on screen resolution).
... to the nearest 2 decimal places. This fixes a bug where upon loading
a text item, it could be scaled by e.g 0.999999, which would eventually
round down the point size by 1pt. Making the text item shrink by 1pt
every time the document was opened.
Fixed issue that appeared with previous commit, where grouped strokes'
positions were sometimes saved and loaded incorrectly.
Strokes and their transforms should now be saved correctly whether they
are grouped or not
Solves issue where items (other than strokes) that had been grouped then
moved (and/or rotated) lost their new position after saving and loading
the document.
- Selecting multiple media items then grouping them didn't behave as it
should for other items => fixed by adding type tests
- A group containing several media items wasn't saved to SVG with those media
items as children, due to incorrect UUID copying in the mediaItems's
deepCopy() methods
The same font, in the same point size, can be displayed differently
depending on platform (this is a Qt limitation). This can lead to text
items being the wrong size when importing a document created on a
different computer.
As a workaround, when saving a text item to SVG, the size of 1pt in
pixels is calculated and saved. Upon loading, this value is calculated
again and, if it is different from the saved value, the text item is
scaled accordingly.
Thus, any document created from this version onward will have
correctly-scaled text boxes. If an old document (not containing a
pixel-per-point attribute for text items) is loaded, the scene is marked
as modified to make sure that all text items are then saved with the
pixels-per-point value (even if the document is not edited). This allows
old documents to be "fixed" by simply opening them once from a new
version of OpenBoard.
save text item font size in pixels, and scale it on load
fixed loading of text item pixel height
Save and load pixels-per-point rather than text pixel height
Upon loading a text item from SVG, make sure that it will be saved with a pixel-per-point value
This allows users to change the color of the background grid e.g if they
are using a projector or other low-contrast display.
The settings are in the `Board` category and are named `CrossColorDarkBackground`
and `CrossColorLightBackground`. They take strings representing the
color in any of the following formats:
- #RGB (Hexadecimal digits)
- #RRGGBB
- #AARRGGBB
- #RRRGGGBBB
- #RRRRGGGGBBBB
- Any SVG color keyword name (as defined by W3C)
This prevents a bug where a simplified stroke (containing only one
polygon) was incorrectly saved as a polyline, which meant the stroke was
lost when the document was loaded.
Up until now, the fill rule of a polygon was always saved as even-odd,
despite the fact that in most if not all cases, polygons are drawn with
winding fill within OpenBoard.
Saving is now fixed, but there is no way to know upon loading whether
the polygon was correctly saved or whether; so for now, we just set the
fill rule to Winding when loading a polygon.