summaryrefslogtreecommitdiffstats
path: root/src/extension/effect.cpp
diff options
context:
space:
mode:
authorTed Gould <ted@gould.cx>2006-01-30 05:12:10 +0000
committergouldtj <gouldtj@users.sourceforge.net>2006-01-30 05:12:10 +0000
commit996e45756b1fe7097678f1192d83c40fd0011be3 (patch)
tree19779e217dad10122be1dc2a6be0df707fd47eb8 /src/extension/effect.cpp
parentr10817@tres: ted | 2006-01-29 15:45:22 -0800 (diff)
downloadinkscape-996e45756b1fe7097678f1192d83c40fd0011be3.tar.gz
inkscape-996e45756b1fe7097678f1192d83c40fd0011be3.zip
r10818@tres: ted | 2006-01-29 16:08:07 -0800
Whoo hoo, we do submenus now too! (bzr r53)
Diffstat (limited to 'src/extension/effect.cpp')
-rw-r--r--src/extension/effect.cpp24
1 files changed, 20 insertions, 4 deletions
diff --git a/src/extension/effect.cpp b/src/extension/effect.cpp
index 1d0c4c4af..f88833ec4 100644
--- a/src/extension/effect.cpp
+++ b/src/extension/effect.cpp
@@ -68,6 +68,7 @@ Effect::merge_menu (Inkscape::XML::Node * base,
Inkscape::XML::Node * mergee) {
Glib::ustring mergename;
Inkscape::XML::Node * tomerge = NULL;
+ Inkscape::XML::Node * submenu = NULL;
/* printf("Merge menu with '%s' '%s' '%s'\n",
base != NULL ? base->name() : "NULL",
@@ -89,8 +90,7 @@ Effect::merge_menu (Inkscape::XML::Node * base,
mergename = _(menuname);
}
- base->appendChild(tomerge);
- Inkscape::GC::release(tomerge);
+ int position = -1;
if (start != NULL) {
Inkscape::XML::Node * menupass;
@@ -116,15 +116,31 @@ Effect::merge_menu (Inkscape::XML::Node * base,
Glib::ustring compare(_(compare_char));
+ if (mergename == compare) {
+ Inkscape::GC::release(tomerge);
+ tomerge = NULL;
+ submenu = menupass;
+ break;
+ }
+
if (mergename < compare) {
- tomerge->setPosition(menupass->position());
+ position = menupass->position();
break;
}
} // for menu items
} // start != NULL
+ if (tomerge != NULL) {
+ base->appendChild(tomerge);
+ Inkscape::GC::release(tomerge);
+ if (position != -1)
+ tomerge->setPosition(position);
+ }
+
if (patern != NULL) {
- merge_menu(tomerge, tomerge->firstChild(), patern->firstChild(), mergee);
+ if (submenu == NULL)
+ submenu = tomerge;
+ merge_menu(submenu, submenu->firstChild(), patern->firstChild(), mergee);
}
return;