Commit Graph
152 Commits
Author SHA1 Message Date
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
Stefano Ceccherini c1dd282b9b Fixed some bugs in StealFocus, RemoveFocus and SetStickyMode
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17614 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-05-28 08:50:52 +00:00
Stefano Ceccherini 848b89034e More hacks to BWindow's mousedown handler, to fix some problems with menus. Fixes bug 610 among other things. Note: I don't like this code so much, but apparently BeOS handles it in a similar way. I accept suggestions on how to improve this.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17606 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-05-27 13:00:35 +00:00
Stefano Ceccherini e061d1bae5 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
2006-05-27 09:57:14 +00:00
Stefano Ceccherini 03f2d7791e Switched back to the GetMouse variation which does NOT check the message
queue, should fix bug 594 and not risk of losing clicks. SetStickyMode() 
calls StealFocus() to give the chance to be keyboard-navigated to menus. 
Added an extra (temporary) InvalidateLayout() because some items weren't 
added in 
some cases (Tracker's attributes menu for example)


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17599 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-05-26 18:13:38 +00:00
Stefano Ceccherini 73f99cd6ae reverted axel's change to menu, which introduced some other problems, and I can't reproduce that problem anymore. Axel, can you verify, please ?
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17598 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-05-26 17:28:18 +00:00
Axel Dörfler 712c1e8c39 Fixed the BMenuBar not spanning over the whole window width for MediaPlayer
and VLC (what a coincidence :)).
Would be nice if there is a better solution, though...


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17539 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-05-22 16:54:32 +00:00
Stephan Aßmus 431da4dd4b AddItem(..., frame) used AddItem(..., index) which
triggered a debugger call -> refactoring and cleanup


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17521 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-05-22 09:53:08 +00:00
Stefano Ceccherini b0f89f914d Fixed the problem mentioned in bug 484, some cleanups, implemented
BMenu::InvokeItem() more correctly.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17519 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-05-20 22:36:38 +00:00
Stephan Aßmus 2a3de9bc1d * use new (nothrow) when checking the returned pointer
* better handling of errors in various versions of AddItem()


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17506 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-05-19 09:39:54 +00:00
Stefano Ceccherini f711110191 Refactored the AddItem mechanism. Now the private _AddItem() method doesn't lock the looper or invalidate the layout anymore, which is done by the caller. This way AddList is much more efficient.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17502 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-05-19 08:03:11 +00:00
Stefano Ceccherini 925479d7b3 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
2006-05-09 21:48:51 +00:00
Stefano Ceccherini 63b7888854 BMenu::InvalidateLayout() should only sets a variable, the real invalidation is done on Draw() or AttachedToWindow() (like on R5). This fixes bug 567 (at least the crash in HotEdit)
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17356 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-05-07 19:58:07 +00:00
Stefano Ceccherini 4436b7269d Menuitems are layoutted better, fixing bug 526
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17282 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-04-30 20:24:30 +00:00
Axel Dörfler 9c418bc0f9 Fixed warning.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17259 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-04-29 14:08:32 +00:00
Stefano Ceccherini 05e515d56c hopefully improved menu tracking. Among other things, this fixes bug 461
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17204 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-04-22 17:56:21 +00:00
Stefano Ceccherini 59d1b7be9d It's a good idea to snooze AFTER we've checked the possible exit conditions
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17189 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-04-21 11:33:02 +00:00
Stefano Ceccherini 48688dcd5f Fixed a bug in menu tracking: in some cases you had a goal of 1 pixel when trying to enter a submenu ( http://flickr.com/photos/johndrinkwater/131805244 )
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17181 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-04-20 20:56:57 +00:00
Stefano Ceccherini b03deb09db Menu settings are now handled by the app_server. As a result, changing them does something, although they aren't saved to disk yet. 'click_to_open' is not checked anymore, because it was useless anyway, I'll remove it from the Menu preflet too.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17174 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-04-19 20:04:19 +00:00
Stefano Ceccherini 1b5b2e4c35 MenuItems don't flicker anymore when a submenu opens (fixes bug 484). Implemented popupmenu's 'clickToOpenRect' feature, used by tracker's dirmenus, for example (fixes bug 523
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17168 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-04-18 20:32:10 +00:00
Stefano Ceccherini 4697016070 Lowered the delay in menus after which they don't switch to sticky mode, should fix bug 491, although its not really a bug
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17153 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-04-17 14:13:08 +00:00