haiku/headers/private/interface/MenuPrivate.h
John Scipione 8abe72fb66 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
2011-11-07 01:46:42 +00:00

89 lines
1.8 KiB
C++

/*
* Copyright 2006-2011, Haiku, Inc.
* Distributed under the terms of the MIT License.
*
* Authors:
* Stefano Ceccherini (stefano.ceccherini@gmail.com)
*/
#ifndef __MENU_PRIVATE_H
#define __MENU_PRIVATE_H
#include <Menu.h>
enum menu_states {
MENU_STATE_TRACKING = 0,
MENU_STATE_TRACKING_SUBMENU = 1,
MENU_STATE_KEY_TO_SUBMENU = 2,
MENU_STATE_KEY_LEAVE_SUBMENU = 3,
MENU_STATE_CLOSED = 5
};
class BBitmap;
class BMenu;
class BWindow;
namespace BPrivate {
extern const char *kEmptyMenuLabel;
class MenuPrivate {
public:
MenuPrivate(BMenu *menu);
menu_layout Layout() const;
void ItemMarked(BMenuItem *item);
void CacheFontInfo();
float FontHeight() const;
float Ascent() const;
BRect Padding() const;
void GetItemMargins(float *, float *, float *, float *) const;
int State(BMenuItem **item = NULL) const;
void Install(BWindow *window);
void Uninstall();
void SetSuper(BMenu *menu);
void SetSuperItem(BMenuItem *item);
void InvokeItem(BMenuItem *item, bool now = false);
void QuitTracking(bool thisMenuOnly = true);
static status_t CreateBitmaps();
static void DeleteBitmaps();
static const BBitmap *MenuItemShift();
static const BBitmap *MenuItemControl();
static const BBitmap *MenuItemOption();
static const BBitmap *MenuItemCommand();
static const BBitmap *MenuItemMenu();
private:
BMenu *fMenu;
static BBitmap *sMenuItemShift;
static BBitmap *sMenuItemControl;
static BBitmap *sMenuItemOption;
static BBitmap *sMenuItemAlt;
static BBitmap *sMenuItemMenu;
};
};
// Note: since sqrt is slow, we don't use it and return the square of the distance
#define square(x) ((x) * (x))
static inline float
point_distance(const BPoint &pointA, const BPoint &pointB)
{
return square(pointA.x - pointB.x) + square(pointA.y - pointB.y);
}
#undef square
#endif // __MENU_PRIVATE_H