aboutsummaryrefslogtreecommitdiff
path: root/dw/fltkui.cc
diff options
context:
space:
mode:
authorcorvid <corvid@lavabit.com>2011-01-29 05:29:09 +0000
committercorvid <corvid@lavabit.com>2011-01-29 05:29:09 +0000
commit0862e28f784eef8b785d5fd7b24cf1d3d3c39ad6 (patch)
tree420bc1e5dc3d2a809d6650fb0a8aa20d07ada3b3 /dw/fltkui.cc
parent4058c05576c5d04bcd29fb7989461d444d962e2f (diff)
push/popGroup is back. Implemented for FltkOptionMenu
Diffstat (limited to 'dw/fltkui.cc')
-rw-r--r--dw/fltkui.cc34
1 files changed, 31 insertions, 3 deletions
diff --git a/dw/fltkui.cc b/dw/fltkui.cc
index 1cc502c8..686429ca 100644
--- a/dw/fltkui.cc
+++ b/dw/fltkui.cc
@@ -948,8 +948,7 @@ void FltkOptionMenuResource::enlargeMenu ()
((Fl_Choice *)widget)->menu(menu);
}
-void FltkOptionMenuResource::addItem (const char *str,
- bool enabled, bool selected)
+Fl_Menu_Item *FltkOptionMenuResource::newItem()
{
Fl_Menu_Item *item;
@@ -957,6 +956,16 @@ void FltkOptionMenuResource::addItem (const char *str,
enlargeMenu();
item = menu + itemsUsed - 1;
+ itemsUsed++;
+
+ return item;
+}
+
+void FltkOptionMenuResource::addItem (const char *str,
+ bool enabled, bool selected)
+{
+ Fl_Menu_Item *item = newItem();
+
item->text = strdup(str);
if (enabled == false)
@@ -967,8 +976,27 @@ void FltkOptionMenuResource::addItem (const char *str,
if (selected)
((Fl_Choice *)widget)->value(item);
- itemsUsed++;
+ queueResize (true);
+}
+void FltkOptionMenuResource::pushGroup (const char *name, bool enabled)
+{
+ Fl_Menu_Item *item = newItem();
+
+ item->text = strdup(name);
+
+ if (enabled == false)
+ item->flags = FL_MENU_INACTIVE;
+
+ item->flags |= FL_SUBMENU;
+
+ queueResize (true);
+}
+
+void FltkOptionMenuResource::popGroup ()
+{
+ /* Item with NULL text field closes the submenu */
+ newItem();
queueResize (true);
}