... to better match BeOS.
Up until this point we have drawn buttons with a perfectly smooth
linear gradient that was nicely provided by Stippi. However, BeOS
used a more stylized gradient instead. This commit seeks to
reproduce this stylized gradient on BeDecorator adjusting itself
for larger button sizes.
Consolidate and correct colors. button, light1, light2, and
shadow1 colors are the same on close and zoom buttons. Zoom has
a lighter shadow2 than close button. Try to get as close to the
colors used on BeOS as possible. Added comments indicating the
colors used on BeOS in active and inactive states for future
reference.
light1 color stays grayscale if grayscale, otherwise skews
non-blue. This replicates how BeOS worked.
Fill with window tab color before drawing: lose B_TRANSPARENT.
Undraw the bottom left and top right corners of bitmaps in the
unpressed state. BeOS did not do this (usually), but it should
have as it closes the ring.
Define a bunch of bitmaps and use them as stencils to write into
ServerBitmaps 1 or 2 colors at a time.
Update close and zoom button down states. When the button is
pressed rotate bitmap by 180° by reading the source bitmap in
forwards while writing destination bitmap out backwards. This
allows the dark part to be draw in the top left while the light
parts are drawn in the bottom right. (opposite of unpressed)
Don't draw the parts of the big zoom square that are obscured by
the small square.
private _CreateTemporaryBitmap() method stolen from AlphaMask.cpp
to create temporary ServerBitmaps and zero them out. Store the
pointers on the BeDecorator class and then release them in the
destructor method when the class object is deleted.
Initialize the ServerBitmaps in the ctor and set fCStatus. On
failure set to B_NO_MEMORY and fallback to drawing a linear
gradiant. This will most likely never happen but just in case
it does we want to avoid crashing.
A few 80-line char fixes
Change-Id: Ic81837aa387f05b04dda3e1ff76fdf103c93f8e8
* Moves list item selection logic back to MouseDown from MouseUp to improve
application compatibility and responsiveness
* Fixes multi-select drag and drop by not modifying the existing
selection if a MouseDown event is on a selected item.
Fixes#9190, #14264, #14289
Change-Id: I58050b403dac985f98e03faa72de1ebc5d24f95b
This reverts commit 11dee0444f.
This reverts commit 1641a0516d.
This reverts commit 484f64f315.
These changes break various edge-cases in BTextInput (e.g. typing off the end
of a long string, using the arrow keys to navigate while out-of-bounds),
and nobody has found any fixes for them in the nearly-a-year since they've
been instanted, so they are now being reverted.
Reopens#12608, #13796.
Previously, we wrapped FreeBSD's accessors using our own in*/out* assembly
macros. Now, we skip that and just use FreeBSD's macros and assembly
directly. In the process, I've added some proper abstraction,
paving the way for the use of the FreeBSD layer on non-x86 platforms
(which will be sooner rather than later, I hope!).
This introduces some new functions required by some of the drivers
I was attempting to merge (wavelanwifi...), but as it also now
mirrors FreeBSD's bus access mechanisms exactly, it's possible
that some nuances lost before are now preserved. So this has
the potentiality to help with some of the stranger timeouts/failures
on devices that work just fine on FreeBSD.
Tested on VMware (pcnet), VirtualBox (pcnet, ipro1000), and
a T61 (iprowifi4965.)
As Diver notes in #13006:
> I saw a few youtube videos with Haiku review where people were confused
> with package copyright year in HaikuDepot. They though this was when the
> package was last updated. HaikuDepot also only shows the very first line of
> copyright year, so if it's multiline (which is quite often) they see very
> old timestamps.
We should eventually display some sort of modified time as well as all
of the copyright lines, but at the very least, we can display the last line
instead of the first line, which usually is much newer than the first.
BLayoutBuilder is designed for single-shot use; i.e., a "one-liner"
of .AddLayout(), .Add(), and .End()s and no variable storage.
This is basically the only coherent way to use the class, as otherwise
it becomes unclear what state it's even in, and in the case of functions
like these with multiple branches for different options, that is doubly true.
It seems that in certain cases, the final SetInsets() after the End()
was winding up one before the "beginning" of the builder and thus attempting
to set the insets of NULL. Rather than analyze the function to determine
under what control-flow this occured (since it only happened for some
packages, and not others), I've opted here for the more systemic solution
to remove usage of BLayoutBuilder entirely, and just create straight BLayouts.
Fixes#14214.
The comment above ieee80211_ageq_cleanup specifically notes that the queue
is assumed to be empty, and in order to make it so, ieee80211_ageq_drain
must be used.
Possibly helps with #3180, as this might be a source of mbuf leakage.
Check values before setting them in SetFromScrollBarInfo
Pin arrow and knob settings to the top so they are aligned
Adjust vertical spacing on single/double to match knob style height
Only draw arrows on single/double FakeScrollBar
Change-Id: I6be89f86181a87808ba5201caf88a33c4414d4c8
Fixes#9137
Move scroll bar drawing into HaikuControlLook
Added B_SCROLLABLE flag to BControlLook
Update FakeScrollBar in Appearance to also draw using HaikuControlLook.
Focus works on scroll bars again, used by FakeScrollBar... and probably
nowhere else.
Added private _ScrollingEnabled() convenience method to BScrollBar and
use it in a few places making.
Create ScrollBarPrivate.h header to share a couple of scroll bar related
enums with HaikuControlLook that come from BeOS Scroll Bar prefs.
Stuff arrow_direction enum into BScrollBar::Private as it has been
succeeded by a similar enum already present in BControlLook and is only
around now for BScrollBar::Private::DrawScrollBarButton.
Change-Id: Idc31ee41de091ba45ded2f0315a004af00143803
* Prevents crash mentioned in Trac, but also enables keyboard navigation
to 'recent items' menus such as "Open files..." in MediaPlayer and DiskProbe
* Check selected menu and submenu exist in menu tracking thread before accessing
* Update BMenu::AttachedToWindow to pass in keydown param to _AddDynamicItems
Fixes#9251
Change-Id: I3031b8e9c1b9dd4ef1187c5a6b8ab7925e3496d2
Not really based on KapiX's patch (I looked at his Jamfile changes, but
did the rest of it myself.)
Besides the usual GCC2 (C89) fixes, this commit also changes FreeBSD's code
in removing two of the _reg_map_macro headers and adding only the relevant
portions to a post-preprocessed version of the non _macro files. This spares
us importing 7 MB (!) of headers.
KapiX confirmed his patch as working; hopefully I didn't break anything
in this import.
Before hrev46809, the "thread->priority = priority" line was below this
check, and so all was well. But that commit moved the line to its present
location, which means ever since then, the following code which updates
CPU entries, scheduler listeners, etc. has never been run.
On my VMware instance (which is probably pretty affected by the host system
and thus not the greatest performance test), "time jam -j2 HaikuDepot" decreased
from 46.0s real to 43.3s real, 52.3s user to 48.1s user, 12.1s sys to 12.2s sys.
So this seems to make some sort of impact.
Spotted by Fishpond in #10454 and confirmed by korli, but somehow neither of
them followed up on that in the 4.5 years since...
Untested, but the changes are relatively minimal (mostly adapations
to the new FreeBSD KPIs), and ttcoder recently opened a ticket (#14258)
about it, so he can test.