Duplicates can arise if e.g. you have backup of your contacts mounted.
Or, imagine someone packages a Person file with their software as it
was common back in the BeOS days. If you have several software packages
from that dev, you'll see copies of that Person file from each package.
If a contact has the same name, we compare all email addresses. If they
differ, a new item is created. That way, Person files with more than
one email attribute ("META:email{n}" with n >= 2), as used by other apps
like Peeps!, get an item per address.
When checking for email addresses in AddPersonAddresses(), don't quit
looking through the attributes when encountering an empty one via "break".
Do "continue" with the next "META:email{n}" attribute, as it's possible
META:email2 is empty, but META:email3 has an address.
Change-Id: I644cfa2d8349b5022ffde37344c55a54577b12f8
Reviewed-on: https://review.haiku-os.org/c/haiku/+/9331
Tested-by: Commit checker robot <[email protected]>
Reviewed-by: waddlesplash <[email protected]>
Other contacts apps like Peeps! allow for more than one email
addresses, using the attributes META:email{n} with n >=2.
Only, not all contacts having those additional attributes have
them actually filled.
This results duplicate entries in e.g. the To-field pop-up with
no email address attached.
We now only add an item if its email address isn't empty for those
additional email attributes as well.
Change-Id: Icb1750fe8e2b10280bc01b3181b444f01096e021
Reviewed-on: https://review.haiku-os.org/c/haiku/+/9329
Tested-by: Commit checker robot <[email protected]>
Reviewed-by: waddlesplash <[email protected]>
Before, when you got multiple emails open, doing e.g. a "Close and
leave as New" (SHIFT + ALT + W) would correctly leave the active email
with status "New", but the other open Mail windows were closed as well
and got the status "Read"!
Now we only close the current Mail window, not the whole app and with
it all open email windows.
The currently somewhat hidden command "SHIFT + ALT + Q" now issues
a message to all open Mail windows to close and keep their mails' status,
i.e. the same as invoking SHIFT + ALT + W in all open email windows.
Change-Id: I0402a1e39ce58b53eca2c3bfe8f8becd5529c566
Reviewed-on: https://review.haiku-os.org/c/haiku/+/9305
Reviewed-by: waddlesplash <[email protected]>
Tested-by: Commit checker robot <[email protected]>
Move back and forth in the search history with CursorUp/Down.
Entering a search text will reset the current history index
(fCurrentHistoryIndex = -1), and you'll be back to the first
history item next time you CursorUp.
Change-Id: Id45a47756b4732ae6e22e5373c4db5249c8df198
Reviewed-on: https://review.haiku-os.org/c/haiku/+/9303
Reviewed-by: waddlesplash <[email protected]>
Tested-by: Commit checker robot <[email protected]>
Check if fMouseClipboard is be_clipboard, and do nothing in that case.
This could happen if SetMouseClipboard has never been called, for example when running as a replicant.
Also updated copyright year.
Change-Id: I2468d80404c429797bd8c906f3aa747ffc414fa8
Reviewed-on: https://review.haiku-os.org/c/haiku/+/9309
Tested-by: Commit checker robot <[email protected]>
Reviewed-by: Adrien Destugues <[email protected]>
The old BUrl constructor with just a string is now private. The new one
has a default value for the second parameter, but C++ doesn't exclude
the private constructor from the candidate functions search. So, the
default argument for the new constructor needs to be explicitly
specified now.
Change-Id: Idb1915649ea3d2c59e344801a9d4fe201f8040e9
Reviewed-on: https://review.haiku-os.org/c/haiku/+/9236
Tested-by: Commit checker robot <[email protected]>
Reviewed-by: nephele nephele <[email protected]>
Reviewed-by: Adrien Destugues <[email protected]>
In +9146, I added a 'Search all packages' helper message to the Haiku
Depot featured packages view using a TextDocumentView; seems I used the
TextDocumentRef incorrectly, causing a crash on exit; this fixes that.
Change-Id: Idc08fb58dee13b6e85663097876a80a190941f57
Reviewed-on: https://review.haiku-os.org/c/haiku/+/9242
Reviewed-by: Andrew Lindesay <[email protected]>
I've noticed that reviewers often search for something in Haiku
Depot on launch, and assume the package doesn't exist when they don't find
it under featured/don't check the other tab. This change adds a message
to the featured packages view if no results are found, and gives them a
link to click to switch tabs. It also adds a loading message to the
featured packages view.
Also, modify TextSpan::ClickMessage to remove empty message check
Change-Id: I045a2a91c945e28e6512232d203da680a70d4d36
Reviewed-on: https://review.haiku-os.org/c/haiku/+/9146
Reviewed-by: humdinger humdinger <[email protected]>
Tested-by: Commit checker robot <[email protected]>
Reviewed-by: Andrew Lindesay <[email protected]>
Add 'Select area' button to Screenshot that when clicked, allows the
use of crosshairs to select a region to screenshot; functionally similar
to and inspired by Snipping Tool/Win+Shift+S on Windows and Cmd+Ctrl+4
on Mac when selecting using the primary mouse button. When using the
secondary mouse button or clicking while shift is held, the selected
area can be resized and moved, and confirmed by pressing enter or double
clicking.
Also, add a shortcut such that if the super key is held when prtscrn is
pressed, Screenshot will be launched in area select mode.
Also, add radio buttons to select between whole screen, active window,
and selected area, and disable active window, window border, and
selected area options if inapplicable.
See #18568 and #13456
Change-Id: Ida0f441e65154c9cd7788de32a606ab4ca8dc31e
Reviewed-on: https://review.haiku-os.org/c/haiku/+/9069
Reviewed-by: waddlesplash <[email protected]>
"empty" cursor when unfocused, "filled" when focused, similar to what other terminals do in other platforms
Change-Id: I7ccafaacab8cfb63d8e556ca3ee76335ebb0cf0e
Reviewed-on: https://review.haiku-os.org/c/haiku/+/9165
Tested-by: Commit checker robot <[email protected]>
Reviewed-by: nephele nephele <[email protected]>
* Loads previous session if lauched by link and setting to use previous
session is enabled
* Fixes#18722
* Adds window workspaces to archive message
* Adds opening session windows to same workspace it was previously
(could be made optional)
Change-Id: I8c56516fa8770011346989a59e8ecd22440eef36
Reviewed-on: https://review.haiku-os.org/c/haiku/+/8859
Reviewed-by: nephele nephele <[email protected]>
Tested-by: Commit checker robot <[email protected]>
Reviewed-by: Adrien Destugues <[email protected]>
Add a B_EXECUTE_PROPERTY to execute a given command.
Also set fAttached to false in _DetachShell() for symmetry.
Done by Andrea Anzani plus some style / refactoring by myself
Change-Id: Ifa26b60b1c1d3598a863adc4fb701155f9edf588
Reviewed-on: https://review.haiku-os.org/c/haiku/+/9154
Tested-by: Commit checker robot <[email protected]>
Reviewed-by: waddlesplash <[email protected]>
This commit is a large "big bang" commit of a composite of changes
that would have been challenging to put in place over a PR train.
The changes yield a significant performance improvement in general
but also lay the foundation for being able to make further smaller
gains over time. The changes should also improve stability of the
application. This commit is a high-risk change and would ideally
be coupled with testing.
The key things which have changed in this commit;
- Code reformatting has been applied at the same time.
- Data models are now largely immutable with builder-style
constructors.
- The code base was previously handling locking of data obtained
from the central model manually in many places which was
prone to mistakes. Now accessing data is, from the clients'
perspective, largely lock-free.
- The removal of locks now removes lock-contention in various
areas of the application including startup which helps with
improving performance.
- Repositories of data such as categories and languages are
now also immutable.
- To simplify data immutability, packages' data is stored in the
central model separately from depots' data.
- Large package data mutations are now done in chunks of packages
rather than package-by-package which means reduced messaging
within the application; especially around the GUI.
- The resolution of data / mutations' notifications is larger
so that changes are not being considered on each property of
a package which simplifies the processing logic in a number of
places.
- Package change-notification is driven out of the central model
rather than from each and every package. There is scope for
further simplification in this space.
- Where logic already knows what data is changed, it is able to
control the change-notification process rather than cause a
large number of object-comparisons to be required.
- The data-loaders from the local package manager and from HDS
have been re-written to work with immutable models.
- The icon repositories have been re-written to make a one-time
notification that icons have changed rather than notify for
every package.
- Data updates reflection in the UI has been changed to work in
chunks of packages rather than package by package which
reduces the quantity of UI window-invalidation / redraws and
also reduces the quantity of re-calculation of scrollbars and
other UI elements.
- Some UI elements have their metrics calculated lazily rather
than up-front which yields a significant performance gain.
Change-Id: Iefaf4a137411e379e4c461ebc8c783fd1646bcf4
Reviewed-on: https://review.haiku-os.org/c/haiku/+/9093
Tested-by: Commit checker robot <[email protected]>
Reviewed-by: Andrew Lindesay <[email protected]>
* Make PositionToolTip update even when not attached to a window.
* Always use the "hover" message to update the tooltip,
never SetPosition.
* Use BControl::Invoke so that hover messages are sent instantly.
* Position the tooltip above the slider always.
Combined with the fixes to the Interface Kit, this provides a much
nicer experience for slider time tooltips.
Change-Id: Ib7f884ca91c253ed7e6639946fd2378166137d80
Reviewed-on: https://review.haiku-os.org/c/haiku/+/9122
Haiku-Format: Haiku-format Bot <[email protected]>
Reviewed-by: waddlesplash <[email protected]>
* Restore logic for excluding app_server side of bitmaps
(though this may not work for server-cloned areas, only
server-allocated ones.)
* Leave TODO in place for media buffers.
* Add all kernel-writable areas of the system (kernel) team
to writable memory, but exclude the block_cache.
Fixes display of kernel memory information in ProcessController's
memory usage menu.
The menu item starts with: "System resources & caches..." but then it
wrote fCachedMemory before fCommittedMemory.
Swapping them seems more in line with how the rest of the "Memory usage"
menu is presented as well.
Change-Id: I83345f9ae35b405ed854e7a1992b537d31e27d02
Reviewed-on: https://review.haiku-os.org/c/haiku/+/9083
Tested-by: Commit checker robot <[email protected]>
Reviewed-by: humdinger humdinger <[email protected]>
Haiku-Format: Haiku-format Bot <[email protected]>
Reviewed-by: waddlesplash <[email protected]>
Instead of unconditionally calling _DeriveLabel() and Invalidate()
every time (both expensive operations), use a bool to track whether
we've already invalidated, and derive the label in Draw() if it
was set.
Significantly decreases the invalidations done on full-list rebuilds.
* package->Name() is always lowercase, don't bother using lowercase
operations on it.
* Use IFindFirst rather than transforming the string; this uses
strcasestr internally which operates per-character.
Loosely based on a patch by oco in #19421.
Goodbye sweet prince!
This hasen't worked for quite some time, Webkit uses the curl backend
currently which has no support for gopher.
Our netkit backend also never "truely" supported gopher, instead
translating pages to html with some prebuild styles, those also don't
use the CSS system colors, for lack of existence back then.
Change-Id: I5d5098db9512bb22cde8c17fa1553637b30ae65b
Reviewed-on: https://review.haiku-os.org/c/haiku/+/8938
Reviewed-by: waddlesplash <[email protected]>
Tested-by: Commit checker robot <[email protected]>
Since BObjectList is a template class, this only breaks ABI where
BObjectList was exposed in public methods, and even then it's only
a name mangling break and we should be able to add compatibility
methods if necessary.
(The old "bool owning" member variable is left intact for ABI
compatibility, for the moment, though it's otherwise unused now.)
Tracker's PoseList is the only remaining type that has a "bool owning"
switch in the constructor rather than template parameters.
This should significantly improve the output of static code analysis
tools that previously detected list operations as causing use-after-frees
and double-frees, as well as make code maintenance easier by making it
easier to determine what list owns (or does not own) an object.
It should also be a minor performance optimization, since the branches
for calls to delete/free should now be optimized out altogether.
Still boots to desktop and Tracker, Deskbar, Debugger all tested
and verified as working.
Change-Id: If2a24a6f0d22e7a506ef554fcfdd328907279ed4
Reviewed-on: https://review.haiku-os.org/c/haiku/+/8915
Reviewed-by: waddlesplash <[email protected]>
... fixing a TODO now that #7078 is fixed.
There are 2 remove playlist actions: 'Remove' and 'Move file to Trash'
* 'Remove' playlist shortcut: Cmd+Delete => Delete
(This also works from the main window to remove the file you're
currently focused on/listening to from the playlist.)
* 'Remove file from playlist' shortcut has been removed. We have
decided not to Trash files from MediaPlayer's playlist anymore,
you'll have to trash the files from a regular Tracker window.
The 'Remove' shortcut gets plain old delete as the author intended.
Change-Id: I3b1e19405e029d9c5f398cfd7a8dbab49fb21fc7
Reviewed-on: https://review.haiku-os.org/c/haiku/+/7292
Tested-by: Commit checker robot <[email protected]>
Haiku-Format: Haiku-format Bot <[email protected]>
Reviewed-by: nephele nephele <[email protected]>
Reviewed-by: John Scipione <[email protected]>
"Show in Tracker" opens and selects a bookmark in Tracker. Useful
if "Rename" isn't good enough, when you need to edit the URL, Title,
or Keywords attributes.
Fixes a crash when trying to "Rename" a folder. Folders were added
without a message before, so trying to access them to FindRef() lead
to a crash.
Folders are now added with a message kFolderMsg which is also used
to identify them as folders (instead of checking if their message
is NULL as before).
It's not uncommon to have symlinks in the Bookmark bar. We now don't
traverse those to their origin when renaming or deleting, so only
the files in the "Bookmark bar" folder are affected, not the original
files.
Only when adding an item, we traverse a symlink for its icon.
Change-Id: I3f420995cf5c12930a1cf3a00bb4257d19c4d5a6
Reviewed-on: https://review.haiku-os.org/c/haiku/+/8772
Reviewed-by: Adrien Destugues <[email protected]>
Tested-by: Commit checker robot <[email protected]>
Move ColorListView and ColorItem to shared in BPrivate namespace.
ColorItem typedef to BPrivate::BColorItem for apps that are already
using this class.
Gravity screensaver:
* ColorItem => BColorItem.
* Use make_color() to set colors.
Make color drop message name agnostic, check for B_RGB_COLOR_TYPE.
Add be:sender and source to drag message.
Add _SetTermColors() convenience method to set colors on all tabs.
Change-Id: I5a9f55d3ab423ccaa341997cf444603373024553
Reviewed-on: https://review.haiku-os.org/c/haiku/+/8846
Reviewed-by: John Scipione <[email protected]>
Also the bullet point color
Allow Usage Conditions window to be resized
Tint disabled color instead of hardcoding
Copyright 2024 Haiku, Inc.
Fixes the other half of #19067
Change-Id: Ibf74d9dd673807b0f107e56cefb5b30916baed96
Reviewed-on: https://review.haiku-os.org/c/haiku/+/8262
Reviewed-by: Adrien Destugues <[email protected]>
Haiku-Format: Haiku-format Bot <[email protected]>
Tested-by: Commit checker robot <[email protected]>
* Add the ISC license; it's similar to the MIT license but isn't
worded identically, and it's referenced from netresolv.
* Drop the "Berkeley" license, it was used for an older version
of the NetBSD credits, and is just the 3-clause BSD anyway, it appears.