If there are no settings previously stored for the MainWindow/openTabs, the
default empty string was converted to a list of one empty string and
consequently all tabs were cleared and none added.
This fixes all possible cases where the list of open tabs is empty. It
means: do not make changes, as originally designed (since the setting for
all tabs closed doesn't make sense).
See issue #1692 (and #1675 for the enhancement).
This shortcut was set for the following actions, making it ambiguous:
"View > DB Toolbar" and "Open tab" in "Execute SQL". Additionally it was
used by QScintilla for transposing lines.
Shortcut for "View > DB Toolbar" has been removed, since it's not
considered a frequently used action and there are other toolbars without
shortcut. The shortcut for QScintilla has been changed to "Ctrl+Shift+Up".
The now working shortcut is added to the "Open tab" action's tool-tip for
documentation purposes.
See issue #1647
Using QShortcut this shortcuts are working in any context. With the
previous approach there were problems in QScintilla widgets, in the Browse
table combo-box and probably others.
See issue #788
Ctrl+O for opening a database file did no longer work. It raised this
warning:
QAction::eventFilter: Ambiguous shortcut overload: Ctrl+O
The shortcut was repeated in the UI.
This bug was introduced by e11b32ed54
It was laterally reported in #459
- New action (Alt+0) in View menu for resetting window layout (main tabs,
toolbars and docks).
- Shortcuts for tabs use positional meaning: after moving the tabs, the
number always refers to the position of the tab, and not the identity.
- Avoid using statusTip for restoring the original tab label and use
accesibleName, which is believed to be either neutral, when set, or
beneficial.
- Assure the tab is open when some function switches to it: browse table
and SQLite checks.
- Avoid flickering while clearing and adding tabs.
See issue #1675
The ordered set of open tabs is saved in the project file using a new
element main_tabs with attributes open (ordered list of open tabs like the
"MainWindow/openTabs" setting) and current (the current index inside that
set).
When the project load code finds the old element (current_tab) it falls
back to restoring all the main tabs and then setting that tab index as
current. In this way, old project files are restored as they were saved,
even when the user has closed or moved some tabs.
See issue #1675.
Main tabs are made closable, so they can be closed by the user. New entries
are added to the View menu for toggling their open/closed state.
Spartan users can closed all tabs but their preferred, and then the tab bar
is hidden saving some space.
The set of open tabs and their order is automatically saved in the settings
on application exit and restored on application start.
Tab labels are stored in the statusTip attribute in order to restore them,
since those labels are not stored anywhere else.
See issues #1675 and #459
Add the destination platform from the compilation process and the
platform we are running on to the About dialog and the Bug Report
template text.
See issue #1660.
The movable attribute for the main tabs is enabled and the code is adapted
to use widget references instead of indices.
This allows user to move tabs and set a preferred order, but the order is
still not saved.
See issue #1675
The width of the UI elements is forced by the text in buttons. This is a problem in some translations,
where the text are longer than the original. This PR address this tweaking some aspects:
* change UI size policy
* make RU translation for some buttons shorter
* move Set as NULL to bottom in EditDialog
For queries built from a table and filters, use a specialised count query
that only takes into account the where part of the statement. This will
speed-up the Browse Data tab for big tables.
See issue #1666
selectAll is overridden so all data is actually selected. Warn and ask user
as this may take some time and consume lots of memory (when the table is
big).
See issue #1373
This adds three new settings to the cipher dialog: KDF iterations, HMAC
algorithm, and KDF algorithm. To simplify things we also add two presets
for all the encryption settings: SQLCipher3 defaults and SQLCipher4
defaults. The preselected default is chosen depending on the SQLCipher
version which we use.
This should work with any combination of SQLCipher3 and SQLCipher4 and
any database created by either. It should also work with DotEnv files as
expected. Again, the defaults which are used for missing values in the
DotEnv files are chosen depending on the SQLCipher version we use.
We don't go a git pull of the sqlitebrowser repo for the SQLCipher
build, else the SQLite and SQLCipher builds could differ in the
commits they'd done with.