summaryrefslogtreecommitdiff
path: root/fluid/nodes/Menu_Node.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'fluid/nodes/Menu_Node.cxx')
-rw-r--r--fluid/nodes/Menu_Node.cxx110
1 files changed, 56 insertions, 54 deletions
diff --git a/fluid/nodes/Menu_Node.cxx b/fluid/nodes/Menu_Node.cxx
index e0f1c11ee..b669c18e0 100644
--- a/fluid/nodes/Menu_Node.cxx
+++ b/fluid/nodes/Menu_Node.cxx
@@ -48,17 +48,17 @@ using namespace fld;
using namespace fld::proj;
Fl_Menu_Item menu_item_type_menu[] = {
- {"Normal",0,nullptr,(void*)nullptr},
- {"Toggle",0,nullptr,(void*)FL_MENU_BOX},
- {"Radio",0,nullptr,(void*)FL_MENU_RADIO},
- {nullptr}};
+ {"Normal",0,0,(void*)0},
+ {"Toggle",0,0,(void*)FL_MENU_BOX},
+ {"Radio",0,0,(void*)FL_MENU_RADIO},
+ {0}};
static void delete_dependents(Fl_Menu_Item *m) {
if (!m)
return;
int level = 0;
for (;;m++) {
- if (m->label()==nullptr) {
+ if (m->label()==0) {
if (level==0) {
break;
} else {
@@ -90,7 +90,7 @@ void Input_Choice_Node::build_menu() {
}
if (!n) {
if (menusize) delete_menu((Fl_Menu_Item*)(w->menu()));
- w->menu(nullptr);
+ w->menu(0);
menusize = 0;
} else {
n++; // space for null at end of menu
@@ -102,7 +102,7 @@ void Input_Choice_Node::build_menu() {
if (menusize) delete_dependents((Fl_Menu_Item*)(w->menu()));
}
// Menus are already built during the .fl file reading process, so if the
- // end of a menu list is not read yet, the end markers (label==nullptr) will
+ // end of a menu list is not read yet, the end markers (label==0) will
// not be set, and deleting dependents will randomly free memory.
// Clearing the array should avoid that.
memset( (void*)w->menu(), 0, menusize * sizeof(Fl_Menu_Item) );
@@ -127,7 +127,7 @@ void Input_Choice_Node::build_menu() {
m->labeltype(i->o->labeltype());
}
m->shortcut(((Fl_Button*)(i->o))->shortcut());
- m->callback(nullptr,(void*)i);
+ m->callback(0,(void*)i);
m->flags = i->flags() & ~FL_MENU_HEADLINE;
m->labelfont(i->o->labelfont());
m->labelsize(i->o->labelsize());
@@ -136,7 +136,7 @@ void Input_Choice_Node::build_menu() {
m++;
int l1 =
(q->next && q->next->is_a(FLD_NODE_TYPE_Menu_Item)) ? q->next->level : level;
- while (lvl > l1) {m->label(nullptr); m++; lvl--;}
+ while (lvl > l1) {m->label(0); m++; lvl--;}
lvl = l1;
}
}
@@ -170,13 +170,13 @@ Node* Menu_Item_Node::make(int flags, Strategy strategy) {
}
if (!p) {
fl_message("Please select a menu widget or a menu item");
- return nullptr;
+ return 0;
}
if (!o) {
o = new Fl_Button(0,0,100,20); // create template widget
}
- Menu_Item_Node* t = nullptr;
+ Menu_Item_Node* t = 0;
if (flags==FL_SUBMENU) {
t = new Submenu_Node();
} else {
@@ -326,8 +326,8 @@ void Menu_Item_Node::write_static(fld::io::Code_Writer& f) {
f.write_h_once("extern void %s(Fl_Menu_*, %s);", callback(),
user_data_type() ? user_data_type() : "void*");
for (int n=0; n < NUM_EXTRA_CODE; n++) {
- if (!extra_code(n).empty() && isdeclare(extra_code(n).c_str()))
- f.write_h_once("%s", extra_code(n).c_str());
+ if (extra_code(n) && extra_code(n)[0] && isdeclare(extra_code(n)))
+ f.write_h_once("%s", extra_code(n));
}
if (callback() && !is_name(callback()) && (callback()[0] != '[')) {
// see if 'o' or 'v' used, to prevent unused argument warnings:
@@ -376,8 +376,8 @@ void Menu_Item_Node::write_static(fld::io::Code_Writer& f) {
// Find the Fl_Menu_ container for this menu item
Node* t = parent; while (t->is_a(FLD_NODE_TYPE_Menu_Item)) t = t->parent;
if (t) {
- Widget_Node *tw = (t->is_widget()) ? static_cast<Widget_Node*>(t) : nullptr;
- Node *q = nullptr;
+ Widget_Node *tw = (t->is_widget()) ? static_cast<Widget_Node*>(t) : 0;
+ Node *q = 0;
// Generate code to call the callback
if (tw->is_a(FLD_NODE_TYPE_Menu_Bar) && ((Menu_Bar_Node*)tw)->is_sys_menu_bar()) {
// Fl_Sys_Menu_Bar removes itself from any parent on macOS, so we
@@ -463,7 +463,7 @@ int Menu_Item_Node::flags() {
if (!o->active()) i |= FL_MENU_INACTIVE;
if (!o->visible()) i |= FL_MENU_INVISIBLE;
if (can_have_children()) {
- if (user_data() == nullptr) i |= FL_SUBMENU;
+ if (user_data() == 0) i |= FL_SUBMENU;
else i |= FL_SUBMENU_POINTER;
}
if (hotspot()) i |= FL_MENU_DIVIDER;
@@ -528,7 +528,7 @@ void Menu_Item_Node::write_item(fld::io::Code_Writer& f) {
f.tag(FLD_MERGEBACK_TAG_WIDGET_CALLBACK, FLD_MERGEBACK_TAG_GENERIC, get_uid());
f.write_c("%s, ", f.indent_plus(1));
} else {
- const char* k = is_name(callback()) ? nullptr : class_name(1);
+ const char* k = is_name(callback()) ? 0 : class_name(1);
if (k) {
f.write_c(" (Fl_Callback*)%s::%s,", k, callback_name(f));
} else {
@@ -638,9 +638,9 @@ void Menu_Item_Node::write_code1(fld::io::Code_Writer& f) {
}
}
for (int n=0; n < NUM_EXTRA_CODE; n++) {
- if (!extra_code(n).empty() && !isdeclare(extra_code(n).c_str())) {
+ if (extra_code(n) && extra_code(n)[0] && !isdeclare(extra_code(n))) {
start_menu_initialiser(f, menuItemInitialized, mname, i);
- f.write_c("%s%s\n", f.indent(), extra_code(n).c_str());
+ f.write_c("%s%s\n", f.indent(), extra_code(n));
}
}
if (menuItemInitialized) {
@@ -669,7 +669,7 @@ void Menu_Base_Node::build_menu() {
}
if (!n) {
if (menusize) delete_menu((Fl_Menu_Item*)(w->menu()));
- w->menu(nullptr);
+ w->menu(0);
menusize = 0;
} else {
n++; // space for null at end of menu
@@ -681,7 +681,7 @@ void Menu_Base_Node::build_menu() {
if (menusize) delete_dependents((Fl_Menu_Item*)(w->menu()));
}
// Menus are already built during the .fl file reading process, so if the
- // end of a menu list is not read yet, the end markers (label==nullptr) will
+ // end of a menu list is not read yet, the end markers (label==0) will
// not be set, and deleting dependents will randomly free memory.
// Clearing the array should avoid that.
memset( (void*)w->menu(), 0, menusize * sizeof(Fl_Menu_Item) );
@@ -706,7 +706,7 @@ void Menu_Base_Node::build_menu() {
m->labeltype(i->o->labeltype());
}
m->shortcut(((Fl_Button*)(i->o))->shortcut());
- m->callback(nullptr,(void*)i);
+ m->callback(0,(void*)i);
m->flags = (i->flags() | i->o->type()) & ~FL_MENU_HEADLINE;
m->labelfont(i->o->labelfont());
m->labelsize(i->o->labelsize());
@@ -715,7 +715,7 @@ void Menu_Base_Node::build_menu() {
m++;
int l1 =
(q->next && q->next->is_a(FLD_NODE_TYPE_Menu_Item)) ? q->next->level : level;
- while (lvl > l1) {m->label(nullptr); m++; lvl--;}
+ while (lvl > l1) {m->label(0); m++; lvl--;}
lvl = l1;
}
}
@@ -723,14 +723,14 @@ void Menu_Base_Node::build_menu() {
}
Node* Menu_Base_Node::click_test(int, int) {
- if (selected) return nullptr; // let user move the widget
+ if (selected) return 0; // let user move the widget
Fl_Menu_* w = (Fl_Menu_*)o;
- if (!menusize) return nullptr;
+ if (!menusize) return 0;
const Fl_Menu_Item* save = w->mvalue();
- w->value((Fl_Menu_Item*)nullptr);
+ w->value((Fl_Menu_Item*)0);
Fl::pushed(w);
w->handle(FL_PUSH);
- Fl::focus(nullptr);
+ Fl::focus(0);
const Fl_Menu_Item* m = w->mvalue();
if (m) {
// restore the settings of toggles & radio items:
@@ -762,21 +762,21 @@ void Menu_Base_Node::copy_properties() {
////////////////////////////////////////////////////////////////
Fl_Menu_Item button_type_menu[] = {
- {"normal",0,nullptr,(void*)nullptr},
- {"popup1",0,nullptr,(void*)Fl_Menu_Button::POPUP1},
- {"popup2",0,nullptr,(void*)Fl_Menu_Button::POPUP2},
- {"popup3",0,nullptr,(void*)Fl_Menu_Button::POPUP3},
- {"popup12",0,nullptr,(void*)Fl_Menu_Button::POPUP12},
- {"popup23",0,nullptr,(void*)Fl_Menu_Button::POPUP23},
- {"popup13",0,nullptr,(void*)Fl_Menu_Button::POPUP13},
- {"popup123",0,nullptr,(void*)Fl_Menu_Button::POPUP123},
- {nullptr}};
+ {"normal",0,0,(void*)0},
+ {"popup1",0,0,(void*)Fl_Menu_Button::POPUP1},
+ {"popup2",0,0,(void*)Fl_Menu_Button::POPUP2},
+ {"popup3",0,0,(void*)Fl_Menu_Button::POPUP3},
+ {"popup12",0,0,(void*)Fl_Menu_Button::POPUP12},
+ {"popup23",0,0,(void*)Fl_Menu_Button::POPUP23},
+ {"popup13",0,0,(void*)Fl_Menu_Button::POPUP13},
+ {"popup123",0,0,(void*)Fl_Menu_Button::POPUP123},
+ {0}};
Menu_Button_Node Menu_Button_Node::prototype;
////////////////////////////////////////////////////////////////
-Fl_Menu_Item dummymenu[] = {{"CHOICE"},{nullptr}};
+Fl_Menu_Item dummymenu[] = {{"CHOICE"},{0}};
Choice_Node Choice_Node::prototype;
@@ -793,14 +793,14 @@ void Input_Choice_Node::copy_properties() {
}
Node* Input_Choice_Node::click_test(int, int) {
- if (selected) return nullptr; // let user move the widget
+ if (selected) return 0; // let user move the widget
Fl_Menu_* w = ((Fl_Input_Choice*)o)->menubutton();
- if (!menusize) return nullptr;
+ if (!menusize) return 0;
const Fl_Menu_Item* save = w->mvalue();
- w->value((Fl_Menu_Item*)nullptr);
+ w->value((Fl_Menu_Item*)0);
Fl::pushed(w);
w->handle(FL_PUSH);
- Fl::focus(nullptr);
+ Fl::focus(0);
const Fl_Menu_Item* m = w->mvalue();
if (m) {
// restore the settings of toggles & radio items:
@@ -816,12 +816,12 @@ Node* Input_Choice_Node::click_test(int, int) {
Menu_Bar_Node Menu_Bar_Node::prototype;
Fl_Menu_Item menu_bar_type_menu[] = {
- {"Fl_Menu_Bar",0,nullptr,(void*)nullptr},
- {"Fl_Sys_Menu_Bar",0,nullptr,(void*)1},
- {nullptr}};
+ {"Fl_Menu_Bar",0,0,(void*)0},
+ {"Fl_Sys_Menu_Bar",0,0,(void*)1},
+ {0}};
Menu_Bar_Node::Menu_Bar_Node()
-: _proxy_name(nullptr)
+: _proxy_name(0)
{
}
@@ -835,14 +835,16 @@ Menu_Bar_Node::~Menu_Bar_Node() {
This test fails if subclass() is the name of a class that the user may have
derived from Fl_Sys_Menu_Bar.
*/
-bool Menu_Bar_Node::is_sys_menu_bar() {
- if (o->type()==1) return true;
- return (subclass() == "Fl_Sys_Menu_Bar");
+int Menu_Bar_Node::is_sys_menu_bar() {
+ if (o->type()==1) return 1;
+ const char* sc = subclass();
+ return (sc && strcmp(sc, "Fl_Sys_Menu_Bar") == 0);
}
-std::string Menu_Bar_Node::sys_menubar_name() const {
- if (!subclass().empty())
- return subclass();
+const char* Menu_Bar_Node::sys_menubar_name() const {
+ const char* sc = subclass();
+ if (sc && sc[0])
+ return sc;
else
return "Fl_Sys_Menu_Bar";
}
@@ -850,7 +852,7 @@ std::string Menu_Bar_Node::sys_menubar_name() const {
const char *Menu_Bar_Node::sys_menubar_proxy_name() {
if (!_proxy_name)
_proxy_name = (char*)::malloc(128);
- ::snprintf(_proxy_name, 63, "%s_Proxy", sys_menubar_name().c_str());
+ ::snprintf(_proxy_name, 63, "%s_Proxy", sys_menubar_name());
return _proxy_name;
}
@@ -868,8 +870,8 @@ void Menu_Bar_Node::write_static(fld::io::Code_Writer& f) {
" : %s(x, y, w, h, l) { }\n"
" void *_parent_class;\n"
"};\n",
- sys_menubar_proxy_name(), sys_menubar_name().c_str(),
- sys_menubar_proxy_name(), sys_menubar_name().c_str()
+ sys_menubar_proxy_name(), sys_menubar_name(),
+ sys_menubar_proxy_name(), sys_menubar_name()
);
}
}