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