Commit Graph
209 Commits
Author SHA1 Message Date
Michael Lotz 6eb09230ba * Resolve further warnings on GCC4.
* Enable -Werror on GCC4 builds as well (limited to the same selected targets).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@29118 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-02-01 22:12:55 +00:00
Stefano Ceccherini 321bba933d Vertical menu scrolling was enabled also in case the menu was wider than the screen, but this is obviously wrong. The menu window was also resized to be the height of the screen in this case, and it was the cause of bug #3174. Note that horizontal scrolling is not yet implemented
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28954 a95241bf-73f2-0310-859d-f6bbb57e9c96
2009-01-19 15:31:31 +00:00
Oliver Tappe 39fbf5509b bonefish + zooey:
* Fixed a general problem with respect to overriding of the reserved
  virtual function slots: instead of statically invoking the method
  that corresponds to the reserved slot on the class that contains the
  slot, we now invoke the virtual Perform() method. Perform() then dispatches 
  the method invocation to the "proper" class, i.e. the highest class in the 
  hierarchy that  actually implements the requested method.
  This fixes a crash in apps that use liblayout's MSlider class and
  should fix one or other spurious bug with old apps or libraries, too.
* added new header folder 'binary_compatibility' that contains files that
  define the method codes and data structures required by Perform()
* looked for and implemented all used reserved virtual slot functions to
  invoke Perform() where necessary or to pass on the method call statically
  (for slots that were already maintained by Be)


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@28124 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-10-15 09:29:06 +00:00
Axel Dörfler e58419d391 * White space cleanup.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27861 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-10-03 12:48:59 +00:00
Stefano Ceccherini 4e0c2a797d Menus can be scrolled also using the mouse wheel
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27844 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-10-03 06:03:27 +00:00
Stephan Aßmus 18fe1bf6fb Small fix for 80 char/line limit.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27655 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-09-20 15:37:47 +00:00
Karsten Heimrich c7d112ff6a * unmark existing marked items in case we add a new item that is marked
i did exactly that way in my code, which messed up the location popup 



git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27645 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-09-20 10:25:55 +00:00
Karsten Heimrich d1fe803469 * automatic whitespace cleanup
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27644 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-09-20 10:17:00 +00:00
Stefano Ceccherini 2e2bff94a9 buttons could be used initialized if locking the looper failed (CID 1134)
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27440 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-09-12 08:09:13 +00:00
Alexandre Deckner 009aa366c6 - Changed Alt/Ctrl mode handling in Menu prefs, BMenu and Appearance
prefs as discussed in #2139 comments. This allow using Alt-Gr in either 
Ctrl or Alt mode. Appearance needs a serious style cleanup, comming next 
:)


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27095 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-08-21 00:59:30 +00:00
Stephan Aßmus ebdb1a612b Just small white space cleanup.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@26562 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-07-22 11:03:03 +00:00
Alexandre Deckner c3f006deb0 - initialize the variable, we never know :)
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25949 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-06-13 00:36:06 +00:00
Alexandre Deckner 709ef82757 - BMenu caches the preferred size (since r21396) but didn't recompute it if the ResizingMode changed, it did it only in
InvalidateLayout().

  This fixes #1461, the bug appeared because DraggableContainerIcon uses a special trick, involving changing the resizing 
mode, to get the total width of the menu items. (see tracker/ContainerWindow.cpp line 479)


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25948 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-06-13 00:24:01 +00:00
Stefano Ceccherini 18af47f5c4 Renamed some private methods to have the underline prefix, now that
BWindow doesn't call them directly anymore.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24911 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-11 08:53:25 +00:00
Stefano Ceccherini 10f4d0679a Added a class MenuPrivate to handle access to private BMenu methods.
BMenuItem and BWindow are no longer friends of BMenu, but use this class 
instead.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24909 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-04-11 08:22:09 +00:00
Stefano Ceccherini 47ed33e09b Apply the same logic of BMenu::_Track() also in BMenuBar::_track():
check if mouse is over a submenu and then if it's over the current menu.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24479 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-03-19 20:59:55 +00:00
Stefano Ceccherini 5c30ed357a If a NULL menuitem was supplied to BMenu::_NextItem(), the function
would have returned the second item in place of the first. Also return 
NULL, not false, when there are no "next items". 


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24294 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-03-07 21:00:46 +00:00
Stefano Ceccherini 495949fc2c x_offset -> xOffset
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24213 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-03-03 12:29:07 +00:00
Stefano Ceccherini dc93a6b1ee Applied patch by Denis Washington which implements "diagonal mouse
support" for menus (see ticket #284). Thanks a lot!


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24193 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-03-01 22:15:23 +00:00
Stefano Ceccherini 47d3c50607 Change the order we use to check the position of the mouse pointer
inside menus: first sub, then current, then super. It's more logical, 
and handles every case (hopefully I've tested every possible 
combination) of overlapping menus correctly.
Fixes bug #1821.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@24044 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-02-21 10:10:17 +00:00
Stefano Ceccherini 5cc2ed98e2 Don't close a submenu if the mouse is outside the parent menu.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@23790 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-01-30 11:34:05 +00:00
Stefano Ceccherini cc5d5e7a14 Reduced the time used for the vmware workaround
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@23529 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-01-15 13:41:08 +00:00
Stefano Ceccherini d01f3af185 Menu tracking now ignores mouse movements if they are too fast
(suggested by stippi). The movement threshold will be subject to 
changes, as I only tested on vmware and it's probably too high.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@23528 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-01-15 13:40:13 +00:00
Stefano Ceccherini 6e11b3f991 Close the whole menu hierarchy when invoking an item via keyboard. Added
a TODO comment.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@23389 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-01-11 12:08:21 +00:00
Stefano Ceccherini cb6cd9af6f BMenu::_SelectNextItem() also opens the menu if we're inside a menubar.
That way menubars are navigable via keyboard. There are still glitches, 
but menu keyboard navigation works now.
Minor optimization: cache the value of CountItems() instead of calling 
it multiple times.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@23387 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-01-11 11:34:53 +00:00
Axel Dörfler 737ce1c03c * The keyboard target was always the first menu in the window list - no matter if that was hidden or not.
This fixes the bug described by Stefano in r23343.
* Therefore, I enabled cached menu windows again.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@23356 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-01-10 21:26:55 +00:00
Stefano Ceccherini 0625889c61 IsModal() now includes also the kMenuWindowLook. Fixes bug #1269. Please
review.
Added a compile time option to switch off the use of the cached menu 
windows. Looks like there is a problem with the focus system, if I keep 
the cached menu window around, it "steals" keyboard events from the main 
app window after the menu has been opened and closed once.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@23343 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-01-10 16:04:57 +00:00
Stefano Ceccherini 85e661dbf0 Merged (parts of, for now) patches from Rene Gollent and
Christof Lutteroth, which improve menu keyboard navigation. Sorry for 
the delay, I had these patches sitting on my hard drive for a while. At 
least now you can open a menu with ALT + ESC, navigate it with the arrow keys,
and invoke an item.
Various issues still exist, including: menubars don't get the keydown 
messages, and if you keep the mouse over the menu while navigating
with the keyboard, nothing will happen. 


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@23339 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-01-10 14:06:11 +00:00
Stefano Ceccherini 20817b7706 Double sorry...
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@23284 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-01-07 22:55:36 +00:00
Stefano Ceccherini 598ea11c81 Sorry, this wasn't meant to be here.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@23283 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-01-07 22:42:28 +00:00
Stefano Ceccherini 3e06c4fae2 Improved the code still a little bit. Menus seems to be somewhat more
responsive.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@23282 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-01-07 22:21:25 +00:00
Stefano Ceccherini 8d44324fda Same thing as previous commit, only for BMenuBar. Added some other
comment


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@23280 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-01-07 16:13:14 +00:00
Stefano Ceccherini 14e826c4ba Some changes in menu tracking:
- in the code path, now it's clear if the looper is locked or not
- if menus are quitting, now we don't call snooze() anymore, and avoid 
the extra GetMouse() call.
- some other cleanups


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@23279 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-01-07 15:46:28 +00:00
Stefano Ceccherini 7957219ebb Removed a check which was always false.
git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@23278 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-01-07 13:54:55 +00:00
Stefano Ceccherini c129260a24 There was a reason for this after all: Sometimes hovering from the
submenu to the parent didn't trigger tracking from it.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@23232 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-01-03 10:43:45 +00:00
Stefano Ceccherini 9e64a7ed1b Fixed problem with some popup menus (check ticket #1679)
Moved GetMouse() calls near the check for exit conditions.
Reorganized a bit the code, and hopefully simplified it in some places.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@23229 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-01-03 07:30:05 +00:00
Stefano Ceccherini 4b812f294e Set sticky mode to the correct value before calling BMenu::_Track().
Fixes bug #1679


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@23201 a95241bf-73f2-0310-859d-f6bbb57e9c96
2008-01-01 14:37:19 +00:00
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