Commit Graph
62 Commits
Author SHA1 Message Date
Axel Dörfler fd1528f275 Accidently broke selecting sub menus with the last commit.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16167 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-01-31 03:31:23 +00:00
Axel Dörfler ec549309c9 The menus work a bit less good now I think, but they no longer have 100% CPU usage
when the menu item under the mouse cursor has a sub-menu.
Minor cleanup.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16160 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-01-30 23:40:05 +00:00
Stefano Ceccherini 61ba5a32c1 Added some code to draw "empty" in empty menus. Not working for the
moment, but committing since it's too late to continue working, and at 
least the window is resized correctly...


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16142 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-01-29 22:27:46 +00:00
Stefano Ceccherini 365a41fd5c Reduced the time hysteresis. Need more testing, though
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16030 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-01-21 20:08:58 +00:00
Stefano Ceccherini 0219459ba0 Added a small time hysteresis: submenus are only opened if the user keeps the mouse there for a while. I'd like feedback on this
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@16015 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-01-21 09:23:59 +00:00
Stefano Ceccherini c592b98fd2 Reworked BMenu::Set/IsEnabled(). I tested what happens under beos and our code seems to be finally correct
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15999 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-01-17 20:11:07 +00:00
Stefano Ceccherini 0c7450238f followed stippi's suggestion and implemented SetEnabled more cleanly
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15989 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-01-16 22:49:05 +00:00
Stefano Ceccherini dd180e6378 SetEnabled() enables or disables the parent menu too, SetRadioMode() and SetLabelFromMarked() call each other if needed, BMenuBar::Draw() doesn't make a difference if the menubar is disabled or not, should even fix bug #87 as it was calling LayoutItems() every cycle. Work done by John Drinkwater and me
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15988 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-01-16 21:42:57 +00:00
Stefano Ceccherini fc3a8a1c73 Fixed popup menus opened at the wrong position (mostly noticed in Installer) with a horrible hack which I can't see how to avoid
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15941 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-01-13 20:48:48 +00:00
Stefano Ceccherini 201381d6ab Menus make a better use of windows: when a child menu is opened, it asks the parent for a window, which is then cached for every other child for that parent menu. This avoids multiple creation/deletion of BWindows in a row. This also makes menus much nicer to use in qemu (together with the slight change in locking in BMenuBar (Lock() instead of LockWithTimeout))
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15939 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-01-13 17:47:35 +00:00
Stefano Ceccherini b120bcd665 Don't quit tracking the menu even if OverSuper() returns true, if HitTestItems() doesn't return NULL. This should fix (at least in part) bug #85
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15891 a95241bf-73f2-0310-859d-f6bbb57e9c96
2006-01-10 09:40:28 +00:00
Stefano Ceccherini b8fe2d4ed5 some changes, fixed a possible segfault
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15573 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-12-17 21:45:18 +00:00
Axel Dörfler 1d44f6791d Now checks if locking the looper succeeded.
Now hides the window before removing itself to prevent a superfluous drawing update.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15410 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-12-08 10:46:54 +00:00
Axel Dörfler 8643b0987c All controls/views now accept NULL arguments for "width" and "height" in GetPreferredSize().
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15091 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-11-23 17:29:39 +00:00
Ingo Weinhold 758b1d0e05 Fixes that make Haiku build with gcc 4. Mainly out of the following
categories:
* Missing includes (like <stdlib.h> and <string.h>).
* Linking against $(TARGET_LIBSTDC++) instead of libstdc++.r4.so.
* Local variables shadowing parameters.
* Default parameters in function definitions (as opposed to function
  declarations).
* All C++ stuff (nothrow, map, set, vector, min, max,...) must be imported
  explicitly from the std:: namespace now.
* "new (sometype)[...]" must read "new sometype[...]", even if sometype is
  something like "const char *".
* __FUNCTION__ is no longer a string literal (but a string expression), i.e.
  'printf(__FUNCTION__ ": ...\n")' is invalid code.
* A type cast results in a non-lvalue. E.g. "(char *)buffer += bytes"
  is an invalid expression.
* "friend class SomeClass" only works when SomeClass is known before.
  Otherwise the an inner class with that name is considered as friend.
  gcc 4 is much pickier about scopes.
* gcc 4 is generally stricter with respect to type conversions in C.



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14878 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-11-12 23:27:14 +00:00
Stefano Ceccherini ac50702270 BMenu::FindMarked() was broken just like FindItem() was. And it's even my fault. Yay!
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14815 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-11-10 10:12:58 +00:00
Axel Dörfler 8f4959d844 Both BMenu::FindItem() versions were broken and could return a wrong item.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14796 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-11-09 17:21:12 +00:00
Axel Dörfler 86343dcbcf There is no reason ComputeLayout() needs a parent/window - in fact, it should always
work correctly (for GetPreferredSize()).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14789 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-11-09 15:37:58 +00:00
Stephan Aßmus ecf92c7e4b cleaner version of RemoveItems, more error checking
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14638 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-11-02 13:10:33 +00:00
Stefano Ceccherini e7dfacc2b4 Fixed a typo which caused a bug.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@14375 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-10-14 08:16:45 +00:00
Axel Dörfler 8991f1a2af Implemented basic dynamic item support (IOW the BSlowMenu/BNavMenu stuff is now working
as expected), OkToProceed() needs some work, though.
Made _AddItem() more safe - the window is now also locked during BList::AddItem() and
while getting the window to install the item in.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13516 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-07-07 02:45:23 +00:00
Axel Dörfler 0b4ce825fb Fixed ComputeLayout(); it added 20 pixel for every item in the list in B_ITEMS_IN_COLUMN.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13477 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-07-06 03:20:31 +00:00
Axel Dörfler 1b1b68919c Fixed CalcFrame(): it could be called with Superitem() and Supermenu() == NULL.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13475 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-07-06 02:22:22 +00:00
Axel Dörfler 4da171eff7 CalcFrame() no longer returns the maximum frame, but the one that should be
used.
Changed CalcFrame() so that it tries to find the best on-screen location - works
already, though it might have to be improved.
Moved ScreenLocation() so that it's close to CalcFrame(). Changed the position
for B_ITEMS_IN_COLUMNS a bit (they now appear one pixel lower).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13470 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-07-05 23:14:01 +00:00
Stephan Aßmus 2e6a5805ba MenuField layouts the menu bar better with respect to fDivider, it aligns better with other controls. fDivider in TextControl is an integer number now, small fix and small cleanup in Menu, Window::InitData takes an optional BBitmap token to construct an offscreen window, fixed PrivateScreen IndexForColor, View prevents being located at fractional coordinates as in R5, BBitmap unlocks its offscreen window since it is never Show()n and needs manual unlocking, fixed Slider offscreen window mode and improved triange thumb drawing, ScrollView would not crash when passing a NULL target just for kicks, the private MenuBar class now implements Draw to draw itself a little differently inside the BMenuField (dark right and bottom side) - though how it currently sets the clipping region prevents the text controls to draw in Playground, needs fixing
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13450 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-07-05 16:30:53 +00:00
Stefano Ceccherini 2323effaee Avoid calling ComputeLayout() if the menu is not attached to a BWindow. Small cleanups.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13438 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-07-05 11:53:03 +00:00
Stefano Ceccherini 1ae414f3c6 Don't assume we have an owner. This fixes a crash in MenuWorld, but needs more investigation
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13427 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-07-04 21:31:03 +00:00
Stefano Ceccherini 1a02bff863 the menuitem wasn't deselected when you moved the mouse away from the menu window. Thanks to Axel for reporting.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13418 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-07-04 10:17:19 +00:00
Stefano Ceccherini 169425459f Avoid calling BMenu::_hide() when not needed
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13401 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-07-02 13:34:47 +00:00
Stefano Ceccherini 557dfeeb12 Implemented CalcFrame() and used it to limit the menu frame's size (actually, only the width for now). This shows that TruncateLabel() works.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13229 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-06-23 08:41:55 +00:00
Stefano Ceccherini 61e19def00 Verified and removed a ToDO item (thanks goes to Olivier Milla)
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13215 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-06-20 08:33:30 +00:00
Stefano Ceccherini ba61835820 Fixed submenus for good
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13151 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-06-15 12:09:40 +00:00
Stefano Ceccherini 757ce6e540 Greatly improved BMenuBar::Track(). Now it uses a simple tracking loop instad of two nested loops. BMenu will follow, someday.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13150 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-06-15 11:37:05 +00:00
Stefano Ceccherini ac7ee5af14 removed COMPILE_FOR_R5. For BMenu it doesn't make any sense anymore.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@13070 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-06-12 05:58:58 +00:00
Stefano Ceccherini fd083d7eed Use the private menu actions defines. Small cleanups.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@12985 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-06-07 13:35:16 +00:00
Stephan Aßmus 8768dcd876 BMenu installed all previously added items each time a new item was added
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@12980 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-06-07 13:13:43 +00:00
Stefano Ceccherini 26ad9841a2 Menus don't flicker anymore, extended some ToDos, small cleanups. Implemented BMenu::IsItemVisible() as I think I'll need it soon, extended Bmenu::OverSubmenu() to be recursive, it's not used at the moment but should be.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@12899 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-05-30 10:10:52 +00:00
Stefano Ceccherini 063446f455 Reverted that last change, as it was really a bad idea afterall (as Axel pointed out)
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@12784 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-05-23 13:50:59 +00:00
Stefano Ceccherini 8b47fd8708 MenuWindow's look is now B_BORDERED_WINDOW_LOOK, so we can avoid drawing the border ourselves.
Now BMenu caches its windows instead of creating a new  one every time. This last change could be reverted, though, as we could end up keeping around too many windows.

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@12782 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-05-23 10:02:17 +00:00
Stefano Ceccherini f32c74752d A couple of small style changes, fixed a problem with some compilers
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11392 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-02-16 08:27:27 +00:00
DarkWyrm 6a1a734c5f A small crash fix whilst testing with a stock People app
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@11385 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-02-16 00:48:07 +00:00
Stefano Ceccherini a0394110da We have submenus working (still not perfect, though)
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@10869 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-01-19 10:52:40 +00:00
Stefano Ceccherini 0c14fc6dfd Changes to make BMenu behave correctly. Implemented SetTrackingHook(). AddItem() calls the debugger in some cases, as it should. Cleanups.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@10868 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-01-19 09:03:47 +00:00
Stefano Ceccherini 727e24f793 Now BMenu also calculate the triggers for BMenuItems.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@10827 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-01-18 10:42:41 +00:00
Stefano Ceccherini 5fd36a241d A BMenuItem couldn't be removed and then added back to a BMenu: Fixed.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@10708 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-01-13 08:50:50 +00:00
Stefano Ceccherini 4ff5ade253 Many visual fixes to BMenu. Now it's almost undistinguable from the real thing. SeparatorItems were being drawn too dark. Fixed.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@10585 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-01-04 14:42:19 +00:00
Stefano Ceccherini 5b7528754d The frame around the BMenu is now drawn by a special class (as happens in beos), and not by BMenu::DrawBackground(). Refactored BMenuWindow to support scrolling (not implemented yet). The AddItem() functions now call the private _AddItem(). Implemented AddList(), but it's not tested. BMenus are now offsetted by 2, 2, as in BeOS.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@10582 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-01-04 12:59:49 +00:00
Stefano Ceccherini 1664b981f2 Added some todo items, cleanups. Removed the frame parameter from BMenuWindow as it's not needed.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@10573 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-01-03 16:05:05 +00:00
Stefano Ceccherini 4e876d126e implemented B_ITEMS_IN_MATRIX layout correctly. Small cleanups all around.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@10571 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-01-03 13:33:03 +00:00
Stefano Ceccherini 9a8540fb4e Now menuitems are highlighted correctly, and submenus open, at least.
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@10570 a95241bf-73f2-0310-859d-f6bbb57e9c96
2005-01-03 11:34:14 +00:00