Sorry this commit is so big, but I couldn't figure out how to do this
incrementally without breaking things.
I wasn't able to just merge Aldeck's branch, as it was a partial refactor
of Tracker and didn't just rewrite the UI creation code to use layouts,
and the changes for PM (e.g. addon loading, virtual directories) made it
very hard to merge (it doesn't even compile after an automerge) so rather
than spending time on that, I decided it'd be better to recreate his work.
Miscellaneous notes:
- This partially cleans up BPoseView & subclasses and BContainerWindow &
subclasses -- none of the subclasses and child views abuse the parent's
state, child views, or layout now.
- BFilePanel and BDeskWindow are not on layouts, because:
* BFilePanel docs in the Be Book instructed developers that wanted to
modify BFilePanel's layout to just use FindView() and then move the
views around. Obviously making it use layouts will break all BeOS
apps that do this, and there are a lot of them (Pe, WonderBrush are
just two examples.) I've added a note to the TODO list for R2 to create
a layout-compatible API for this.
* Some replicants (Workspaces, for example) rely on manipulating
BDeskWindow's drawing state. This is incompatible with layouts, as
at least in the case of Workspaces, it breaks a layouted version
of BDeskWindow entirely.
- I noticed a lot of #ifdef BEOS_VERSION ... gunk in the code. Tracker
probably didn't build on BeOS just before this commit, and now it
won't for sure, so I intend to go through and clean that out in the
near future.
This commit also fixes:
- enhancement #4996 (make Tracker's navigator use vector icons)
- bug #3039 (resizing OpenWithWindow flashes the blue border)
- bug #3889 (OpenWithWindow redraw errors)
- a regression that was a side effect of "dynamic_cast<BDeskWindow*>(this)"
always returning NULL when run in the constructor. I just added a "bool
isDeskWindow" to BContainerWindow's constructor that is only set to true
by BDeskWindow.
- a copy&paste error in VirtualDirectoryPoseView that was passing "uint32
resizeMode" as "uint32 viewMode".
Thanks to Alexandre for his original branch (it was a very useful
reference), Axel (for some miscellaneous advice & encouragement),
Adrien & Humdinger (for user interface review), and Diver (for user
interface review & testing).
Apparently not linking to libstdc++ correctly is causing an error.
Also, use new(std::nothrow) when creating the input server filter
to avoid an exception from being thrown by the constructor in the
case of low memory.
... for switching workspaces (removed from BWindow) and
minimize all (aka Show Desktop).
This moves the workspace switch behavior out of the BWindow class
and places it into it's own input server filter that does the same
thing. The difference is that you may now uninstall the workspace
switching filter to disable the behavior. These shortcuts were not
included in the BeOS R5 version of BWindow so represent additional
behavior added to Haiku.
minimize_all (aka Show Desktop) is a new input server filter that
allows you to minimize all windows by pressing cmd+ctrl+D. If
you do not like this behavior you may uninstall the minimize_all
input server filter.
* As it doesn't rely on BNetworkAddress anymore,
BNetworkInterfaceAddress must now take care of initializing the
addresses itself.
* Also add some input sanitization and and asserts to ease detecting
such problems.
* Fixes#11778.
* If changing the settings and manually reverting to the previous
values, the Revert button would stay enabled.
* Fixes#11783.
Signed-off-by: Adrien Destugues <pulkomandy@gmail.com>
* Previously this would work only in "current workspace" mode.
* Also avoid calling count_workspaces in a loop since its result is not
cached and it needs to ask app_server each time.
* Fixes#4231.
Signed-off-by: Adrien Destugues <pulkomandy@gmail.com>
This is a BReference that allows only const access to the referenced
object. This was not easily possible with the existing BReference for
two reasons:
* BReference<const Type> would not work, as BReference needs to change
the reference count of the referenced object. Adding mutable and casting
where appropriate wouldwork but,
* It is now also possible to assign a BReference to a BConstReference
(to the same type, of course). The reverse is not allowed, making it
more difficult to "const cast" the referenced object (it's still
possible to "get" the object pointer and cast that).
BConstReference can be used to provide shared read-only access to an
object, for example this can be used to cache non-copiable or
expansive to create objects.
No, not updating packages via HaikuDepot, but a light-weight synchronization
between the system package manager list and the HaikuDepot model. After
installing or removing a package, HaikuDepot performed a very costly update
of all information by basically throwing everything away and reloading it.
Implements #11786.
* Doxygen 1.7.6.1 is not the current version, but it's the last in the
1.7 line which is what we're using for the Haiku Book currently.
* Git 2.2 has some new features (terminal coloring) and behavioral changes
(most appeared as warning messages in Git 1.8). Most major Linux
distros successfully switched, and HaikuPorter doesn't seem to rely
on the old behavior.
* PHP is a new add, I've successfully enabled some of the more commonly
used features in our port (GD, ZLIB, CURL, i18n) so it's more useful now.
This package does not contain any webserver integration files, but it does
contain both the CLI and CGI interfaces as well as the builtin webserver.
* ZSH now provides cmd:sh, so it's possible to switch your default shell to
it. Mksh already provided cmd:sh so I didn't need to modify it. There
are still some rough patches that occur when uninstalling Bash (e.g.
Terminal app has an annoying alert that it can't find Bash so it's using
/bin/sh instead) but it appears to work.
* Go was ported in GSOC 2014 and has had a recipe since then, but nobody
bothered to upload it.
* RCS had an incorrect primary provide, fixed it (#9703).
... in PackageInfoView::SetPackage() and Clear(). The sub-views reference
stuff from the previous PackageInfo instance. If we release the reference
before adopting the new package, the sub-views may still access stuff from
the previous package. For example the PackageActionView tries to avoid
rebuilding the button list and compares previous package actions to the
new actions. Particularily after the package list has been rebuild, we have
only new PackageInfo instances and the PackageInfoView may hold on to a
PackageInfo that is not still referenced anywhere else. Would be a good
explanation for #11785.
BitmapDrawingEngine:
- Check if fBitmap is NULL before releasing its reference. Since this is
the case when a BitmapDrawingEngine is instantiated, this would lead to
an app_server crash upon any attempt to make use of one.
* Use BStringViews instead of BTextView - it's more flexible (truncation,
and tool tips), and allows for fine grained updates.
* The file name and location views are now showing tool tips with their
full contents.
* Also, its look is now less exotic, if boring.
* Added new truncation mode B_NO_TRUNCATION.
* The Truncation()/SetTruncation() methods itself are Dano-compatible,
however, there was no B_NO_TRUNCATION.
LinearSpec is a BReferenceable, so it is not correct to allocate it as a
member of another object. Wrap it in a BReference to avoid the problem.
Fixes#11089.
* BNetworkInterfaceAddress is moved to libnetwork. It is modified to not
use BNetworkAddress (which is in libbnetapi) and instead use sockaddr
and sockaddr_storage directly. All callers are adjusted to this.
* Some support code is shared between BNetworkInterface and
BNetworkInterfaceAddress, move it to libnetwork but in the BPrivate
namespace.
* When the keys were large enough, a large key entering the node could
overflow the available data in the target node. This caused tree and
memory corruption.
* This fixes bug #6034.