diff options
author | Jim Ramsay <i.am@jimramsay.com> | 2009-10-14 01:05:49 (GMT) |
---|---|---|
committer | Jim Ramsay <i.am@jimramsay.com> | 2009-10-14 01:05:49 (GMT) |
commit | 839ea523164caecd8c779e60539b78c2a748a81f (patch) | |
tree | 0019d04f27a1a258bc7a900e3cf77b916dca6493 /src/FbTk/Menu.cc | |
parent | 4d3aa646c1d1d1de4fdb31f938f6ea62fd5dd21e (diff) | |
parent | 8def80cec337a986b762cdbb5e2555c6da809353 (diff) | |
download | fluxbox_lack-839ea523164caecd8c779e60539b78c2a748a81f.zip fluxbox_lack-839ea523164caecd8c779e60539b78c2a748a81f.tar.bz2 |
Merge branch 'master' into argbtesting/argbargb
Conflicts:
src/FbTk/FbWindow.cc
Diffstat (limited to 'src/FbTk/Menu.cc')
-rw-r--r-- | src/FbTk/Menu.cc | 27 |
1 files changed, 22 insertions, 5 deletions
diff --git a/src/FbTk/Menu.cc b/src/FbTk/Menu.cc index 7cf2ac9..ded5dab 100644 --- a/src/FbTk/Menu.cc +++ b/src/FbTk/Menu.cc | |||
@@ -328,9 +328,11 @@ void Menu::cycleItems(bool reverse) { | |||
328 | new_index = vec[i]->getIndex(); | 328 | new_index = vec[i]->getIndex(); |
329 | } | 329 | } |
330 | 330 | ||
331 | if (new_index == -1) | 331 | if (new_index != -1) |
332 | return; | 332 | setActiveIndex(new_index); |
333 | } | ||
333 | 334 | ||
335 | void Menu::setActiveIndex(int new_index) { | ||
334 | // clear the items and close any open submenus | 336 | // clear the items and close any open submenus |
335 | int old_active_index = m_active_index; | 337 | int old_active_index = m_active_index; |
336 | m_active_index = new_index; | 338 | m_active_index = new_index; |
@@ -757,7 +759,7 @@ void Menu::drawSubmenu(unsigned int index) { | |||
757 | if (! m_moving) | 759 | if (! m_moving) |
758 | clearItem(index); | 760 | clearItem(index); |
759 | 761 | ||
760 | if (! item->submenu()->isVisible()) { | 762 | if (! item->submenu()->isVisible() && item->submenu()->numberOfItems() > 0) { |
761 | shown = item->submenu(); | 763 | shown = item->submenu(); |
762 | item->showSubmenu(); | 764 | item->showSubmenu(); |
763 | item->submenu()->raise(); | 765 | item->submenu()->raise(); |
@@ -1065,11 +1067,26 @@ void Menu::keyPressEvent(XKeyEvent &event) { | |||
1065 | break; | 1067 | break; |
1066 | case XK_Left: // enter parent if we have one | 1068 | case XK_Left: // enter parent if we have one |
1067 | resetTypeAhead(); | 1069 | resetTypeAhead(); |
1068 | internal_hide(); | 1070 | if (menu.sublevels > 1 && m_active_index >= menu.persub) { |
1071 | int new_index = m_active_index - menu.persub; | ||
1072 | while (new_index >= 0 && !isItemEnabled(new_index)) | ||
1073 | new_index -= menu.persub; | ||
1074 | if (new_index >= 0) | ||
1075 | setActiveIndex(new_index); | ||
1076 | } else | ||
1077 | internal_hide(); | ||
1069 | break; | 1078 | break; |
1070 | case XK_Right: // enter submenu if we have one | 1079 | case XK_Right: // enter submenu if we have one |
1071 | resetTypeAhead(); | 1080 | resetTypeAhead(); |
1072 | enterSubmenu(); | 1081 | if (menu.sublevels > 1 && validIndex(m_active_index) && |
1082 | validIndex(m_active_index + menu.persub)) { | ||
1083 | int new_index = m_active_index + menu.persub; | ||
1084 | while (validIndex(new_index) && !isItemEnabled(new_index)) | ||
1085 | new_index += menu.persub; | ||
1086 | if (validIndex(new_index)) | ||
1087 | setActiveIndex(new_index); | ||
1088 | } else | ||
1089 | enterSubmenu(); | ||
1073 | break; | 1090 | break; |
1074 | case XK_Escape: // close menu | 1091 | case XK_Escape: // close menu |
1075 | m_type_ahead.reset(); | 1092 | m_type_ahead.reset(); |