History log of /haiku/headers/os/interface/Menu.h
Revision Date Author Comments
# 0a53cbb3 01-Aug-2021 John Scipione <jscipione@gmail.com>

BMenu: Add SortItems(), SwapItems() and MoveItem()

... methods which call the respective methods in BList.

These convinience methods allow you to sort a menu of menu items
via a compare function, swap two menu items, or move a menu item
to a new index. Update items layout if menu is open.

Previously there was no easy way to rearrange menu items in a menu.

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


# d9d96260 01-Jul-2020 X512 <danger_mail@list.ru>

BMenu: speed up deleting items

Fixes #16336.

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


# 8fbce873 21-Jun-2020 X512 <danger_mail@list.ru>

BMenu: implement scripting

Fixes #15540.

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


# db3a9414 06-Mar-2020 X512 <danger_mail@list.ru>

SeparatorItem: support horizontal layout

This is required for BMenuBar based toolbars.

Fixes #15785.

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


# 2e08685b 03-Mar-2020 John Scipione <jscipione@gmail.com>

BMenu: Rename FrameMoved and FrameResized variable names

No functional change. lowercase_with_underscore file names are not
in-line with Haiku's style guidelines.

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


# e10de1ec 12-Jul-2018 Ryan Leavengood <leavengood@gmail.com>

Visually align shortcuts in menus

In a menu, we use the right side both for submenu arrows and shortcuts.
As a result, when an entry has both a shortcut and a submenu, its
shortcut is not aligned with others, and this does not look so nice.

The spacing for the arrow appears only if there is a submenu in any of
the items in the parent menu.

Change-Id: If91fdcdad36abb0141fb05d1f59141f89540c1db
Reviewed-on: https://review.haiku-os.org/c/haiku/+/355
Reviewed-by: Adrien Destugues <pulkomandy@gmail.com>
Reviewed-by: Ryan Leavengood <leavengood@gmail.com>


# 5dd66afb 09-Dec-2018 Augustin Cavalier <waddlesplash@gmail.com>

headers: Remove some extra semicolons.

Spotted by Clang.


# dcecaf60 19-Apr-2016 John Scipione <jscipione@gmail.com>

BMenu: Remove _ from protected method _DrawItems


# 61dfdec4 19-Apr-2016 John Scipione <jscipione@gmail.com>

BMenu and friends: style fixes

BMenuBar: style fix: msg => message

MenuPrivate: style fixes

MenuItem: 80 char limit style fix

MenuBar: tiny style fix

Menu: tiny style fix, indentation

Menu: Small refactor

Implement _SetIgnoreHidden() in header
Change on to ignoreHidden
Change on in _SetStickyMode to sticky

_BMCItem_: tiny whitespace style fix

Menu: style fixes, rename msgr => messenger

BMenu: style fix, pointer != NULL

BMenu::Archive rename ret to status

Also check pointer against NULL explicitly

BMenuItem style fixes: rename abbreviation, pointer style


# 64182ccb 20-Feb-2015 John Scipione <jscipione@gmail.com>

Menu and Deskbar: Remove _SetMenuLayout() method

and remove TExpandoMenuBar as a friend class to BMenu hack.

In Deskbar, call the newly added MenuPrivate::SetLayout() method instead.

This is a much cleaner way to implement this, thanks Stefano Ceccherini
for the tip!


# 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


# 9a9ebda4 05-Nov-2013 John Scipione <jscipione@gmail.com>

BMenu: Some style fixes related to docs

Mostly just making the variable names match between the
header and source.

No functional change intended.


# 4385f739 25-Aug-2013 John Scipione <jscipione@gmail.com>

Revert "Menu: check numBytes == 1 on KeyDown"

This reverts commit 44dc533861d5e6c8c80f3ed89d6dfb4b8a30c724.


# 44dc5338 24-Aug-2013 John Scipione <jscipione@gmail.com>

Menu: check numBytes == 1 on KeyDown


# d5c51ba6 06-May-2013 John Scipione <jscipione@gmail.com>

Update header comments


# d97b4340 06-May-2013 John Scipione <jscipione@gmail.com>

Style fixes to BMenu and related classes.


# 50120176 13-Apr-2013 Stefano Ceccherini <stefano.ceccherini@gmail.com>

In case the BMenu is inside a BMenuField, override the items width to
span over the BMenuField's width. Note that if the BMenu is already
wider, we don't shrink it, at least for now.
Fixes #5015.


# 49126a0e 03-Jan-2013 Tri-Edge AI <triedgeai@gmail.com>

Added ResourceEdit and modified BColumnListView, BRow and BMenu.

Signed-off-by: Matt Madia <mattmadia@gmail.com>


# 29ef6eb5 08-Dec-2011 Alex Wilson <yourpalal2@gmail.com>

Fix BMenu behaviour/ABI by reinstating BMenu::InvalidateLayout()

It turns out,this is an old method added by Be, and is not really related to BView::InvalidateLayout(bool). In fact BMenu::InvalidateLayout() does something separate, but related to the BView method. I was wrong to delete this method, since it needs to have action taken each time it is called, so moving these actions into LayoutInvalidated() only worked sometimes (when the BView was considered to have a valid layout).

I have added a comment for future hackers so that they don't delete this method.


# 8abe72fb 06-Nov-2011 John Scipione <jscipione@gmail.com>

Changes the menu key bitmap from CTL to CTRL and SHFT to SHIFT.

This is coming from but does not close #7967

Adds a new (currently unused) Menu key bitmap.

Instead of having a single AltAsCommandKey() method the menus now
show the correct bitmap when you switch between your control,
windows/option, and alt/command keys. This is really not flushed
out yet since it only works when you switch those keys and not
other combinations like say switching the control and caps lock
keys but it is a step in the right direction.

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


# 61eb1f1d 22-Oct-2011 Alex Wilson <yourpalal2@gmail.com>

Replace remaining InvalidateLayout()'s with LayoutInvalidated(). Also do a bit of cleanup/move methods around.


# 8460e00c 30-Jun-2010 Stefano Ceccherini <stefano.ceccherini@gmail.com>

_AddDynamicItems didn't pass the keyDown parameter to _OkToProceed (noticed
by Ziusudra).
Also removed leftover fDynamicItemsAdded.


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


# 780b76dc 25-Jun-2010 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Applied patch by Ziusudra in ticket #4930 to avoid a deadlock when
navigating the menus via keyboard.
I also factored some code into functions, in particular the code to
add the dynamic items. Also keep track if the dynamic items have been added
or not (using a new boolean class member).
I tested for regressions but couldn't find any.



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


# 76d5e064 19-Apr-2010 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Partially revert r35962, since the cure is worse than the sickness.
Should fix #5717 (but probably reopens #3103)


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


# bb2576f0 26-Mar-2010 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Removed some code which was added to fix a crash, which was obviously fixed
correctly later in another way.
Removing this code should also fix ticket #3103.
Use the width of the Bitmaps instead of fixed values.


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


# 89208c77 27-Aug-2009 Stephan Aßmus <superstippi@gmx.de>

Finished unifying the Interface Kit headers:
* Fixed copyrights (puncuation and capitalization, removed authors from
headers)
* Updated indentation style
* Unified pointer/reference style
* Re-ordered some methods for better grouping where it could be done
(abd adopted source accordingly)
* Small coding style fixes here and there

No functional change intended.

+alphabranch


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


# 13e50c47 25-Aug-2009 Stephan Aßmus <superstippi@gmx.de>

* Indentation cleanup.
* 80 chars limit
* Copyright fixed.
* Better grouping of methods.

+alphabranch


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


# 2f86ba45 15-Feb-2009 Stephan Aßmus <superstippi@gmx.de>

Implemented a new look for the Haiku interface controls. It was
overheard that they looked too ninety-ish.
TODO: The code behind this is work in progress. The basic idea
is to extract all drawing code into a new class BControlLook,
of which there is a global instance be_control_look, instantiated
in InterfaceDefs.cpp. At the moment, all the old drawing code is
still there, and the usage of be_control_look is inside if-bodies
checking the instance against NULL. In another words, by not
instanitating be_control_look, you can revert back to the old look.
BControlLook's job is to provide reusable methods for drawing
certain types of frames, backgrounds and labels, so that application
developers can make controls that re-use the same drawing code
as built-in controls and adopt to changes made there. I have added
the notion of "borders". Each of the frame drawing methods can be
made to draw certain borders only, which is supposed to help when
controls shall visually attach. This feature is not fully explored
at all ATM.
TODO: Update BColumnListView header view and BStringItem text
spacing. Update other apps where it makes sense to use BControlLook.
For the moment, only Tracker and LaunchBox are updated. More...
NOTE: The new look is not very radically different, so that existing
apps do not immediately look too ugly or out of place.


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


# 18af47f5 11-Apr-2008 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Renamed some private methods to have the underline prefix, now that
BWindow doesn't call them directly anymore.


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


# 10f4d067 11-Apr-2008 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Added a class MenuPrivate to handle access to private BMenu methods.
BMenuItem and BWindow are no longer friends of BMenu, but use this class
instead.


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


# dc93a6b1 01-Mar-2008 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Applied patch by Denis Washington which implements "diagonal mouse
support" for menus (see ticket #284). Thanks a lot!


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


# d01f3af1 15-Jan-2008 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Menu tracking now ignores mouse movements if they are too fast
(suggested by stippi). The movement threshold will be subject to
changes, as I only tested on vmware and it's probably too high.


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


# 6e11b3f9 10-Jan-2008 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Close the whole menu hierarchy when invoking an item via keyboard. Added
a TODO comment.


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


# 9e64a7ed 03-Jan-2008 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Fixed problem with some popup menus (check ticket #1679)
Moved GetMouse() calls near the check for exit conditions.
Reorganized a bit the code, and hopefully simplified it in some places.


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


# afd60167 07-Nov-2007 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Reverted r21395. Many people didn't like the change, and after all I too
think it wasn't a really good idea. The alignment of shortcut
charachters and submenu symbols could use some more work, though.


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


# f6e4cbb9 15-Oct-2007 Axel Dörfler <axeld@pinc-software.de>

* Rewrote BeBuild.h which had "a few" consequences (got rid of all those class
definitions).
* Minor cleanup here and there.


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


# 083de48a 30-Sep-2007 Axel Dörfler <axeld@pinc-software.de>

* Rewrote the trigger selection mechanism: it now searches for uppercase
characters first, and then falls back to take everything. fTrigger is now
uint32 and works with all unicode characters; unlike in BeOS, the
MenuTriggerTest application now works correctly in Haiku.
* fTriggerIndex is now a character position, not a byte position of the label;
this allows BMenuItem::DrawContent() to draw the trigger at the correct
position, even if there are multi-byte UTF-8 characters.
* The above fixed bug #1506; triggers are still not working, though.
* Rewrote Menu.h header.
* Renamed all private methods (that are not called by BWindow) to have the
underscore prefix.
* Removed unused methods.
* Some minor cleanup.


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


# 4fa167e1 16-Jun-2007 Ingo Weinhold <ingo_weinhold@gmx.de>

* Added layout-related methods (Min/Max/PreferredSize(), InvalidateLayout(),
DoLayout()).
* Don't resize the view and the window anymore, when fResizeToFit is not
set.


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


# 37ddfd14 11-Jun-2007 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Shortcut characters are aligned even if there's a submenu, like
discussed in the thread in haiku-development. I added a fSubmenus member
to BMenu, to be able to tell from BMenuItem if there are other items
with a submenu (maintained in BMenuItem::SetSuper()). If you don't like
this solution, let's just revert.


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


# fbe2f227 12-Jun-2007 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Some work on menu layouts:
- Menus are generally a bit wider (BeIDE ones didn't look nice)
- The modifiers bitmap are drawn more centered vertically
- Splitted BMenu::ComputeLayout() into three methods
- Various minor changes.
The menuitems still don't look nice with bigger font sizes, but we'll
try to fix this...


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


# 68fb2668 16-Jan-2007 Stefano Ceccherini <stefano.ceccherini@gmail.com>

get rid of the now useless trackTime parameter

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


# 8b91b40a 12-Dec-2006 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Try to split the tracking function into smaller ones. Please bear with
me for the absolutely UGLY names. Also, if someone can suggest better
ones...
I seem not to have introduced any new bug.


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


# 2628e60c 22-Nov-2006 Axel Dörfler <axeld@pinc-software.de>

Moved BMenuWindow, BMenuFrame, and BMenuScroller into the BPrivate namespace.


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


# fe23fb66 29-Oct-2006 Axel Dörfler <axeld@pinc-software.de>

* Renamed private BMenu::SelectItem() to _SelectItem(), and made its arguments a bit more sane.
* Fixed two GCC 4 warnings.


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


# e061d1ba 27-May-2006 Stefano Ceccherini <stefano.ceccherini@gmail.com>

an eventually opened menu is now quit in BWindow::DispatchMessage()
before sending a B_MOUSE_DOWN message to any other view. This fixes bug
594 for real and another bug in BMenuBar. BMenuBar tracking will also
be simplified a bit because of this. Install items to a NULL window on
Show() as does R5 (although I don't know why yet).


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


# 925479d7 09-May-2006 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Added a new method RelayoutIfNeeded(), which does the real Layout invalidation, it's called by menubar and menu. This fixes the menufields not being resized. Note that a problem still remains, will be fixed shortly (hopefully)

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


# 2191a09a 11-Apr-2006 Stefano Ceccherini <stefano.ceccherini@gmail.com>

big improvements for menus. The tracking is in many ways on par with r5, except for a few things, like diagonal movement and that grandparent bug

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


# 65b4fb8a 20-Mar-2006 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Check if alt is the command key on BMenu::AttachedToWindow instead of doing it for every BMenuItem::Draw()

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


# 30fd5147 14-May-2003 haydentech <haydentech@nowhere.fake>

Minor header-related changes


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


# d734a8ce 23-Oct-2002 beveloper <beveloper@nowhere.fake>

some header files to be R5 compatible


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


# 64182ccb20f1586f102445dece20cae2af79dc97 20-Feb-2015 John Scipione <jscipione@gmail.com>

Menu and Deskbar: Remove _SetMenuLayout() method

and remove TExpandoMenuBar as a friend class to BMenu hack.

In Deskbar, call the newly added MenuPrivate::SetLayout() method instead.

This is a much cleaner way to implement this, thanks Stefano Ceccherini
for the tip!


# 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


# 9a9ebda459d7df4925d516f9f638bdddd7140a74 05-Nov-2013 John Scipione <jscipione@gmail.com>

BMenu: Some style fixes related to docs

Mostly just making the variable names match between the
header and source.

No functional change intended.


# 4385f739962c852de851cf28145d96d001f48b33 25-Aug-2013 John Scipione <jscipione@gmail.com>

Revert "Menu: check numBytes == 1 on KeyDown"

This reverts commit 44dc533861d5e6c8c80f3ed89d6dfb4b8a30c724.


# 44dc533861d5e6c8c80f3ed89d6dfb4b8a30c724 24-Aug-2013 John Scipione <jscipione@gmail.com>

Menu: check numBytes == 1 on KeyDown


# d5c51ba6768d7ffd5bb983af9ab97b6372eae134 06-May-2013 John Scipione <jscipione@gmail.com>

Update header comments


# d97b43406038a6398e097939b71908ff490c64ff 06-May-2013 John Scipione <jscipione@gmail.com>

Style fixes to BMenu and related classes.


# 501201761ba2edad1c4a9cc96e79f011978c7463 13-Apr-2013 Stefano Ceccherini <stefano.ceccherini@gmail.com>

In case the BMenu is inside a BMenuField, override the items width to
span over the BMenuField's width. Note that if the BMenu is already
wider, we don't shrink it, at least for now.
Fixes #5015.


# 49126a0e9b1b7a8a148dab17d0c3aa4eb6e798ed 03-Jan-2013 Tri-Edge AI <triedgeai@gmail.com>

Added ResourceEdit and modified BColumnListView, BRow and BMenu.

Signed-off-by: Matt Madia <mattmadia@gmail.com>


# 29ef6eb52d019b8b209958eac8f38fd4553612b2 08-Dec-2011 Alex Wilson <yourpalal2@gmail.com>

Fix BMenu behaviour/ABI by reinstating BMenu::InvalidateLayout()

It turns out,this is an old method added by Be, and is not really related to BView::InvalidateLayout(bool). In fact BMenu::InvalidateLayout() does something separate, but related to the BView method. I was wrong to delete this method, since it needs to have action taken each time it is called, so moving these actions into LayoutInvalidated() only worked sometimes (when the BView was considered to have a valid layout).

I have added a comment for future hackers so that they don't delete this method.


# 8abe72fb66b36e98eedc463c85cf752651280386 06-Nov-2011 John Scipione <jscipione@gmail.com>

Changes the menu key bitmap from CTL to CTRL and SHFT to SHIFT.

This is coming from but does not close #7967

Adds a new (currently unused) Menu key bitmap.

Instead of having a single AltAsCommandKey() method the menus now
show the correct bitmap when you switch between your control,
windows/option, and alt/command keys. This is really not flushed
out yet since it only works when you switch those keys and not
other combinations like say switching the control and caps lock
keys but it is a step in the right direction.

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


# 61eb1f1d19eed26b6138b0701612e8eb31bb1d86 22-Oct-2011 Alex Wilson <yourpalal2@gmail.com>

Replace remaining InvalidateLayout()'s with LayoutInvalidated(). Also do a bit of cleanup/move methods around.


# 8460e00cc0d9d43fad4eee52706968dc21b3a2cc 30-Jun-2010 Stefano Ceccherini <stefano.ceccherini@gmail.com>

_AddDynamicItems didn't pass the keyDown parameter to _OkToProceed (noticed
by Ziusudra).
Also removed leftover fDynamicItemsAdded.


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


# 780b76dcf90c60169c7513ebf5767a25e816329b 25-Jun-2010 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Applied patch by Ziusudra in ticket #4930 to avoid a deadlock when
navigating the menus via keyboard.
I also factored some code into functions, in particular the code to
add the dynamic items. Also keep track if the dynamic items have been added
or not (using a new boolean class member).
I tested for regressions but couldn't find any.



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


# 76d5e0641b4b4c162d0719305de3b9a2a49c7d02 19-Apr-2010 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Partially revert r35962, since the cure is worse than the sickness.
Should fix #5717 (but probably reopens #3103)


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


# bb2576f0c8fe02ae30008bf8190121cb4ad15b88 26-Mar-2010 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Removed some code which was added to fix a crash, which was obviously fixed
correctly later in another way.
Removing this code should also fix ticket #3103.
Use the width of the Bitmaps instead of fixed values.


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


# 89208c77f10235d43fda0c7b3fd6751db02cc12c 27-Aug-2009 Stephan Aßmus <superstippi@gmx.de>

Finished unifying the Interface Kit headers:
* Fixed copyrights (puncuation and capitalization, removed authors from
headers)
* Updated indentation style
* Unified pointer/reference style
* Re-ordered some methods for better grouping where it could be done
(abd adopted source accordingly)
* Small coding style fixes here and there

No functional change intended.

+alphabranch


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


# 13e50c47a24ba560619b0a976e053c37690af984 25-Aug-2009 Stephan Aßmus <superstippi@gmx.de>

* Indentation cleanup.
* 80 chars limit
* Copyright fixed.
* Better grouping of methods.

+alphabranch


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


# 2f86ba45579bdc9648b232175f87edc62ab71b54 15-Feb-2009 Stephan Aßmus <superstippi@gmx.de>

Implemented a new look for the Haiku interface controls. It was
overheard that they looked too ninety-ish.
TODO: The code behind this is work in progress. The basic idea
is to extract all drawing code into a new class BControlLook,
of which there is a global instance be_control_look, instantiated
in InterfaceDefs.cpp. At the moment, all the old drawing code is
still there, and the usage of be_control_look is inside if-bodies
checking the instance against NULL. In another words, by not
instanitating be_control_look, you can revert back to the old look.
BControlLook's job is to provide reusable methods for drawing
certain types of frames, backgrounds and labels, so that application
developers can make controls that re-use the same drawing code
as built-in controls and adopt to changes made there. I have added
the notion of "borders". Each of the frame drawing methods can be
made to draw certain borders only, which is supposed to help when
controls shall visually attach. This feature is not fully explored
at all ATM.
TODO: Update BColumnListView header view and BStringItem text
spacing. Update other apps where it makes sense to use BControlLook.
For the moment, only Tracker and LaunchBox are updated. More...
NOTE: The new look is not very radically different, so that existing
apps do not immediately look too ugly or out of place.


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


# 18af47f5c48bfd21e0f51562a643eb28c8b23879 11-Apr-2008 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Renamed some private methods to have the underline prefix, now that
BWindow doesn't call them directly anymore.


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


# 10f4d0679a8df9f72c2a295b2f2ac80ea776538b 11-Apr-2008 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Added a class MenuPrivate to handle access to private BMenu methods.
BMenuItem and BWindow are no longer friends of BMenu, but use this class
instead.


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


# dc93a6b1ee8c9c398617fd53dd9fbda3572a76e4 01-Mar-2008 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Applied patch by Denis Washington which implements "diagonal mouse
support" for menus (see ticket #284). Thanks a lot!


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


# d01f3af185a87ddb6f2b71a0609fc4c0869ad846 15-Jan-2008 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Menu tracking now ignores mouse movements if they are too fast
(suggested by stippi). The movement threshold will be subject to
changes, as I only tested on vmware and it's probably too high.


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


# 6e11b3f991eb4594914ae0a40b9b52e5887a775f 10-Jan-2008 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Close the whole menu hierarchy when invoking an item via keyboard. Added
a TODO comment.


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


# 9e64a7ed1ba6e91718aeae9a5a32c74ba9ca5421 03-Jan-2008 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Fixed problem with some popup menus (check ticket #1679)
Moved GetMouse() calls near the check for exit conditions.
Reorganized a bit the code, and hopefully simplified it in some places.


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


# afd60167e36d877d194f82b91069763ec2e0a7b8 07-Nov-2007 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Reverted r21395. Many people didn't like the change, and after all I too
think it wasn't a really good idea. The alignment of shortcut
charachters and submenu symbols could use some more work, though.


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


# f6e4cbb95290a74b33d012600438b84742b0e572 15-Oct-2007 Axel Dörfler <axeld@pinc-software.de>

* Rewrote BeBuild.h which had "a few" consequences (got rid of all those class
definitions).
* Minor cleanup here and there.


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


# 083de48a4bf9a88273bc1aae47da41a97fed22d2 30-Sep-2007 Axel Dörfler <axeld@pinc-software.de>

* Rewrote the trigger selection mechanism: it now searches for uppercase
characters first, and then falls back to take everything. fTrigger is now
uint32 and works with all unicode characters; unlike in BeOS, the
MenuTriggerTest application now works correctly in Haiku.
* fTriggerIndex is now a character position, not a byte position of the label;
this allows BMenuItem::DrawContent() to draw the trigger at the correct
position, even if there are multi-byte UTF-8 characters.
* The above fixed bug #1506; triggers are still not working, though.
* Rewrote Menu.h header.
* Renamed all private methods (that are not called by BWindow) to have the
underscore prefix.
* Removed unused methods.
* Some minor cleanup.


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


# 4fa167e12d1c7feb2ac0cada5a3062d7d0cdc771 16-Jun-2007 Ingo Weinhold <ingo_weinhold@gmx.de>

* Added layout-related methods (Min/Max/PreferredSize(), InvalidateLayout(),
DoLayout()).
* Don't resize the view and the window anymore, when fResizeToFit is not
set.


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


# 37ddfd14aba3fe42b0d034759c9ae53d8f984ce6 11-Jun-2007 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Shortcut characters are aligned even if there's a submenu, like
discussed in the thread in haiku-development. I added a fSubmenus member
to BMenu, to be able to tell from BMenuItem if there are other items
with a submenu (maintained in BMenuItem::SetSuper()). If you don't like
this solution, let's just revert.


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


# fbe2f227cab65d4a1d972fd0bc2ed08681985bc2 12-Jun-2007 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Some work on menu layouts:
- Menus are generally a bit wider (BeIDE ones didn't look nice)
- The modifiers bitmap are drawn more centered vertically
- Splitted BMenu::ComputeLayout() into three methods
- Various minor changes.
The menuitems still don't look nice with bigger font sizes, but we'll
try to fix this...


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


# 68fb266820911697f0f32ac91fbca0eefbd6230a 16-Jan-2007 Stefano Ceccherini <stefano.ceccherini@gmail.com>

get rid of the now useless trackTime parameter

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


# 8b91b40ae6098918aeea3c645b53032f8f6a9c9a 12-Dec-2006 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Try to split the tracking function into smaller ones. Please bear with
me for the absolutely UGLY names. Also, if someone can suggest better
ones...
I seem not to have introduced any new bug.


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


# 2628e60cbca2ed49bf7d5704f99eb72bec7e249f 22-Nov-2006 Axel Dörfler <axeld@pinc-software.de>

Moved BMenuWindow, BMenuFrame, and BMenuScroller into the BPrivate namespace.


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


# fe23fb6699f41536bf1990fcdca05c8a72930383 29-Oct-2006 Axel Dörfler <axeld@pinc-software.de>

* Renamed private BMenu::SelectItem() to _SelectItem(), and made its arguments a bit more sane.
* Fixed two GCC 4 warnings.


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


# e061d1bae5349fbb420946e44b9c6594786e3f6d 27-May-2006 Stefano Ceccherini <stefano.ceccherini@gmail.com>

an eventually opened menu is now quit in BWindow::DispatchMessage()
before sending a B_MOUSE_DOWN message to any other view. This fixes bug
594 for real and another bug in BMenuBar. BMenuBar tracking will also
be simplified a bit because of this. Install items to a NULL window on
Show() as does R5 (although I don't know why yet).


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


# 925479d7b37c9182934fcd1e1b88a6ac641273c2 09-May-2006 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Added a new method RelayoutIfNeeded(), which does the real Layout invalidation, it's called by menubar and menu. This fixes the menufields not being resized. Note that a problem still remains, will be fixed shortly (hopefully)

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


# 2191a09a931d0c5ababb73c00ea78d3e40d58c17 11-Apr-2006 Stefano Ceccherini <stefano.ceccherini@gmail.com>

big improvements for menus. The tracking is in many ways on par with r5, except for a few things, like diagonal movement and that grandparent bug

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


# 65b4fb8ab1cc75ce5fee62cb5f6963fdd8c4c7d4 20-Mar-2006 Stefano Ceccherini <stefano.ceccherini@gmail.com>

Check if alt is the command key on BMenu::AttachedToWindow instead of doing it for every BMenuItem::Draw()

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


# 30fd51473f390b92d40b3a3c83b25e2d4a042f08 14-May-2003 haydentech <haydentech@nowhere.fake>

Minor header-related changes


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


# d734a8ce5a83e48e17a2d0d6635090d48c5ad161 23-Oct-2002 beveloper <beveloper@nowhere.fake>

some header files to be R5 compatible


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