Commit Graph
172 Commits
Author SHA1 Message Date
Stefano Ceccherini 423e822abe Only enlarge the menus if there's a submenu symbol (regression). Fixes
bug #1647.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@23018 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-11-28 22:19:24 +00:00
Stefano Ceccherini c053b4a9f8 Moved call to _DeleteMenuWindow() to a better place
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22963 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-11-20 12:58:50 +00:00
Axel Dörfler 82a54995b5 * Fixed _ComputeColumnLayout() optimization introduced in r22658: it actually
never worked correctly for any case which was very visible in Tracker (and
  especially so if you had "sorting apps" turned on).
* Removed superfluous white space at the end of lines.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22850 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-11-07 14:24:09 +00:00
Stefano Ceccherini afd60167e3 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
2007-11-07 09:38:55 +00:00
Stefano Ceccherini 795a2888e7 Rewrote PopUpMenu.h and MenuBar.h. Adjusted source files accordingly.
Added license to SeparatorItem.h


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22759 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-10-29 10:40:16 +00:00
Stefano Ceccherini 7bd24def80 At least for the column menu layout, don't recalculate the whole layout
if the calling function supplied an item index.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22658 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-10-22 09:23:19 +00:00
Axel Dörfler 083de48a4b * 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
2007-09-30 10:52:45 +00:00
Stephan Aßmus ded80ae491 * very minor cosmetic change
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22368 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-09-29 12:54:19 +00:00
Ryan Leavengood d237672a06 A fix to bug #1154 by Justin O'Dell. Basically the settings for menus
default to having no accelerators, but that setting was not ever read
properly. So in fact the meny pref was correct, but the menus were wrong.
This fixes that.

If the default setting is supposed to be accelerators on then the settings
should be changed.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22011 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-08-19 19:55:26 +00:00
Ingo Weinhold baade5580e Typo. Fixes menus (bug #1276).
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21437 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-06-17 13:24:42 +00:00
Ingo Weinhold 4fa167e12d * 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
2007-06-17 01:15:05 +00:00
Stefano Ceccherini af03527240 Changed the loop to compute the column layout: Now the space for
modifiers is added after we've calculated the maximum width. This way we 
don't get overlapping between the menu content and the modifiers bitmaps 
themselves. TBR.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21396 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-06-12 13:16:39 +00:00
Stefano Ceccherini 37ddfd14ab 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
2007-06-12 12:28:06 +00:00
Stefano Ceccherini fbe2f227ca 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
2007-06-12 09:10:08 +00:00
Stefano Ceccherini 63cd2925a0 Update the window size when adding and removing items. This fix bug
#683, but makes bug #582 look even more funny. Oh, well I hope I'll fix 
it one day.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20403 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-03-22 14:48:03 +00:00
Jérôme Duval 80a1eea587 only chooses alpha characters for menu triggers
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20385 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-03-14 18:53:31 +00:00
Stefano Ceccherini 68fb266820 get rid of the now useless trackTime parameter
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19828 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-01-16 15:22:31 +00:00
Stefano Ceccherini ebd1a3a130 some more work on menus... fixed bug #953 and some more stuff
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19827 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-01-16 14:43:01 +00:00
Stefano Ceccherini 27e7210df2 Since Waldemar changes to menus, replicants menus didn't work
anymore. That problem showed up for example during my haiku 
presentation at Begeistert, where I couldn't delete replicants from 
the desktop... grrrr!!! :-)


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19708 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-01-05 10:03:33 +00:00
Stefano Ceccherini 436bc5cc51 Menuwindow was 10 pixels away from the screen bottom when scrolling was
enabled.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19706 a95241bf-73f2-0310-859d-f6bbb57e9c96
2007-01-05 08:23:09 +00:00
Stefano Ceccherini f5e5e36026 forgot to fix this small style issue
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19654 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-12-29 07:09:16 +00:00
Stefano Ceccherini c733893846 Greatly improved scrolling, and simplified the code too. Now scrolling
is done from inside the BMenu::_track() function, and not inside Pulse() 
anymore. Patch by Lucasz Zemczak


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19653 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-12-29 07:01:08 +00:00
Stefano Ceccherini f0f8601b3f small cleanups
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19591 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-12-21 14:35:13 +00:00
Stefano Ceccherini 8b91b40ae6 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
2006-12-12 16:05:16 +00:00
Stefano Ceccherini 08d9291667 removed now unneded extra Draw() call used as a workaround to broken
scrolling.
Menu attached to menubars now use scrolling if they are opened near the 
bottom of the screen (just like in beos). I'm not sure if this is so 
nice, though, so it could be reverted. Patch contributed by Lucasz 
Zemczak


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19442 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-12-07 11:25:24 +00:00
Stefano Ceccherini 64a74d5eff close the menu immediately when user clicks outside the menu
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19366 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-11-23 21:39:49 +00:00
Waldemar Kornewald 7fc2eecefd Found out what trackTime was used for.
We should probably always start BMenuField menus in sticky mode and only switch
to non-sticky mode if the mouse was moved a minimum distance.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19361 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-11-22 12:30:56 +00:00
Axel Dörfler 2628e60cbc 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
2006-11-22 11:52:18 +00:00
Waldemar Kornewald a7067566a1 Fixed menu disappearing bug when (in sticky mode) mouse button is pressed (and held down) and the mouse pointer is moved outside of the menu. Now, menus should work as expected and switch from sticky to non-sticky mode on mouse button press correctly.
BTW, I disabled trackTime. It seems to work without it, correctly, so I guess it can be removed completely.
If not, just revert the change ("if (system_time....") after TODO.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19358 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-11-22 11:32:35 +00:00
Waldemar Kornewald 0512e98939 Now, menu reacts on first mouse release after having disabled sticky mode on MouseDown.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19350 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-11-21 17:14:44 +00:00
Waldemar Kornewald b26e9fb499 In sticky mode, menus should only invoke the selected item after the mouse is released (instead of immediately on MouseDown).
I hope this is the correct fix.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19349 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-11-21 16:01:11 +00:00
Stefano Ceccherini e0fcf72ae0 Fixed some semi-random crashes in deskbar and tracker caused by the new scrolling code. patch by Lucasz Zemczak. Also now the menu tracking function checks the result of the userdefined tracking hook, thus fixing bug #938
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19348 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-11-21 14:54:44 +00:00
Stefano Ceccherini 27cc25083e First try at menu scrolling, courthesy of Łukasz Zemczak. Works more or less, although a bit buggy
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19343 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-11-20 20:19:55 +00:00
Axel Dörfler fe23fb6699 * 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
2006-10-29 11:22:14 +00:00
Axel Dörfler 3cdc3291b4 The menu could leave the screen to the left, this fixes bug #902.
Patch by sil2100.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19048 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-10-11 18:05:57 +00:00
Stefano Ceccherini 37f49a44b4 If show() fails, deselect the parent menu item.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@18598 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-08-24 08:57:05 +00:00
Stefano Ceccherini 27f1bc8217 Don't activate the window, because it will steal the focus from the current active window, and clicking elsewhere won't close the menu
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@18537 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-08-18 10:26:29 +00:00
Stefano Ceccherini 4e338ac6df Started implementing menu keyboard navigation. Does only work for menubars because menu windows never get keyboard focus. Any idea how to solve this, since menu windows are B_AVOID_FOCUS both in beos and haiku?
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@18517 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-08-17 06:12:48 +00:00
Stefano Ceccherini bfb0aa18d3 some adjustments at the menu width calculation. Menus are generally a bit less 'compacted' now. Might need review
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@18501 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-08-13 06:06:00 +00:00
Stefano Ceccherini 509c95da0e Added s small workaround in BMenu::OkToProceed() to fix deskbar not opening the be menu under heavy load (or, always, under qemu) if the mouse button was released too soon. Beos seems to do something similar, although it's a hack
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@18500 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-08-13 05:39:00 +00:00
Stefano Ceccherini b6bf3346f3 When calculating the menu frame, take the resizeToFit parameter into account. This fixes bug 574, although the implementation isn't probably completed yet. Needs more investigation.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@18459 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-08-08 14:07:09 +00:00
Stefano Ceccherini cf2ef43abd fixed a small problem with StealFocus and RestoreFocus
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@18148 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-07-14 12:09:49 +00:00
Jérôme Duval 9fcdf0e92c MenuItem::Archive uses BArchivable::Archive
inverted the enable state when initing the BMenu


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@18071 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-07-08 12:56:18 +00:00
Jérôme Duval 9b224ec82e add item frames to BMenu archive
add class names to BMenuItem archives


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@18069 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-07-08 00:38:31 +00:00
Jérôme Duval bbcfef1f6c archive deep when needed, restore menu items
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@18054 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-07-07 16:01:37 +00:00
Jérôme Duval f1cc26391b archives menu items in menu archive
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@18053 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-07-07 15:51:40 +00:00
Stefano Ceccherini 9d9c1564b8 One of the BMenu::AddItem() variations crashed if the passed item was NULL. Fixes bug 465
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@18026 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-07-04 12:37:59 +00:00
Jérôme Duval a03ac89526 fixed some property_info and value_info for BShelf, BMenu, BWindow and BView
real support is to be implemented for a lot of them


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17728 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-06-05 15:57:58 +00:00
Stefano Ceccherini b9af5bfa5c - Fixed the recently introduced bug where menus would open again once closed. -Now hitting ESC will close the menu. - Reverted to the other variation of GetMouse() as Axel's advice
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17654 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-05-30 19:14:54 +00:00
Axel Dörfler 0dcf122e37 Removed now incorrect comment.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17634 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-05-29 15:41:09 +00:00