summaryrefslogtreecommitdiffstats
path: root/CategoriesPanel.c
diff options
context:
space:
mode:
authorHisham Muhammad <hisham@gobolinux.org>2008-03-05 06:54:30 +0000
committerHisham Muhammad <hisham@gobolinux.org>2008-03-05 06:54:30 +0000
commit5ed2b85c847995da3f4dc01c4d2790358adeb03d (patch)
tree386a0ef517d60d82d3d0f715c057725f01bba1b8 /CategoriesPanel.c
parent062433fe04ae35ddd61e476deb7c6fe924235058 (diff)
Make clicks on leftmost panel in the Setup screen change setup pages,
like the keyboard navigation does. Fixes bug reported by Tero Keinanen. https://sourceforge.net/tracker/index.php?func=detail&aid=1754735&group_id=108839&atid=651633
Diffstat (limited to 'CategoriesPanel.c')
-rw-r--r--CategoriesPanel.c52
1 files changed, 29 insertions, 23 deletions
diff --git a/CategoriesPanel.c b/CategoriesPanel.c
index 89e93385..9d471217 100644
--- a/CategoriesPanel.c
+++ b/CategoriesPanel.c
@@ -64,37 +64,43 @@ HandlerResult CategoriesPanel_eventHandler(Panel* super, int ch) {
HandlerResult result = IGNORED;
- int previous = Panel_getSelectedIndex(super);
-
+ int selected = Panel_getSelectedIndex(super);
switch (ch) {
+ case EVENT_SETSELECTED:
+ result = HANDLED;
+ break;
case KEY_UP:
case KEY_DOWN:
case KEY_NPAGE:
case KEY_PPAGE:
case KEY_HOME:
case KEY_END: {
+ int previous = selected;
Panel_onKey(super, ch);
- int selected = Panel_getSelectedIndex(super);
- if (previous != selected) {
- int size = ScreenManager_size(this->scr);
- for (int i = 1; i < size; i++)
- ScreenManager_remove(this->scr, 1);
- switch (selected) {
- case 0:
- CategoriesPanel_makeMetersPage(this);
- break;
- case 1:
- CategoriesPanel_makeDisplayOptionsPage(this);
- break;
- case 2:
- CategoriesPanel_makeColorsPage(this);
- break;
- case 3:
- CategoriesPanel_makeColumnsPage(this);
- break;
- }
- }
- result = HANDLED;
+ selected = Panel_getSelectedIndex(super);
+ if (previous != selected)
+ result = HANDLED;
+ break;
+ }
+ }
+
+ if (result == HANDLED) {
+ int size = ScreenManager_size(this->scr);
+ for (int i = 1; i < size; i++)
+ ScreenManager_remove(this->scr, 1);
+ switch (selected) {
+ case 0:
+ CategoriesPanel_makeMetersPage(this);
+ break;
+ case 1:
+ CategoriesPanel_makeDisplayOptionsPage(this);
+ break;
+ case 2:
+ CategoriesPanel_makeColorsPage(this);
+ break;
+ case 3:
+ CategoriesPanel_makeColumnsPage(this);
+ break;
}
}

© 2014-2024 Faster IT GmbH | imprint | privacy policy