History log of /haiku/src/apps/deskbar/StatusView.cpp
Revision Date Author Comments
# ac121994 13-Oct-2023 John Scipione <jscipione@gmail.com>

Deskbar: Set sub-menus to menu font

Top level "menu" still uses be_plain_font, submenus use menu font.
Window submenus use menu font, but in super-expando mode they use
the plain font since they are on top level.

Change-Id: I704e9baa1ec46d1cbf7b9401ba4e49b5e2dff27c
Reviewed-on: https://review.haiku-os.org/c/haiku/+/7041
Reviewed-by: waddlesplash <waddlesplash@gmail.com>
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>


# 9da3977c 05-May-2023 John Scipione <jscipione@gmail.com>

Deskbar: Rename IconSize() to TeamIconSize()

Change-Id: Id536bacd60334cd167051a785e7fff819359aacf
Reviewed-on: https://review.haiku-os.org/c/haiku/+/6412
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>
Reviewed-by: John Scipione <jscipione@gmail.com>
Reviewed-by: Adrien Destugues <pulkomandy@pulkomandy.tk>


# 605761f4 01-Sep-2022 John Scipione <jscipione@gmail.com>

Deskbar: Calculate clock margin based on font size

Based off of tray padding instead of hard-coding 12. Calculate tray
padding once in AttachedToWindow() and use that value everywhere.
Create some class float member variables to keep track of these values.

Fixes #17923

Change-Id: I3e767fdc8d2775e5f0dfff3275aeb0b686a8ea76
Reviewed-on: https://review.haiku-os.org/c/haiku/+/5610
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>
Reviewed-by: waddlesplash <waddlesplash@gmail.com>


# fac73deb 29-Aug-2022 Augustin Cavalier <waddlesplash@gmail.com>

Deskbar: Compute basic metrics earlier, in TBarApp::InitSettings().

This way we know the minimum and maximum window width earlier
and consumers of them do not come up with "0" incorrectly.

Fixes #17890.


# 9f4bb0f5 26-Aug-2022 Augustin Cavalier <waddlesplash@gmail.com>

Deskbar: Compute more metrics instead of hardcoding them.


# 1be85605 25-Aug-2022 Augustin Cavalier <waddlesplash@gmail.com>

Add casts to appease GCC2 following recent changes.


# 1e0308a8 25-Aug-2022 Augustin Cavalier <waddlesplash@gmail.com>

Deskbar: Use BControlLook::ComposeIconSize() and other metrics routines.

This gets Deskbar looking somewhat more like its usual self in HiDPI
environments. There are still some hardcoded sizes which need to be
refactored, however.


# 216bcf7a 21-Aug-2021 John Scipione <jscipione@gmail.com>

Deskbar: add in-source Deskbar regions diagram

Change-Id: Iec7649f545cf818ecd87e8434774266697524c5d
Reviewed-on: https://review.haiku-os.org/c/haiku/+/5521
Tested-by: Commit checker robot <no-reply+buildbot@haiku-os.org>
Reviewed-by: Fredrik Holmqvist <fredrik.holmqvist@gmail.com>


# f9b3a3b1 12-Aug-2020 John Scipione <jscipione@gmail.com>

Deskbar: Restore old mini-mode

... with the replicant tray below the menu bar.

Deskbar now has four modes:
1. vertical mini-mode (old mini-mode)
2. horizontal mini-mode (new mini-mode, was vertical)
3. vertical expando-mode (default)
4. horizonal expando-mode

Horizontal mini-mode gets the corner, then it switches to vertical
mini-mode above or below that, then to vertical expando-mode after
that. Horizontal expando mode is in center-screen top and bottom.

Clock vertical centering simplification.

Change-Id: I216008c20feb28f793693046792bbcfdf1e703e3
Reviewed-on: https://review.haiku-os.org/c/haiku/+/3146
Reviewed-by: Adrien Destugues <pulkomandy@gmail.com>


# 0d2645e4 19-Nov-2019 John Scipione <jscipione@gmail.com>

Deskbar: New single line mini-mode

Mini-mode is when Deskbar is in the 4 corners with the application
menu tucked away into the leaf menu bar. This commit changes mini-
mode from putting the clock and replicants below the leaf menu to
attaching them to the side forming a single line.

The main advantage of this is that if Deskbar is in the top right
corner you can maximize a window without losing any access to
Deskbar or any screen real-estate. The other three corners lose screen
real-estate similar to horizontal mode.

Replace team icon with HVIF version kindly donated by meanwhile.
Scale icon size according to font size. Grow the vector rendered icon
size by 1px to match bitmap size. Add Team_Registrar icon to
data/artwork/icons. Tweak Team_Registrar icon to match the area of the
bitmap taken up by the bitmap icon so they will render at the same size.
The bitmap can be now NULL if an invalid icon is passed, handle this
case with an fInitStatus member in BarMenuTitle.

Switch order of leaf and team menus on the left side so that the
team menu is always on the screen edge. The team menu is more in
need of quick corner access than the leaf menu in this mode.

Adjust leaf menu position so that it continues to be cut-off while
allowing the team menu icon to display normally. Center vertically in
horizontal mode but it's still cut-off at 16x16. In vertical mode the
leaf continues to be cut-off at all font sizes. Constrain leaf bitmap
to its menu item frame as it can bleed out into the adjacent team menu
item at larger font sizes.

Grow team menu items to fit the widest label up to the max vertical
expando window width (currently 2x min) before truncating.
LegacyPackageInstaller now fits in the team menu. More on
LegacyPackageInstaller in horizontal mode below.

Update SetSizeLimits for mini-mode - no upper limit on height or width.

Switch to mini-mode using 1/4 screen left and right of screen instead
of using 1/6. Mini mode is now wider and this change makes switching
between mini mode and horizontal mode more reliable.
* Rename frame to screenFrame here for clarity.

Set menu bar height to window tab height in vertical mode. This is
so that when you maximize a window the tab size will match. The menu
bar height is also a few pixels taller (25px vs 21px) than it was in
vertical expando mode at the default 12px font size. The change was
made to match the tab height. 21px was the height of a window tab
on BeOS R5's default decorator.

Adjust the width of the team menu for larger icon sizes. If app
names are hidden limit to half of min width so the menu doesn't
appear too short. SetMaxContentSize to width, this fixes a bug where
the menu item wasn't quite the right size for the menu.

No longer truncate time in vertical mini mode because the time can now
expand itself horizontally without limit (within reason.)

Center replicants vertically in mini-mode based on tab height and max
replicant height. Simplify mini-mode menu width and position calculation.
Fix a bar menu bar placement bug when Deskbar starts hidden in mini-mode.

Fix numerous layout issues. Put replicant tray where it should be in all
modes and then start adjusting things. The Replicant tray is now where
it should be in all modes, any fiddling with replicant icon locations
now can be relegated solely to LocationForReplicant().

Implements bug #5876 step 1.

*** Other related Deskbar improvements also made in this commit ***

Implemented underflow in horizontal mode ExpandoMenuBar to make items
wider when you close a team to take up more of available space. Max item
width is currently set to 1.25x min width so that LegacyPackageInstaller
fits in horizontal mode as well. In team menu it make sense to calculate
the widest label but in horizontal mode it would not be very nice if
ARogueAppWithAVeryVeryLongAndAnnoyingName were to grow all of your team
menu items. 1.25x is a fair compromise that gets us some extra width but
not too much. ExpandoMenuBar will truncate items to minimum width to buy
some space before it turns on the scroll arrows. Eliminate
kMinMenuItemWidth, create convinience methods to calculate limits.

Add BarView pointer to TimeView. Ditch fVertical and SetOrientation
in TTimeView and get the information from BarView instead. This way
we don't have to keep the state in sync. Also pass BarView pointer to
TTeamMenu constructor and use it instead of getting the pointer in a
roundabout way from be_app.

Eliminate kMiniHeight constant, the mini-mode height is now based
on the height of a window tab which changes with be_bold_font size.
Limit maximum height of replicants by be_bold_font size as well.
Also limit team menu and leaf menu icon heights by be_bold_font size.

Eliminate TExpandoMenuBar::fVertical, use fBarView instead. Switch the
order of layout and barView in ctor so that barView can be optional.
Change the ctor vertical param to layout and use the passed-in menu_layout
to pass to BMenuBar only. Once TExpandoMenuBar has been constructed, use
fBarView from then on. In Deskbar the menu_layout can change via
BMenuPrivate::SetLayout, if we needed to know TExpandoMenuBar's menu_layout
for some reason, we can call Layout().

Maintain 2px border around replicants in vertical expando mode on all
sides. Maintain 2px border around replicants in horizontal mode, except for
at 16x16 reduce the border to 1px because we're really short on height.
Improve clock centering in vertical expando mode. Also improve clock
centering in mini-mode across all font sizes. Reduce clock height by 2px
so that it won't draw over the top and bottom borders in horizontal mode.

Refactor TBarView::PlaceTray(). The code is basically the same but the
method is now better layed out. Calculate resize dragger location based
on width setting. This is valid since it is only ever used in vertical
expando mode. Hide the resize control better by moving it off-screen
when not in use. Hide() alone was not enough.

Fix size and position of the drag region to prevent minor drawing glitches
that were occuring in horizontal and left vertical mode because the drag
region was not in quite the right size and place.

Call DrawDragger() from DrawAfterChildren() instead of Draw() (and set
B_DRAW_ON_CHILDREN flag) so that the dragger will always be drawn even if
there are other items on top. In theory this should not be needed but in
practice this fixes a few drawing glitches. Rename DrawDragRegion() to
private DrawDragger() method - the name was confusing and other classes
shouldn't be allowed to draw the dragger directly.

TDragRegion should be renamed to TStatusView since that's what it really is.
Then we should create a new TDragControl class based on TResizeControl that
is a child of TStatusView like everybody else. TDragControl would be
responsible for drawing itself and knowing where its bounds are. For now
DrawAfterChildren() will have to do.

Rework status tray border drawing. It is identical in vertical exando mode
and in the same spirit in horizontal mode just a little bit nicer looking.
Draw hilight on top, left, and bottom edges in horizontal mode. Draw hilight
on top, and left edges in mini-mode this creates the appearance of a shadow.
Best appreciated using Magnify.

May the following (Open Tracker License) code forever be memorialized in
this commit message:

void
TDragRegion::Draw(BRect updateRect)
{
rgb_color menuColor = ViewColor();
rgb_color hilite = tint_color(menuColor, B_DARKEN_1_TINT);
rgb_color ldark = tint_color(menuColor, 1.02);
rgb_color dark = tint_color(menuColor, B_DARKEN_2_TINT);
rgb_color vvdark = tint_color(menuColor, B_DARKEN_4_TINT);
rgb_color light = tint_color(menuColor, B_LIGHTEN_2_TINT);

BRect frame(Bounds());
BeginLineArray(4);

if (be_control_look != NULL) {
if (fBarView->Vertical()) {
AddLine(frame.LeftTop(), frame.RightTop(), dark);
AddLine(BPoint(frame.left, frame.top + 1),
BPoint(frame.right, frame.top + 1), ldark);
AddLine(frame.LeftBottom(), frame.RightBottom(), hilite);
} else if (fBarView->AcrossTop() || fBarView->AcrossBottom()) {
AddLine(frame.LeftTop(),
BPoint(frame.left, frame.bottom), dark);
AddLine(BPoint(frame.left + 1, frame.top + 1),
BPoint(frame.right - 1, frame.top + 1), light);
AddLine(BPoint(frame.right, frame.top + 2),
BPoint(frame.right, frame.bottom), hilite);
AddLine(BPoint(frame.left + 1, frame.bottom),
BPoint(frame.right - 1, frame.bottom), hilite);
}
} else {
if (fBarView->Vertical()) {
AddLine(frame.LeftTop(), frame.RightTop(), light);
AddLine(frame.LeftTop(), frame.LeftBottom(), light);
AddLine(frame.RightBottom(), frame.RightTop(), hilite);
} else if (fBarView->AcrossTop()) {
AddLine(BPoint(frame.left, frame.top + 1),
BPoint(frame.right - 1, frame.top + 1), light);
AddLine(frame.RightTop(), frame.RightBottom(), vvdark);
AddLine(BPoint(frame.right - 1, frame.top + 2),
BPoint(frame.right - 1, frame.bottom - 1), hilite);
AddLine(frame.LeftBottom(),
BPoint(frame.right - 1, frame.bottom), hilite);
} else if (fBarView->AcrossBottom()) {
AddLine(BPoint(frame.left, frame.top + 1), BPoint(frame.right - 1, frame.top + 1), light);
AddLine(frame.LeftBottom(), frame.RightBottom(), hilite);
AddLine(frame.RightTop(), frame.RightBottom(), vvdark);
AddLine(BPoint(frame.right - 1, frame.top + 1),
BPoint(frame.right - 1, frame.bottom - 1), hilite);
}
}

EndLineArray();
}

Refactor mode switching.

Change TDragRegion::SwitchModeForRect() to SwitchModeForRegion() and pass
in BRegion's instead of BRect's. Create a new CalculateRegions() method
which is called once at startup and again on ScreenChanged() instead of
calculating the rect's over and over again inside MouseMoved(). Simplify
calculations using BRegion's.

Get the screen_where parameter from the Window()'s CurrentMessage() instead
of converting the passed in where parameter to screen coordinates. This
makes mode switching work 100% better.

Restore full state, fix all issues, and disable it again.

Fix issue with the window not resizing itself correctly when hiding the
scroller arrows in vertical expando mode because Deskbar was using the
bottom value of a scrolled view rather than its height. We only need to
call CheckForScrolling() once before we resize the window. Consolidate all
the window resizing code into ExpandoMenuBar::SizeWindow(), call
CheckForScrolling() there one time, then resize the window and lay
everything out again.

Simplify expando menu bar background drawing. The only part of this
drawing code that was actually being shown was the part where it stroked a
vertical line like this:

rgb_color menuColor = ui_color(B_MENU_BACKGROUND_COLOR);
SetHighColor(tint_color(menuColor, 1.22));
StrokeLine(bounds.LeftTop(), bounds.LeftBottom());

The rest of the code was never seen. May the following code also be forever
memorialized in this commit message:

void
TExpandoMenuBar::DrawBackground(BRect updateRect)
{
if (Vertical())
return;

BRect bounds(Bounds());
rgb_color menuColor = ui_color(B_MENU_BACKGROUND_COLOR);
rgb_color hilite = tint_color(menuColor, B_DARKEN_1_TINT);
rgb_color vlight = tint_color(menuColor, B_LIGHTEN_2_TINT);

int32 count = CountItems() - 1;
if (count >= 0)
bounds.left = ItemAt(count)->Frame().right + 1;
else
bounds.left = 0;

if (be_control_look != NULL) {
SetHighColor(tint_color(menuColor, 1.22));
StrokeLine(bounds.LeftTop(), bounds.LeftBottom());
bounds.left++;
uint32 borders = BControlLook::B_TOP_BORDER
| BControlLook::B_BOTTOM_BORDER | BControlLook::B_RIGHT_BORDER;

be_control_look->DrawButtonBackground(this, bounds, bounds, menuColor,
0, borders);
} else {
SetHighColor(vlight);
StrokeLine(bounds.LeftTop(), bounds.RightTop());
StrokeLine(BPoint(bounds.left, bounds.top + 1), bounds.LeftBottom());
SetHighColor(hilite);
StrokeLine(BPoint(bounds.left + 1, bounds.bottom),
bounds.RightBottom());
}
}

Change-Id: Id9ddd60c997a785184208ba02938bee1416aeae9
Reviewed-on: https://review.haiku-os.org/c/haiku/+/2253
Reviewed-by: Adrien Destugues <pulkomandy@gmail.com>


# 03399b17 19-Feb-2020 John Scipione <jscipione@gmail.com>

Deskbar: remove mistaken double assignment


# 7211f720 19-Feb-2020 John Scipione <jscipione@gmail.com>

Deskbar: Set replicant tray height to team menu item height

... in horizontal mode.

Tray was wrong size for big font and mini icon.


# 15eb397e 19-Jul-2018 John Scipione <jscipione@gmail.com>

Deskbar: Adjust team menu items with font size.

The Deskbar team menu should look the same at 12pt but much better
at larger (and smaller) font sizes.

Determine team menu item height in TBarView instead of
TTeamMenuItem::GetContentSize() because it is needed earlier in the
process, and also call method in GetContentSize().

The clock is centered horizontally in the first replicant row and the
width can grow to push the replicant icons better at larger font sizes.

The replicant tray and clock go to the bottom in horizontal bottom mode
and go to the top in horizontal top mode for Fitt's Law convinience and
go in the center of the first row in vertical mode.

Grow horizontal team item widths with font size, and shrink them
down to 1/2 of full width to fit more, or 1/2 padding for icon-only.

In horizontal mode the menu item size increases so that you can fit
approximate the same amount of label text based on icon and font size.
hit the width limit the items shrink and the label gets truncated
(like before.)

Scale team menu with font size. Reduce to half width for hide labels.

Change-Id: I93ecc8acded274b994728e7247768455862e31c5
Reviewed-on: https://review.haiku-os.org/c/haiku/+/345
Reviewed-by: waddlesplash <waddlesplash@gmail.com>


# 1c765f5b 18-Feb-2020 John Scipione <jscipione@gmail.com>

Deskbar: Set window limits to hidden dimension in auto-hide mode.

This fixes a bug where the window size limits were not set correctly
causing the window not to be hidden properly in some cases while
Deskbar is in auto-hide mode. This bug was introduced in hrev53585:
Update window resize size limits.

A couple of other auto-hide related bugs were also fixed:

Hide TBarView in constructor if auto-hide is on. This is needed to
size and position the window correctly on Deskbar startup in auto-
hide mode.

Always Check fTime->IsHidden() from the perspective of fTime instead
of the parent view because we were getting false positives that the
clock was hidden in auto-hide mode which caused the replicants not to
realign themselves around the clock on Deskbar startup. The clock
thought it was hidden because the parent view was hidden but that's
not what is needed here.

Bail out of BarView::MouseMoved if resizing. This fixes a bug where
if you resized the window in auto-hide mode once the window had become
as wide as possible dragging beyond the window hidden area slop limit
would confusingly cause the window to hide itself in the middle of your
resize operation.

Fixes #15067 better. Fixes problems related to #8641 and #9469.

Change-Id: I58de02e0cdd4e4cdccc15594992f11bf8c7f3a26
Reviewed-on: https://review.haiku-os.org/c/haiku/+/2252
Reviewed-by: waddlesplash <waddlesplash@gmail.com>


# efafab64 02-Nov-2018 Axel Dörfler <axeld@pinc-software.de>

Deskbar: Resizable tray

* Adds max width and height arguments to
instantiate_deskbar_(item|entry).
* Old applications just stay with a 16x16 scaled icon, though.
* All used apps within the repository are converted to the new call
besides the input_server input method icon (that will need further
API changes in the input_server).

Change-Id: I29cc439396917be2c24135888459d31364997dff
Reviewed-on: https://review.haiku-os.org/656
Reviewed-by: waddlesplash <waddlesplash@gmail.com>


# 1dd1976f 03-Jan-2018 John Scipione <jscipione@gmail.com>

Deskbar: update time width based on Deskbar orientation.

Fixes #8641

To fix this bug first I had to fix a long-standing todo:
TODO: SetOrientation never gets called, fix that when in vertical mode,
we want to limit the width so that it can't overlap the bevels in the
parent view.

I made TBarView a friend class of TReplicantTray and called
fReplicantTray->fTime->SetOrientation() when switching between
horizontal and vertical mode. I could have added a setter method
instead but I didn't feel like it was worth it.

SetOrientation calls ResizedToPreferred which calls GetPreferredSize,
which resizes the text width, then it calls CalculateTextPlacement
which places the time string correctly.

Removed GetCurrentTime invocation from GetPreferredSize since that
happens in Update already. Was added in
573f748c5f8fb7ed75beb0ceb7eb097d3ab0c038 originally.

Also need to call SetOrientation in TReplicantTray::AttachedToWindow
just after creating the TTime object in order for it to resize the
time view correctly on startup in horizontal mode. It needs to know
that it is horizontal so that it will expand to fit longer than
default time string.


# 4c999927 21-Nov-2017 Adrien Destugues <pulkomandy@pulkomandy.tk>

Deskbar: update time format when locale changes.

Thanks to Skipp_OSX for reminding me that B_LOCALE_CHANGED was already
handled in Deskbar.


# 015b5dd6 16-Nov-2017 John Scipione <jscipione@gmail.com>

Deskbar: replicant tray width adjust for 2 draggers

Revision of last commit, everything I said about how we needed to
use 8px instead of 12px for the drag width and replicant tray
padding was correct, BUT, because we are subtracting from the
window width setting we need to account for the width of BOTH
draggers, so it becomes 2 * 8px or 16px that needs to be
subtracted -- sorry about that.

The minimum Deskbar width was calculated to fit 6 replicant icons,
however, this calculation doesn't take into account the extra width
taken up by the recently added second dragger. Consequently only 5
16x16 replicants currently fit.

However you can expand Deskbar to fit 6 (or more) icons now so it
is not a big deal.

Would it be desirable to adjust the minimum Deskbar width to fix 6
replicant icons again?


# bc08a7d6 16-Nov-2017 John Scipione <jscipione@gmail.com>

Fix first replicant wrapping bug on wide clock

In this commit:
a44504a168548e129e58eeace336a6a2315257ad
Deskbar: Refactor TRelicantTray::LocationForReplicant()

I made the following assumption that:
* if index == 0 return right away, no calculation required.

But this assumes that the first replicant will always fit on the
same line as the clock which doesn't work if you have a wide clock.

Update to always calculate the position even of the first replicant
in vertical (multi-row) mode.

In horizontal mode we still skip some calculations for the index 0
case.

Also I was using kClockMargin (12px) for the right margin, the
right margin should be only 8px: 5px for the dragger plus 3px more
for kTrayPadding. Finally we add in the width of the clock and
extra clock margin iif we're on first row and clock is not hidden.

Fixes (hopefully the last of) #8641


# c0be5490 24-Oct-2017 John Scipione <jscipione@gmail.com>

Deskbar: Fix bug calculating position of replicant icons

...in horizontal mode.

fTime->Frame().left was not in the correct position because the
window isn't yet done resizing. Instead calculate left from the
right edge of the drag region instead.


# 7b7bf68d 23-Oct-2017 John Scipione <jscipione@gmail.com>

Deskbar: create new constant kClockMargin and use it

defines the (minimum) margin between clock and replicant icons

Was used in a couple different forms, now all in 1 constant


# a44504a1 23-Oct-2017 John Scipione <jscipione@gmail.com>

Deskbar: Refactor TRelicantTray::LocationForReplicant()

* if index == 0 return right away, no calculation required.
* rename rect to rowRect then copy it into replicantRect.
- This makes it clearer to me what's going on.
* don't have to check if index > 0 in horizontal mode anymore since
we are checking it upfront.
* introduce replicantWidth variable for understanding
* reduce indent

Was calculating the height in multi-row mode twice. Instead, use
the saved height, if that isn't set calculate height as before,
if no replicants, use minimum height (16px) and don't calculate.


# 32b0035a 23-Oct-2017 John Scipione <jscipione@gmail.com>

Deskbar: Rename some methods, variables, and call method

Rename IconCount() method to ReplicantCount()

Rename fChild and child to fReplicantTray and replicantTray


# c0dc265c 19-Oct-2017 John Scipione <jscipione@gmail.com>

Deskbar & PowerStatus: Realign Replicants

Added a new message constant to Deskbar kRealignReplicants which
is called to realign replicant icons. Add routing so that if you knock on
Deskbar's front door (Application) it will get routed to the right view, in
this case the repliant tray that knows how to realign replicants.

Send a message with this newly created constant in PowerStatus when
the width changes because you turned the label on or off. This makes
it so that when you show or hide the battery percentage it will not overrun
the clock.

Realign Replicants is a common case.

Fixes the rest of #8641


# c3c3360f 19-Oct-2017 John Scipione <jscipione@gmail.com>

Deskbar and PowerStatus: style updates

80 char limit in BarApp.cpp
2 newlines and remove unnecessary curly braces in StatusView.cpp

Replicant: tiny whitespace style fix and remove trailing tab chars


# 70ad5289 19-Oct-2017 John Scipione <jscipione@gmail.com>

Deskbar: Position clock & replicants better

This fixes some subtle layout issues. The replicant icon
positions and clock position has been made more consistent
in both vertical mode, and horizontal mode.

There is a fixed amount of space between the last replicant
and the clock before it wraps to next row. This now works
at different font sizes.

Use matching 3px of space between the clock and the dragger
on one side and and between the replicant and the dragger
on the other side.

Reparent ResizeControl from ReplicantTray onto DragRegion and
readjust everything.


# 092e918b 24-Oct-2017 John Scipione <jscipione@gmail.com>

Deskbar: draw resize rect in Bounds() not updateRect

it draws correctly most of the time but when you open and close the
menu it doesn't.

Fixes #13740


# 6123d2dd 07-Oct-2017 John Scipione <jscipione@gmail.com>

Deskbar: Move tray past border in horizontal mode

Fixes #13711


# 00171c6f 11-Sep-2017 John Scipione <jscipione@gmail.com>

Deskbar: fix a crash holding window over drag area

state: Call (Calling BeginLineArray with a count <= 0)

Thanks diver


# 378aa08b 11-Sep-2017 John Scipione <jscipione@gmail.com>

Deskbar: refactor, no functional change

* Split int32 declarations into own lines.
* Merge if and return stmts into single return stmt using ternary operator.


# 3641948f 11-Sep-2017 John Scipione <jscipione@gmail.com>

Deskbar: better checking on string comparison

Check if both strings are NULL before passing to strcmp().

It would be bad if view->Name() were NULL and we tried to dereference it.

Thanks Jérôme for noticing this.


# 1bb2e623 01-Mar-2013 John Scipione <jscipione@gmail.com>

Deskbar: variable width Deskbar in vertical mode

Feature to make Deskbar width variable via a dragger.

Resize Deskbar by clicking and dragging the mouse on the
horizontal side of Deskbar opposite the screen's edge.
(left side for default top right).

The resize dragger is hidden in horizontal mode.

Details below:
* ExpandoMenuBar is resized with rest of window.
* Rename where to whereScreen to make it clear that the variable
is in screen coordinates.
* Lock focus on window while resizing
* Resize via TResizeControl class which is based on TDragRegion
* Set default width to minimum so everything stays the same.
- don't set the width setting to 0 on quit, use the new setting.
* Set max tray width based on setting
* Make clock area a bit wider preventing replicant icons from
overrunning the clock area.
* Leave more room left of clock makes replicants wrap earlier,
leaving icon gap width between replicants and clock. Before it
would butt flush against the clock before moving down a row.
* Remove FrameMoved from TDragRegion, we are already doing this
in BarView -- no reason to do it twice.
* Need to redraw the drag region after moving or it will be half
drawn.
* Hide resize control in horizontal mode
* Add room for resize dragger when placing replicants
* Update width setting unless window is hidden
- This prevents Deskbar from being set to minimum width after it
is hidden.

Also, constrain width setting within limits but not width of the
BarView which we want to track the window width. In practice they
should be the same but it is possible for them to get out of sync
and that's okay. Obvious example of the setting and actual width
of the window being out of sync is in the hidden case.

unify dragger width and kDragWidth vars

Make drag regions pixel perfect:
* Vertical mode status tray reduced in height by 1px to match height
in horizontal mode exactly.
* move icons over by 2px in horizontal mode so that there is a bit more space
on the left and so that it matches pixel perfect with vertical mode.
- to see this quickly switch between bottom right vertical at the minimum width
and horizontal mode then notice how the icons don't move

Draw drag background then menu color when not active to get rid of drawing
glitches in horizontal mode on the top pixel.

Add some more room between last icon and clock in horizontal mode.


# a6be6c4d 13-Dec-2016 John Scipione <jscipione@gmail.com>

Deskbar: Minor functional changes

Use std::min() over min_c in TimeView.cpp
Check for NULL view before dereferencing
Return B_BAD_VALUE for bad inputs


# e4d65fe7 13-Dec-2016 John Scipione <jscipione@gmail.com>

Deskbar: Style fixes to StatusView
Deskbar: Minor style fixes in TimeView.cpp


# b1967b10 09-Jan-2017 John Scipione <jscipione@gmail.com>

Revert "Deskbar: Scale cut-off leaf icon in horizontal mode"

This reverts commit 066137eb05fc965261d6e50f24e41b9dcf79a5a7.

Reverting while I figure out what is causing Deskbar to crash.


# 066137eb 07-Jan-2017 John Scipione <jscipione@gmail.com>

Deskbar: Scale cut-off leaf icon in horizontal mode

Fixes #8505 restoring the aesthetic integrity of the cut-off leaf.

Add vertically & horizontally centered, whole vector icon to rdef.

Reformat BarMenuTitle.h rename header guard from BARMENUTITLEH to
BAR_MENU_TITLE_H.

Created TDeskbarMenuTitle subclass which deals with Deskbar menu
item stuff like getting the icon from vector data and pushing the
leaf down a few pixels to cut off the leaf (maintaining its aesthetic
integrity).

Made TBarMenuTitle methods virtual. Remove unused expando constructor
parameter and private variable.

Add a TODO to scale the bitmap if we can't find any vector icon data.
With non-vector bitmap it behaves same as before this commit in
horizontal mode.

Adjust kMinimumTrayWidth to restore Deskbar's minimum width to its
classic value since days of yore, 143px. This, perhaps not coincidently,
is exactly the amount fit 7 replicant icons. Update constants in the
code to reflect this reality. Adjustable width coming soon.

replace dynamic_cast<TBarApp*>(be_app) with a static_cast in 1 place.


# cef0a7b2 05-Jan-2016 looncraz <looncraz@looncraz.net>

Deskbar: Correct StatusView colors following Set*UIColor merge.

Previous colors matched the menu background color, but should have been
darkened.

The tint value was not being updated for the SetViewUIColor call construction,
therefore the tint parameter was still B_NO_TINT.

Signed-off-by: Augustin Cavalier <waddlesplash@gmail.com>


# 16c10517 09-Dec-2015 looncraz <looncraz@looncraz.net>

Deskbar: Convert to using Set*UIColor.

Signed-off-by: Augustin Cavalier <waddlesplash@gmail.com>
Patches 0076 from looncraz, unmodified.


# fb956f25 08-Sep-2015 Axel Dörfler <axeld@pinc-software.de>

Deskbar: scale better with the font size.

* This makes it much more usable with a larger font size.


# 0fc30d89 09-Apr-2015 Dario Casalinuovo <b.vitruvio@gmail.com>

Deskbar: Sanitize the usage of BMessage

... especially for SendMessage and SendReply.
* Delete the item's message if AddItem does not return successfully.
* Fixes #11934.

Signed-off-by: Adrien Destugues <pulkomandy@gmail.com>


# b49e806d 30-Mar-2015 Axel Dörfler <axeld@pinc-software.de>

Deskbar: minor style cleanup.


# deaae5fc 07-Jan-2014 John Scipione <jscipione@gmail.com>

Deskbar: Persist ExpandoMenuBar

Add private BMenu::_SetMenuLayout() method. Set TExpandoMenuBar
as a friend class in BMenu to call this method. A little hacky,
but, this keeps SetMenuLayout() from being exposed as part of
the public API.

Don't destroy and rebuild the ExpandoMenuBar when switching from
horizontal to vertical mode. Instead build the TExpandoMenuBar
when the application starts and then switch it from B_ITEMS_IN_ROW
to B_ITEMS_IN_COLUMNS by using the newly added _SetMenuLayout()
method.

When we resize from vertical to horizontal, recalc the max
menu item widths, this resizes the application menu items so
that they take up the right amount of space.

Since we no longer destroy the menu bar we no longer have to
save whether menu items are expanded or not in a separate list.
Instead we can store that information in directly in
TExpandoMenuBar. This removes a lot of code.

Fixes #9350


# 26ea7066 29-Jun-2013 Ingo Weinhold <ingo_weinhold@gmx.de>

Deskbar: use a virtual directory for the user-configurable menu

* Deskbar now uses ~/config/settings/deskbar/menu_entries for its menu,
falling back to /system/data/deskbar/menu_entries, when the former
doesn't exist. The latter always exists and is a virtual directory
merging the deskbar/menu subdirectories of ~/config/settings/ and
<any installation location>/data/. So, if a package provides a
deskbar menu symlink, it is added automatically when the package is
activated. The user can add own menu items by putting stuff into
~/config/settings/deskbar/menu/, only use their own organization by
symlinking it to menu_entries, or do fun stuff by making menu_entries
a customized virtual directory.
* HaikuImage: No longer create any deskbar menu symlinks in the user's
settings directory. Instead add them to the Haiku package.
* OptionalPackages: At least for the optional packages that do have
hpkgs, no longer create deskbar menu symlinks in the user's settings
directory.
* Move all Deskbar settings files to ~/config/settings/deskbar/ and
drop the "Deskbar_" prefix.


# 9f2cce2f 06-Apr-2013 John Scipione <jscipione@gmail.com>

Eliminate repeating CountItems() loop premature micro-optimization

Loop backwards if possible, if not, set a variable and use that instead.
There were a couple of instances where the loop style got changed from
for (int32 i = CountItems(); --i >= 0;)
to
for (int32 i = CountItems() - 1; i >= 0; i--) {
but should be functionally equivalent.


# 2a5c1f12 25-Feb-2013 John Scipione <jscipione@gmail.com>

Fix #9469 again in a better way.

Pass fTime into the IsHidden() method to check the hidden state from
the point of view of fTime which will ignore the hidden state. of the
window. Remove the Hide(), Show(), and IsHidden() overrides in
TimeView as they are no longer needed.

Thanks Stippi and Axel.


# 3722e640 13-Feb-2013 John Scipione <jscipione@gmail.com>

Store and read show/hide clock setting on disk.

So that the setting will persist across reboots. This is a Deskbar
setting, not a "clock" setting. Theoretically someday if we make
it so you can replace the clock with a different clock widget we
still want to store whether or not to show the clock widget as a
Deskbar setting.
Fixes #9456


# 31c0024d 07-Nov-2012 John Scipione <jscipione@gmail.com>

Add Deskbar clock settings to Time Preferences

* Added a new Clock tab to the Time preflet. Added Clock related
controls there. They all function by communicating with Deskbar.
* Put controls in a BBox controlled by the Show clock checkbox.
This more clearly shows that all the clock settings are dependent
on the show clock setting since it doesn't matter what your clock
settings are if you don't show the clock.
* Make revert work.
* Split clock settings into it's own file and struct.
* Re-add the time zone setting.
* Remove the clock settings from the Deskbar preference window, they
are in Time now.
* Make Locale preferences accepts B_LOCALE_CHANGED message, although
not used.


# e9632898 09-Aug-2012 Alex Smith <alex@alex-smith.me.uk>

Added Tracker and Deskbar to x86_64 build.


# d7ed9414 22-Jul-2012 Rene Gollent <anevilyak@gmail.com>

Fix #8523.

- When the message filter would receive and process a mouse moved message,
if the message resulted in causing the deskbar to relocate or reorient
itself, it was possible for the expando view to become detached from
the looper. Consequently, if the intercepted mouse moved happened to have
come from the latter, when returning out of the filter the view would no
longer have a target looper, triggering a debugger condition in BLooper.
In order to prevent this situation, we now dispatch a message asking for
the layout change to occur asynchronously.


# a663e905 16-Jun-2012 Rene Gollent <anevilyak@gmail.com>

Fix #8640.

- Automatic whitespace cleanup.
- Remove no longer exposed show/hide time setting. The methodology for
saving it on exit was broken anyways, since it relied on the current
show/hide state of the time view, which would be hidden if the deskbar
was currently in Autohide mode.


# 615d572d 03-May-2012 John Scipione <jscipione@gmail.com>

Fix #8505 cut-off Deskbar leaf bug.

Replace the leaf bitmap with a non-cutoff version derived from the
'data/artwork/Haiku Leaf' file. So, when icon size is > 16 the full
deskbar leaf is shown without the bottom cut-off. It should look
pretty much identical at 16x16 and in vertical mode at any icon size.

Also add a deskbar_leaf.png file to the data/artwork directory
although I didn't use that file in Deskbar, instead I embed an
archive bitmap into icons.h. I got rid of icon-freelogo.rdef and
icons_logo.h.


# 1cd61330 02-May-2012 John Scipione <jscipione@gmail.com>

Style fixes including reordering #include's in Deskbar

* Reorder includes according to the Style Guide.
* Whitespace changes, mostly making sure there are 2 newlines
between things and making sure there is 1 newline at the end of
each file.
* Make end of header files all in the style of
#endif\t/* _HEADER_GAURD_H_ */
* The one change that is not purely style is to #include <Path.h>
in DeskbarUtils.h instead of DeskbarUtils.cpp because it is used
to define entry_ref for the AddRefsToDeskbarMenu() prototype.


# 9ac6fee1 18-Apr-2012 John Scipione <jscipione@gmail.com>

Rename "deskbar_rt_" back to "Status".

Siarzhuk Zharski informed me that KeymapSwitcher depends on this
view being named "Status" to work, so, renamed it back to that.

Instead of sending the message by name to the replicant tray view,
since the view name "Status" is not very unique and I fear that
there could be collisions, resend the message to BarView which
then passes the message on to the replicant tray which updates the
clock and reflows the icons.

This being said, KeymapSwitcher should probably not send a message
hardcoded to the name of the replicant tray view and instead send
the message to Deskbar and allow it to pass the message on to the
appropriate view.


# f5be13ec 17-Apr-2012 John Scipione <jscipione@gmail.com>

Remove time zone clock option and Time preferences button.

* Nobody thought time zone was a particularly useful option to have
in the clock.
* You can still open Time preferences from Deskbar by right clicking
on the clock, but, since there isn't a big connection between
the clock settings in Deskbar and Time preferences anymore
this button isn't needed here.
* There are still 2 clock options, Show seconds, and Show day of week
and day of week is localized as well so this wasn't a total wash.


# 0d2ac94c 17-Apr-2012 John Scipione <jscipione@gmail.com>

Rename the TReplicantTray view "_deskbar_rt_"

instead of "_replicant_tray_". That follows the convention a bit
better and is less likely to cause name collisions. While I am at
it put the BView line below the : as is our usual convention.


# 30a55802 17-Apr-2012 John Scipione <jscipione@gmail.com>

Remove Time Interval radio buttons from Deskbar Prefs.

* 12/24 hour clock is set from the Locale prefs only.
* Redirect B_LOCALE_CHANGED message to the replicant tray instead
of the time view and tell the replicant tray to update the time
instead of updating the time view directly. This is because there
was a bug where if the AM/PM marker grew the time view over the
replicant tray icons when switching from 24 hour to 12 hour clock
it wouldn't reflow the replicant tray icons like it should.
* Rename the replicant tray view from "Status" to "_replicant_tray_"
because BarApp uses FindView() to get the view by name and I'm
assuming that this method can have conflicts. Following the example
of the "_deskbar_tv_" naming convention.


# 546208a5 16-Apr-2012 Oliver Tappe <zooey@hirschkaefer.de>

More catalog-related cleanup.

* rename B_TRANSLATE_CONTEXT to B_TRANSLATION_CONTEXT and
B_TRANSLATE_WITH_CONTEXT to B_TRANSLATE_CONTEXT, squashing a TODO
* adjust all uses of both macros in Haiku's source tree
* use correct header guard for collecting/Catalog.h

The renamed macros require adjustments to all external applications
using catalogs.


# 3cf2d117 14-Apr-2012 John Scipione <jscipione@gmail.com>

Change Time Format Options in Deskbar preferences.

Added two new methods to the Locale Kit in order to create a custom time
formats from a format string. One method is outputs into a char* array,
the other into a BString() and you can set the timezone.

These methods should be cleaned up, we only need 2, one to get
the time in a predefined style, the other to get a custom time format.
Also should probably do the same for dates and datetimes. But I'll let
this go for now.

I added myself to the Locale.cpp file. I retained the copyright instead
of assigning it to Haiku, Inc. because the file is under the OpenBeOS
license and I don't know what the concequences of copyright sharing are
for that license, unlike MIT.

These new methods are used to generate custom time formats in Deskbar.
Instead of using a set of Radio Buttons to choose between the predefined
time options I build my own by creating a format string and passing it
to the Locale Kit. The format string is generated from 3 checkboxes,
show seconds, show day of week, and show time zone. You can mix and match
between them choose any that you like. By default they are all off.

There are 3 new deskbar settings associated with these new options:
showSeconds, showDayOfWeek, and showTimeZone. timeFormat has gone away.

The time format string gets cached and updated only when Update() gets called
on the TimeView class.

In order to fit all the options in (there is 1 more than before) I had to
reduce the font size of the clock to 11pt when all options are turned on in
12 hour mode. For those with no imagination it looks like this:

http://imagebin.org/208162

Renamed "Open time preferences..." menuitem to "Time preferences...".
Renamed "Show Time" and "Hide Time" to "Show time" and "Hide time".

Other changes include refactoring the header files a bit. There were a lot
of headers included by header files uneccessarily. For instance BarWindow.h
now only includes <Window.h> and <Deskbar.h>. This change is mainly to
to speed up the compile time since it takes a while right now.

I copy the fBarView pointer from BarWindow in the BarApp constructor and then
use that throughout the file rather than getting the pointer from the window
each time by calling BarView(). BarView() is still available in the header
for other classes though.

I moved some message constants around since it was getting a bit jumbled.
Most of the messages related to settings are in PreferenceWindow.h.
fChangeState is moved to BarView.h since that is where the ChangeState()
function is and BarView.cpp uses that constant.

The time interval and format constants are in TimeView.h.

Make some methods public in their respective classes where it made sense.
The preference window methods to update dependent items are public, that
might get called from BarWindow when a message gets received at some point.

Also made ShowHideTime() and Time() public in StatusView.h. These methods
activate showing and hiding the clock and return the fTime clock object.
No reason they should be private.

I reindented the StatusView.h and PreferenceWindow.h headers to the standard
style. Question here, are the public: protected: and private: lines inside
of classes suppose to get indented 1 tab or not? I've seen both, the style
guide says no indent but 1 indent seems reasonable and looks pretty good.

Style fixes here and there. That's enough for one commit I think.


# 2a2dc95a 09-Apr-2012 John Scipione <jscipione@gmail.com>

Update timeView popup menu


# 573f748c 09-Apr-2012 John Scipione <jscipione@gmail.com>

Add 12/24 hour and time formatting options to Deskbar.

* 12/24 hour settings come from and alter BLocale
* Time formats are short, medium, long. Short is default. Come from
Locale kit.
* Don't delete fClock (now fTime) when hiding, just hide and show
the view.
* BarView now has nothing to do with setting or keeping track of
time settings. This is all handled in TTimeView. TReplicantTray
is responsible for updating the replicant tray and doing showing
and hiding. TTimeView is responsible for drawing according to the
clock settings.
* Remove fShowInterval and fShowSeconds from BarView
* Remove ampmMode setting and replace it with timeFormat.
* Reset targets in DeskbarMenu.

Originally I was trying to solve a bug where the TTimeView
was relying on the Deskbar settings too much. The settings
should only by set on quit and accessed on startup or a crash can
cause Deskbar to be in an unusual state.

I realize that the timezone is not very helpful. I'd like to provide
the day of week in a short format instead, i.e. Wed for Wednesday or
similar based on your locale. Blame the Locale Kit for now allowing
me to be able to use a custom TimeFormat. Once a custom TimeFormats
becomes possible from the Locale Kit Deskbar can be updated to use
them.


# 2ce9bab8 27-Jun-2011 John Scipione <jscipione@gmail.com>

Fisher Price Deskbar icon support

Implements the feature described in #7132
Also fixes #2387 (menu items too big in horizontal mode when font size > 12)

Adds a slider to Deskbar preferences which allows you to resize your Deskbar
team icons from 16x16 to 96x96. The default is 16x16. This works both in vertical
and horizontal mode.

In vertical mode when icon sizes are greater than 32x32 the label moves
underneath the icon where there is more room. In horizontal mode the width of
the menu item increases to make room for the icon while keeping room for the
label the same. As many applications are added the labels are truncated as usual.

This patch also adds a checkbox to the Deskbar preferences to hide application
names to make more room for icons if you wish. It doesn't make a lot of sense
at 16x16 but does >32x32.

If the kResizeTeamIcons message gets dropped, don't resize to current value,
just do nothing. This fixes a bug where sometimes the slider wouldn't trigger
a resize. Fix a spelling error in a comment. Take out a redundant paren pair.


# 4bbb27e3 12-Feb-2012 Jerome Duval <jerome.duval@gmail.com>

More 'GCC4.6 variable set but not used' fixes.


# 323b6546 21-Nov-2011 Oliver Tappe <zooey@hirschkaefer.de>

Filtered flat import of Oliver's svn package management branch

Bring the changes that aren't package management related and the ones
that are but don't take effect as long as they are ignored by the build
system into the master.

Summary of changes:
* Introduce private header <directories.h> with constants for a good
deal of paths that should usually be retrieved via find_directory().
* Replace hard-coded paths by using find_directory() or the
<directories.h> constants (e.g. in drivers and the kernel).
* Add find_directory() constants needed for package management.
* Add __HAIKU_ABI_NAME and B_HAIKU_ABI_NAME macros.
* src/apps/deskbar: BeMenu.* -> DeskbarMenu.*,
DeskBarUtils.* -> DeskbarUtils.*
* Change deskbar menu settings directory from ~/config/be to
~/config/settings/deskbar.
* Other smaller cleanups, changes, and fixes.


# 8aab28f1 30-Oct-2011 Rene Gollent <anevilyak@gmail.com>

And more fixes.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@43013 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 7625ce51 30-Oct-2011 Rene Gollent <anevilyak@gmail.com>

Factor out an _SaveSettings() call to write back settings. Use it to commit tray item changes immediately instead of at Deskbar exit.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@43009 a95241bf-73f2-0310-859d-f6bbb57e9c96


# c0ad1c91 30-Oct-2011 Rene Gollent <anevilyak@gmail.com>

Adjust the previous change to use paths instead of entry_refs.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@43005 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 3e6ff860 30-Oct-2011 Rene Gollent <anevilyak@gmail.com>

Rework Deskbar's tray replicant support a bit. Instead of relying on a live query
for be:deskbar_item_status in order to determine which replicants are supposed to
be living in the tray, a list of entry refs is now stored. While the former approach
was cool, it doesn't really work in either a multiuser or a package-aware world, where
executables are generally read-only. Note this means you'll lose your existing replicants
the first time you run this new revision, and need to re-add them.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@43004 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 3dfd9cb9 16-Jun-2011 Oliver Tappe <zooey@hirschkaefer.de>

Flat commit of all changes from package-management branch in svn


# 9e8a970b 24-Mar-2011 Jonas Sundström <jonas@kirilla.com>

A better for the leaf logo bitmap.

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@41098 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 1ad8c760 06-Mar-2011 Fredrik Holmqvist <fredrik.holmqvist@gmail.com>

More style cleanup patches from John Scipione as part of #7052.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40847 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 908d7185 22-Jan-2011 Rene Gollent <anevilyak@gmail.com>

Remove unused Draw function. Fixes CID 10350.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40264 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 9e9c8091 20-Oct-2010 Rene Gollent <anevilyak@gmail.com>

Remove the "Full Date" setting and associated madness with respect to
the deskbar's current orientation. Instead, we now always show the full
date, but as a tooltip rather than switching the timeview's display
based on a mouse click.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39019 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 68fdcbe0 11-Aug-2010 Adrien Destugues <pulkomandy@pulkomandy.ath.cx>

CID 926 : Memory leak


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38045 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 2f0eb7b1 02-Jul-2010 Adrien Destugues <pulkomandy@pulkomandy.ath.cx>

* Introduce a new method in BCountry to get the first day of week (monday or sunday)
* Localize date in deskbar properly, and use the new API to show the calendar. The "show european date" checkbox is now gone.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37344 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 3fc995d1 24-Jun-2010 Adrien Destugues <pulkomandy@pulkomandy.ath.cx>

* Deskbar now uses localized time from locale kit. Thus the "24 hour
clock" setting is not needed anymore.
* The locale kit now provide a less complete 'full' time format : hour
minutes seconds, I don't think anyone cares much about the "UTC + 1" or
other similar stuff.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37243 a95241bf-73f2-0310-859d-f6bbb57e9c96


# ca9acc20 21-May-2010 Axel Dörfler <axeld@pinc-software.de>

* The Deskbar will now intercept control+alt-clicks, and will start to move the
Deskbar around as other windows do (more or less), as suggested in ticket
#6029.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@36889 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 4eb0cbb0 07-May-2010 Matt Madia <mattmadia@gmail.com>

Updated TR_CONTEXT to be B_TRANSLATE_CONTEXT, relating to #5408.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@36733 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 61863f2c 06-May-2010 Matt Madia <mattmadia@gmail.com>

Updated to use B_TRANSLATE* macros. relates to #5408.

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@36664 a95241bf-73f2-0310-859d-f6bbb57e9c96


# ae7a6e3a 10-Apr-2010 Adrien Destugues <pulkomandy@pulkomandy.ath.cx>

Patch by mt (ticket #5573) : localize deskbar. Thanks !


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@36117 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 71bd3ba5 30-Sep-2009 Jonas Sundström <jonas@kirilla.com>

Removing ifdefs and code for non-Haiku build targets. Partial clean-up. Enforcing the 80-char limit, renaming constants, newline at end of file.

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33377 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 290c9039 29-Sep-2009 Jonas Sundström <jonas@kirilla.com>

Partial clean-up. Asterisks and k-prefix constants.

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33366 a95241bf-73f2-0310-859d-f6bbb57e9c96


# cb6afcb1 21-Mar-2009 Stephan Aßmus <superstippi@gmx.de>

* Give Deskbar a refreshed and cleaner look.
* Fixed a bunch of problems in layouting the various views. (For example,
the last app menu entry is no longer one pixel too short, but there was
more...)
* Fixed Deskbar being not wide enough for the Haiku logo in certain modes.
* Enabled the mount menu. I think it's a good idea to have at a more prominent
location where new Haiku users may look for it (Gnome also has this in
the main panel).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29631 a95241bf-73f2-0310-859d-f6bbb57e9c96


# eaa9af99 12-Oct-2008 Stephan Aßmus <superstippi@gmx.de>

Never use the current menu UI color, but always the view color of any given
menu. Fixes #974.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28030 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 0bec7100 14-Sep-2008 Stefano Ceccherini <stefano.ceccherini@gmail.com>

moved the NULL check before dereferencing the view pointer. CID 1063

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27525 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 157cd891 16-Jun-2008 Alexandre Deckner <alex@zappotek.com>

- Calculating the space left for deskbar replicants was broken. The TimeView could overlap on the left. This fixes #1408
- Placement of the time text was broken. With big fonts, the text was way too low. Using text bounding box now, it looks pretty and robust too.
- Fixed the height of the time view to the replicant height. The view has a fixed height now and can never overlap deskbar at the bottom (horizontal deskbar mode) or other replicant
below.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25970 a95241bf-73f2-0310-859d-f6bbb57e9c96


# ced3755c 28-Mar-2008 Axel Dörfler <axeld@pinc-software.de>

* Fixed a memory leak in Deskbar's BarWindow.cpp when adding a deskbar
replicant failed as pointed out by Mark Hellegers.
* Clarified ownership of the passed in message in TReplicantTray::AddIcon()
as well as BShelf::_AddReplicant().


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24621 a95241bf-73f2-0310-859d-f6bbb57e9c96


# f6742aab 13-Jan-2008 Jérôme Duval <korli@users.berlios.de>

whitespaces => tab


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@23500 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 66eba86f 16-May-2007 Axel Dörfler <axeld@pinc-software.de>

* Applied patch by Jonas Sundstrom: fixed the usage of B_UTF8_ELLIPSIS hopefully
everywhere in the tree.
* Added the ellipsis to "About Haiku" in Deskbar as well.
* Minor cleanup of Deskbar's StatusView.cpp


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21156 a95241bf-73f2-0310-859d-f6bbb57e9c96


# a5210ab1 11-Aug-2006 Axel Dörfler <axeld@pinc-software.de>

Imported files from OT-current:
* ExpandoMenuBar.cpp 1.18
* CalendarMenuItem.cpp 1.6
* WindowMenu.cpp 1.3
* TimeView.cpp 1.14
* StatusView.cpp 1.18
* BarWindow.cpp 1.8


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@18482 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 9c50f36e 09-Mar-2006 Axel Dörfler <axeld@pinc-software.de>

Now has some error checks in TReplicantTray::AddIcon() - this fixes bug #222.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16675 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 465b54cd 17-Jan-2006 Axel Dörfler <axeld@pinc-software.de>

Fixed crashing bug in the test environment on quit.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15997 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 3a6add49 03-Jan-2006 Axel Dörfler <axeld@pinc-software.de>

Enabled Deskbar add-ons. They don't work that good, but they don't crash
the Deskbar anymore. It's still disabled for the libbe_test build, though
(as it will find incompatible add-ons via queries there).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15834 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 7da06231 01-Jan-2006 Axel Dörfler <axeld@pinc-software.de>

Imported Deskbar from OpenTracker-current.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15774 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 7d93e668 06-Dec-2005 Axel Dörfler <axeld@pinc-software.de>

Added the Deskbar to the libbe_test environment - I thought I had committed this already...


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15379 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 6d01b66d 13-Nov-2005 Axel Dörfler <axeld@pinc-software.de>

GCC 4 fixes by Ingo Weinhold.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14893 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 9c910f9e 06-Jul-2005 Stephan Aßmus <superstippi@gmx.de>

first draft of a Haiku logo for the Deskbar, link against Haiku libs when building for Haiku

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13508 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 41281cf3 22-May-2005 Axel Dörfler <axeld@pinc-software.de>

Added Tracker and Deskbar from OpenTracker-current to the repository.
They both build fine.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@12773 a95241bf-73f2-0310-859d-f6bbb57e9c96


# fb956f25618a1fc6a3dc990b0902e572b1ff7e8b 08-Sep-2015 Axel Dörfler <axeld@pinc-software.de>

Deskbar: scale better with the font size.

* This makes it much more usable with a larger font size.


# 0fc30d893468d504ba14cb3685ae45c1309290e3 09-Apr-2015 Dario Casalinuovo <b.vitruvio@gmail.com>

Deskbar: Sanitize the usage of BMessage

... especially for SendMessage and SendReply.
* Delete the item's message if AddItem does not return successfully.
* Fixes #11934.

Signed-off-by: Adrien Destugues <pulkomandy@gmail.com>


# b49e806d3d560677f968daf1758d01cd791a1ba8 30-Mar-2015 Axel Dörfler <axeld@pinc-software.de>

Deskbar: minor style cleanup.


# deaae5fc20b5cf44115441d34a1e33436df885b2 07-Jan-2014 John Scipione <jscipione@gmail.com>

Deskbar: Persist ExpandoMenuBar

Add private BMenu::_SetMenuLayout() method. Set TExpandoMenuBar
as a friend class in BMenu to call this method. A little hacky,
but, this keeps SetMenuLayout() from being exposed as part of
the public API.

Don't destroy and rebuild the ExpandoMenuBar when switching from
horizontal to vertical mode. Instead build the TExpandoMenuBar
when the application starts and then switch it from B_ITEMS_IN_ROW
to B_ITEMS_IN_COLUMNS by using the newly added _SetMenuLayout()
method.

When we resize from vertical to horizontal, recalc the max
menu item widths, this resizes the application menu items so
that they take up the right amount of space.

Since we no longer destroy the menu bar we no longer have to
save whether menu items are expanded or not in a separate list.
Instead we can store that information in directly in
TExpandoMenuBar. This removes a lot of code.

Fixes #9350


# 26ea70667a0c3c6274e6bbe91646a74b59a9e8b1 29-Jun-2013 Ingo Weinhold <ingo_weinhold@gmx.de>

Deskbar: use a virtual directory for the user-configurable menu

* Deskbar now uses ~/config/settings/deskbar/menu_entries for its menu,
falling back to /system/data/deskbar/menu_entries, when the former
doesn't exist. The latter always exists and is a virtual directory
merging the deskbar/menu subdirectories of ~/config/settings/ and
<any installation location>/data/. So, if a package provides a
deskbar menu symlink, it is added automatically when the package is
activated. The user can add own menu items by putting stuff into
~/config/settings/deskbar/menu/, only use their own organization by
symlinking it to menu_entries, or do fun stuff by making menu_entries
a customized virtual directory.
* HaikuImage: No longer create any deskbar menu symlinks in the user's
settings directory. Instead add them to the Haiku package.
* OptionalPackages: At least for the optional packages that do have
hpkgs, no longer create deskbar menu symlinks in the user's settings
directory.
* Move all Deskbar settings files to ~/config/settings/deskbar/ and
drop the "Deskbar_" prefix.


# 9f2cce2faaddd7b08af1458bf56aadaed8179a3f 06-Apr-2013 John Scipione <jscipione@gmail.com>

Eliminate repeating CountItems() loop premature micro-optimization

Loop backwards if possible, if not, set a variable and use that instead.
There were a couple of instances where the loop style got changed from
for (int32 i = CountItems(); --i >= 0;)
to
for (int32 i = CountItems() - 1; i >= 0; i--) {
but should be functionally equivalent.


# 2a5c1f12b9c0452aa1c701e235d0d745285f827a 25-Feb-2013 John Scipione <jscipione@gmail.com>

Fix #9469 again in a better way.

Pass fTime into the IsHidden() method to check the hidden state from
the point of view of fTime which will ignore the hidden state. of the
window. Remove the Hide(), Show(), and IsHidden() overrides in
TimeView as they are no longer needed.

Thanks Stippi and Axel.


# 3722e6400443ac3a57b255188898dab89a5a9aa4 13-Feb-2013 John Scipione <jscipione@gmail.com>

Store and read show/hide clock setting on disk.

So that the setting will persist across reboots. This is a Deskbar
setting, not a "clock" setting. Theoretically someday if we make
it so you can replace the clock with a different clock widget we
still want to store whether or not to show the clock widget as a
Deskbar setting.
Fixes #9456


# 31c0024d1b271b0b671c77432cce0be483b366f0 07-Nov-2012 John Scipione <jscipione@gmail.com>

Add Deskbar clock settings to Time Preferences

* Added a new Clock tab to the Time preflet. Added Clock related
controls there. They all function by communicating with Deskbar.
* Put controls in a BBox controlled by the Show clock checkbox.
This more clearly shows that all the clock settings are dependent
on the show clock setting since it doesn't matter what your clock
settings are if you don't show the clock.
* Make revert work.
* Split clock settings into it's own file and struct.
* Re-add the time zone setting.
* Remove the clock settings from the Deskbar preference window, they
are in Time now.
* Make Locale preferences accepts B_LOCALE_CHANGED message, although
not used.


# e963289800007e623f4a120b27e7bd476230f57f 09-Aug-2012 Alex Smith <alex@alex-smith.me.uk>

Added Tracker and Deskbar to x86_64 build.


# d7ed9414a3260efaed0fa9de5dde9bb8c0bc11ef 22-Jul-2012 Rene Gollent <anevilyak@gmail.com>

Fix #8523.

- When the message filter would receive and process a mouse moved message,
if the message resulted in causing the deskbar to relocate or reorient
itself, it was possible for the expando view to become detached from
the looper. Consequently, if the intercepted mouse moved happened to have
come from the latter, when returning out of the filter the view would no
longer have a target looper, triggering a debugger condition in BLooper.
In order to prevent this situation, we now dispatch a message asking for
the layout change to occur asynchronously.


# a663e9050638c7470918bda00c4f260c30513990 16-Jun-2012 Rene Gollent <anevilyak@gmail.com>

Fix #8640.

- Automatic whitespace cleanup.
- Remove no longer exposed show/hide time setting. The methodology for
saving it on exit was broken anyways, since it relied on the current
show/hide state of the time view, which would be hidden if the deskbar
was currently in Autohide mode.


# 615d572db00c03d9de04a6d3ed0f3c50929e0635 03-May-2012 John Scipione <jscipione@gmail.com>

Fix #8505 cut-off Deskbar leaf bug.

Replace the leaf bitmap with a non-cutoff version derived from the
'data/artwork/Haiku Leaf' file. So, when icon size is > 16 the full
deskbar leaf is shown without the bottom cut-off. It should look
pretty much identical at 16x16 and in vertical mode at any icon size.

Also add a deskbar_leaf.png file to the data/artwork directory
although I didn't use that file in Deskbar, instead I embed an
archive bitmap into icons.h. I got rid of icon-freelogo.rdef and
icons_logo.h.


# 1cd61330ecd8257551d58f204332d00145c855ec 02-May-2012 John Scipione <jscipione@gmail.com>

Style fixes including reordering #include's in Deskbar

* Reorder includes according to the Style Guide.
* Whitespace changes, mostly making sure there are 2 newlines
between things and making sure there is 1 newline at the end of
each file.
* Make end of header files all in the style of
#endif\t/* _HEADER_GAURD_H_ */
* The one change that is not purely style is to #include <Path.h>
in DeskbarUtils.h instead of DeskbarUtils.cpp because it is used
to define entry_ref for the AddRefsToDeskbarMenu() prototype.


# 9ac6fee13ad6aa1638f058d8791ac7bc1c64ae89 18-Apr-2012 John Scipione <jscipione@gmail.com>

Rename "deskbar_rt_" back to "Status".

Siarzhuk Zharski informed me that KeymapSwitcher depends on this
view being named "Status" to work, so, renamed it back to that.

Instead of sending the message by name to the replicant tray view,
since the view name "Status" is not very unique and I fear that
there could be collisions, resend the message to BarView which
then passes the message on to the replicant tray which updates the
clock and reflows the icons.

This being said, KeymapSwitcher should probably not send a message
hardcoded to the name of the replicant tray view and instead send
the message to Deskbar and allow it to pass the message on to the
appropriate view.


# f5be13ecc7503a48a32b87995a78a2d0247ab401 17-Apr-2012 John Scipione <jscipione@gmail.com>

Remove time zone clock option and Time preferences button.

* Nobody thought time zone was a particularly useful option to have
in the clock.
* You can still open Time preferences from Deskbar by right clicking
on the clock, but, since there isn't a big connection between
the clock settings in Deskbar and Time preferences anymore
this button isn't needed here.
* There are still 2 clock options, Show seconds, and Show day of week
and day of week is localized as well so this wasn't a total wash.


# 0d2ac94c4df1061e1f2b835703f018553c929744 17-Apr-2012 John Scipione <jscipione@gmail.com>

Rename the TReplicantTray view "_deskbar_rt_"

instead of "_replicant_tray_". That follows the convention a bit
better and is less likely to cause name collisions. While I am at
it put the BView line below the : as is our usual convention.


# 30a5580244604caad54b5314c1a23d88c1d58fa8 17-Apr-2012 John Scipione <jscipione@gmail.com>

Remove Time Interval radio buttons from Deskbar Prefs.

* 12/24 hour clock is set from the Locale prefs only.
* Redirect B_LOCALE_CHANGED message to the replicant tray instead
of the time view and tell the replicant tray to update the time
instead of updating the time view directly. This is because there
was a bug where if the AM/PM marker grew the time view over the
replicant tray icons when switching from 24 hour to 12 hour clock
it wouldn't reflow the replicant tray icons like it should.
* Rename the replicant tray view from "Status" to "_replicant_tray_"
because BarApp uses FindView() to get the view by name and I'm
assuming that this method can have conflicts. Following the example
of the "_deskbar_tv_" naming convention.


# 546208a53940a26c6379c48a7854ade1a8250fc5 16-Apr-2012 Oliver Tappe <zooey@hirschkaefer.de>

More catalog-related cleanup.

* rename B_TRANSLATE_CONTEXT to B_TRANSLATION_CONTEXT and
B_TRANSLATE_WITH_CONTEXT to B_TRANSLATE_CONTEXT, squashing a TODO
* adjust all uses of both macros in Haiku's source tree
* use correct header guard for collecting/Catalog.h

The renamed macros require adjustments to all external applications
using catalogs.


# 3cf2d117e570356c8487e67a0e38b09b1639ab6c 14-Apr-2012 John Scipione <jscipione@gmail.com>

Change Time Format Options in Deskbar preferences.

Added two new methods to the Locale Kit in order to create a custom time
formats from a format string. One method is outputs into a char* array,
the other into a BString() and you can set the timezone.

These methods should be cleaned up, we only need 2, one to get
the time in a predefined style, the other to get a custom time format.
Also should probably do the same for dates and datetimes. But I'll let
this go for now.

I added myself to the Locale.cpp file. I retained the copyright instead
of assigning it to Haiku, Inc. because the file is under the OpenBeOS
license and I don't know what the concequences of copyright sharing are
for that license, unlike MIT.

These new methods are used to generate custom time formats in Deskbar.
Instead of using a set of Radio Buttons to choose between the predefined
time options I build my own by creating a format string and passing it
to the Locale Kit. The format string is generated from 3 checkboxes,
show seconds, show day of week, and show time zone. You can mix and match
between them choose any that you like. By default they are all off.

There are 3 new deskbar settings associated with these new options:
showSeconds, showDayOfWeek, and showTimeZone. timeFormat has gone away.

The time format string gets cached and updated only when Update() gets called
on the TimeView class.

In order to fit all the options in (there is 1 more than before) I had to
reduce the font size of the clock to 11pt when all options are turned on in
12 hour mode. For those with no imagination it looks like this:

http://imagebin.org/208162

Renamed "Open time preferences..." menuitem to "Time preferences...".
Renamed "Show Time" and "Hide Time" to "Show time" and "Hide time".

Other changes include refactoring the header files a bit. There were a lot
of headers included by header files uneccessarily. For instance BarWindow.h
now only includes <Window.h> and <Deskbar.h>. This change is mainly to
to speed up the compile time since it takes a while right now.

I copy the fBarView pointer from BarWindow in the BarApp constructor and then
use that throughout the file rather than getting the pointer from the window
each time by calling BarView(). BarView() is still available in the header
for other classes though.

I moved some message constants around since it was getting a bit jumbled.
Most of the messages related to settings are in PreferenceWindow.h.
fChangeState is moved to BarView.h since that is where the ChangeState()
function is and BarView.cpp uses that constant.

The time interval and format constants are in TimeView.h.

Make some methods public in their respective classes where it made sense.
The preference window methods to update dependent items are public, that
might get called from BarWindow when a message gets received at some point.

Also made ShowHideTime() and Time() public in StatusView.h. These methods
activate showing and hiding the clock and return the fTime clock object.
No reason they should be private.

I reindented the StatusView.h and PreferenceWindow.h headers to the standard
style. Question here, are the public: protected: and private: lines inside
of classes suppose to get indented 1 tab or not? I've seen both, the style
guide says no indent but 1 indent seems reasonable and looks pretty good.

Style fixes here and there. That's enough for one commit I think.


# 2a2dc95aa1f99080b0589186770f10ead41621a5 09-Apr-2012 John Scipione <jscipione@gmail.com>

Update timeView popup menu


# 573f748c5f8fb7ed75beb0ceb7eb097d3ab0c038 09-Apr-2012 John Scipione <jscipione@gmail.com>

Add 12/24 hour and time formatting options to Deskbar.

* 12/24 hour settings come from and alter BLocale
* Time formats are short, medium, long. Short is default. Come from
Locale kit.
* Don't delete fClock (now fTime) when hiding, just hide and show
the view.
* BarView now has nothing to do with setting or keeping track of
time settings. This is all handled in TTimeView. TReplicantTray
is responsible for updating the replicant tray and doing showing
and hiding. TTimeView is responsible for drawing according to the
clock settings.
* Remove fShowInterval and fShowSeconds from BarView
* Remove ampmMode setting and replace it with timeFormat.
* Reset targets in DeskbarMenu.

Originally I was trying to solve a bug where the TTimeView
was relying on the Deskbar settings too much. The settings
should only by set on quit and accessed on startup or a crash can
cause Deskbar to be in an unusual state.

I realize that the timezone is not very helpful. I'd like to provide
the day of week in a short format instead, i.e. Wed for Wednesday or
similar based on your locale. Blame the Locale Kit for now allowing
me to be able to use a custom TimeFormat. Once a custom TimeFormats
becomes possible from the Locale Kit Deskbar can be updated to use
them.


# 2ce9bab873e024bb515a95faf384df62b88bbb8c 27-Jun-2011 John Scipione <jscipione@gmail.com>

Fisher Price Deskbar icon support

Implements the feature described in #7132
Also fixes #2387 (menu items too big in horizontal mode when font size > 12)

Adds a slider to Deskbar preferences which allows you to resize your Deskbar
team icons from 16x16 to 96x96. The default is 16x16. This works both in vertical
and horizontal mode.

In vertical mode when icon sizes are greater than 32x32 the label moves
underneath the icon where there is more room. In horizontal mode the width of
the menu item increases to make room for the icon while keeping room for the
label the same. As many applications are added the labels are truncated as usual.

This patch also adds a checkbox to the Deskbar preferences to hide application
names to make more room for icons if you wish. It doesn't make a lot of sense
at 16x16 but does >32x32.

If the kResizeTeamIcons message gets dropped, don't resize to current value,
just do nothing. This fixes a bug where sometimes the slider wouldn't trigger
a resize. Fix a spelling error in a comment. Take out a redundant paren pair.


# 4bbb27e3ccf0b1e38ee4a63ca9ec765e167a72bd 12-Feb-2012 Jerome Duval <jerome.duval@gmail.com>

More 'GCC4.6 variable set but not used' fixes.


# 323b65468e5836bb27a5e373b14027d902349437 21-Nov-2011 Oliver Tappe <zooey@hirschkaefer.de>

Filtered flat import of Oliver's svn package management branch

Bring the changes that aren't package management related and the ones
that are but don't take effect as long as they are ignored by the build
system into the master.

Summary of changes:
* Introduce private header <directories.h> with constants for a good
deal of paths that should usually be retrieved via find_directory().
* Replace hard-coded paths by using find_directory() or the
<directories.h> constants (e.g. in drivers and the kernel).
* Add find_directory() constants needed for package management.
* Add __HAIKU_ABI_NAME and B_HAIKU_ABI_NAME macros.
* src/apps/deskbar: BeMenu.* -> DeskbarMenu.*,
DeskBarUtils.* -> DeskbarUtils.*
* Change deskbar menu settings directory from ~/config/be to
~/config/settings/deskbar.
* Other smaller cleanups, changes, and fixes.


# 8aab28f19b8361c9eebdd81c7ae645ba3d10096e 30-Oct-2011 Rene Gollent <anevilyak@gmail.com>

And more fixes.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@43013 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 7625ce51505cad2b0b3b51cbc63ac0b205f2a9da 30-Oct-2011 Rene Gollent <anevilyak@gmail.com>

Factor out an _SaveSettings() call to write back settings. Use it to commit tray item changes immediately instead of at Deskbar exit.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@43009 a95241bf-73f2-0310-859d-f6bbb57e9c96


# c0ad1c9185758eff05b6947dc22f0b20f1b5f417 30-Oct-2011 Rene Gollent <anevilyak@gmail.com>

Adjust the previous change to use paths instead of entry_refs.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@43005 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 3e6ff860b4f9cd789a091250a8923023bbe0ce91 30-Oct-2011 Rene Gollent <anevilyak@gmail.com>

Rework Deskbar's tray replicant support a bit. Instead of relying on a live query
for be:deskbar_item_status in order to determine which replicants are supposed to
be living in the tray, a list of entry refs is now stored. While the former approach
was cool, it doesn't really work in either a multiuser or a package-aware world, where
executables are generally read-only. Note this means you'll lose your existing replicants
the first time you run this new revision, and need to re-add them.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@43004 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 3dfd9cb95ce45f59160d50975210bc55e3fc0709 16-Jun-2011 Oliver Tappe <zooey@hirschkaefer.de>

Flat commit of all changes from package-management branch in svn


# 9e8a970bd56e3888b93167d1ab60deef85b7a899 24-Mar-2011 Jonas Sundström <jonas@kirilla.com>

A better for the leaf logo bitmap.

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@41098 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 1ad8c760ed6f0e7e30f5f3154b0c4639a77b0a1b 06-Mar-2011 Fredrik Holmqvist <fredrik.holmqvist@gmail.com>

More style cleanup patches from John Scipione as part of #7052.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40847 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 908d7185b01b1a5a4d1fc23ed550d2c97117b06f 22-Jan-2011 Rene Gollent <anevilyak@gmail.com>

Remove unused Draw function. Fixes CID 10350.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@40264 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 9e9c8091e7ebc92a8808463b05dd4249ccb2f6d9 20-Oct-2010 Rene Gollent <anevilyak@gmail.com>

Remove the "Full Date" setting and associated madness with respect to
the deskbar's current orientation. Instead, we now always show the full
date, but as a tooltip rather than switching the timeview's display
based on a mouse click.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@39019 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 68fdcbe01d66c041edafab8ff63929132639346e 11-Aug-2010 Adrien Destugues <pulkomandy@pulkomandy.ath.cx>

CID 926 : Memory leak


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@38045 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 2f0eb7b11e9cdb428b2da5bfaac25c9998b02e03 02-Jul-2010 Adrien Destugues <pulkomandy@pulkomandy.ath.cx>

* Introduce a new method in BCountry to get the first day of week (monday or sunday)
* Localize date in deskbar properly, and use the new API to show the calendar. The "show european date" checkbox is now gone.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37344 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 3fc995d101cdc6b31f12bb35f9681f4f16b8a408 24-Jun-2010 Adrien Destugues <pulkomandy@pulkomandy.ath.cx>

* Deskbar now uses localized time from locale kit. Thus the "24 hour
clock" setting is not needed anymore.
* The locale kit now provide a less complete 'full' time format : hour
minutes seconds, I don't think anyone cares much about the "UTC + 1" or
other similar stuff.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37243 a95241bf-73f2-0310-859d-f6bbb57e9c96


# ca9acc20e8829812353a19093c3e9cfa076a06b1 21-May-2010 Axel Dörfler <axeld@pinc-software.de>

* The Deskbar will now intercept control+alt-clicks, and will start to move the
Deskbar around as other windows do (more or less), as suggested in ticket
#6029.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@36889 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 4eb0cbb044cf538f18c0d252934a5bcaa33bfd34 07-May-2010 Matt Madia <mattmadia@gmail.com>

Updated TR_CONTEXT to be B_TRANSLATE_CONTEXT, relating to #5408.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@36733 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 61863f2c44866b672437629037b377f723e288de 06-May-2010 Matt Madia <mattmadia@gmail.com>

Updated to use B_TRANSLATE* macros. relates to #5408.

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@36664 a95241bf-73f2-0310-859d-f6bbb57e9c96


# ae7a6e3a6ffcfb7ad151d684822cd0f2f5bc77af 10-Apr-2010 Adrien Destugues <pulkomandy@pulkomandy.ath.cx>

Patch by mt (ticket #5573) : localize deskbar. Thanks !


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@36117 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 71bd3ba59c06b130115c3ddd44457d8f9dd78997 30-Sep-2009 Jonas Sundström <jonas@kirilla.com>

Removing ifdefs and code for non-Haiku build targets. Partial clean-up. Enforcing the 80-char limit, renaming constants, newline at end of file.

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33377 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 290c903985a449fa86c501366b6fcddf7f55b46a 29-Sep-2009 Jonas Sundström <jonas@kirilla.com>

Partial clean-up. Asterisks and k-prefix constants.

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@33366 a95241bf-73f2-0310-859d-f6bbb57e9c96


# cb6afcb1464e92f0134232e6179215295e17bc79 21-Mar-2009 Stephan Aßmus <superstippi@gmx.de>

* Give Deskbar a refreshed and cleaner look.
* Fixed a bunch of problems in layouting the various views. (For example,
the last app menu entry is no longer one pixel too short, but there was
more...)
* Fixed Deskbar being not wide enough for the Haiku logo in certain modes.
* Enabled the mount menu. I think it's a good idea to have at a more prominent
location where new Haiku users may look for it (Gnome also has this in
the main panel).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29631 a95241bf-73f2-0310-859d-f6bbb57e9c96


# eaa9af9937ed538a6e175852bee9f22a2c20a814 12-Oct-2008 Stephan Aßmus <superstippi@gmx.de>

Never use the current menu UI color, but always the view color of any given
menu. Fixes #974.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28030 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 0bec71008b2f1f836d244b64824e0ba99ab6c391 14-Sep-2008 Stefano Ceccherini <stefano.ceccherini@gmail.com>

moved the NULL check before dereferencing the view pointer. CID 1063

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27525 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 157cd8913e6173dae21b43aef5bfd5419d4a5f68 16-Jun-2008 Alexandre Deckner <alex@zappotek.com>

- Calculating the space left for deskbar replicants was broken. The TimeView could overlap on the left. This fixes #1408
- Placement of the time text was broken. With big fonts, the text was way too low. Using text bounding box now, it looks pretty and robust too.
- Fixed the height of the time view to the replicant height. The view has a fixed height now and can never overlap deskbar at the bottom (horizontal deskbar mode) or other replicant
below.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25970 a95241bf-73f2-0310-859d-f6bbb57e9c96


# ced3755c30e6d91cb23175a888f32355401fe39d 28-Mar-2008 Axel Dörfler <axeld@pinc-software.de>

* Fixed a memory leak in Deskbar's BarWindow.cpp when adding a deskbar
replicant failed as pointed out by Mark Hellegers.
* Clarified ownership of the passed in message in TReplicantTray::AddIcon()
as well as BShelf::_AddReplicant().


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24621 a95241bf-73f2-0310-859d-f6bbb57e9c96


# f6742aab04209bd1973fb743c30c6c71578f25be 13-Jan-2008 Jérôme Duval <korli@users.berlios.de>

whitespaces => tab


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@23500 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 66eba86f4b3c2eef6462d090e93245fc60d7127b 16-May-2007 Axel Dörfler <axeld@pinc-software.de>

* Applied patch by Jonas Sundstrom: fixed the usage of B_UTF8_ELLIPSIS hopefully
everywhere in the tree.
* Added the ellipsis to "About Haiku" in Deskbar as well.
* Minor cleanup of Deskbar's StatusView.cpp


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21156 a95241bf-73f2-0310-859d-f6bbb57e9c96


# a5210ab17da5a6784a814bb69c59ba6bf5401432 11-Aug-2006 Axel Dörfler <axeld@pinc-software.de>

Imported files from OT-current:
* ExpandoMenuBar.cpp 1.18
* CalendarMenuItem.cpp 1.6
* WindowMenu.cpp 1.3
* TimeView.cpp 1.14
* StatusView.cpp 1.18
* BarWindow.cpp 1.8


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@18482 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 9c50f36ed7d1700b6bc940524b617c83b9cc9f4d 09-Mar-2006 Axel Dörfler <axeld@pinc-software.de>

Now has some error checks in TReplicantTray::AddIcon() - this fixes bug #222.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16675 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 465b54cd6505462c140f2d71e927558a3bfcd731 17-Jan-2006 Axel Dörfler <axeld@pinc-software.de>

Fixed crashing bug in the test environment on quit.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15997 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 3a6add495ca7bafe350ce071d4baaf6245647d23 03-Jan-2006 Axel Dörfler <axeld@pinc-software.de>

Enabled Deskbar add-ons. They don't work that good, but they don't crash
the Deskbar anymore. It's still disabled for the libbe_test build, though
(as it will find incompatible add-ons via queries there).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15834 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 7da062312a13b77ed1aac63bdd67c44c44ad5824 01-Jan-2006 Axel Dörfler <axeld@pinc-software.de>

Imported Deskbar from OpenTracker-current.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15774 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 7d93e66823a7669a7b1baebb5d9f6a38cdb6a4c3 06-Dec-2005 Axel Dörfler <axeld@pinc-software.de>

Added the Deskbar to the libbe_test environment - I thought I had committed this already...


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15379 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 6d01b66d300c2841dba033705f120a7f6e709696 13-Nov-2005 Axel Dörfler <axeld@pinc-software.de>

GCC 4 fixes by Ingo Weinhold.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14893 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 9c910f9e80e8d06a921d44d4e2fcf1ae02f0737d 06-Jul-2005 Stephan Aßmus <superstippi@gmx.de>

first draft of a Haiku logo for the Deskbar, link against Haiku libs when building for Haiku

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13508 a95241bf-73f2-0310-859d-f6bbb57e9c96


# 41281cf362916855e6eb9ad1d728d919863a1e81 22-May-2005 Axel Dörfler <axeld@pinc-software.de>

Added Tracker and Deskbar from OpenTracker-current to the repository.
They both build fine.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@12773 a95241bf-73f2-0310-859d-f6bbb57e9c96