diff options
| author | Matthias Melcher <fltk@matthiasm.com> | 2010-04-10 22:16:55 +0000 |
|---|---|---|
| committer | Matthias Melcher <fltk@matthiasm.com> | 2010-04-10 22:16:55 +0000 |
| commit | 2fe7eabb6249c4c9ff0f6e697679a7f9f85ce0eb (patch) | |
| tree | fbfb2957763ed47a673526a142aa33b318720065 /fluid/Fl_Widget_Type.cxx | |
| parent | 927fd351655320ed90ceecedaf9ea58656594650 (diff) | |
Completed the alignment pulldown menus for all new alignment styles. Hope you guys like it.
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3@7478 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
Diffstat (limited to 'fluid/Fl_Widget_Type.cxx')
| -rw-r--r-- | fluid/Fl_Widget_Type.cxx | 38 |
1 files changed, 33 insertions, 5 deletions
diff --git a/fluid/Fl_Widget_Type.cxx b/fluid/Fl_Widget_Type.cxx index 0fde0a682..c47519752 100644 --- a/fluid/Fl_Widget_Type.cxx +++ b/fluid/Fl_Widget_Type.cxx @@ -1170,19 +1170,47 @@ void align_cb(Fl_Button* i, void *v) { } } -void align_text_image_cb(Fl_Menu_Button* i, void *v) { +void align_position_cb(Fl_Choice *i, void *v) { + if (v == LOAD) { + if (current_widget->is_menu_item()) {i->deactivate(); return;} else i->activate(); + Fl_Menu_Item *mi = (Fl_Menu_Item*)i->menu(); + Fl_Align b = current_widget->o->align() & FL_ALIGN_POSITION_MASK; + for (;mi->text;mi++) { + if (mi->argument()==b) + i->value(mi); + } + } else { + const Fl_Menu_Item *mi = i->menu() + i->value(); + Fl_Align b = Fl_Align(long(mi->user_data())); + int mod = 0; + for (Fl_Type *o = Fl_Type::first; o; o = o->next) { + if (o->selected && o->is_widget()) { + Fl_Widget_Type* q = (Fl_Widget_Type*)o; + Fl_Align x = q->o->align(); + Fl_Align y = (x & ~FL_ALIGN_POSITION_MASK) | b; + //printf("x:%04x y:%04x b:%04x\n", x, y, b); + if (x != y) { + q->o->align(y); + q->redraw(); + mod = 1; + } + } + } + if (mod) set_modflag(1); + } +} + +void align_text_image_cb(Fl_Choice *i, void *v) { if (v == LOAD) { if (current_widget->is_menu_item()) {i->deactivate(); return;} else i->activate(); Fl_Menu_Item *mi = (Fl_Menu_Item*)i->menu(); Fl_Align b = current_widget->o->align() & FL_ALIGN_IMAGE_MASK; for (;mi->text;mi++) { if (mi->argument()==b) - mi->set(); - else - mi->clear(); + i->value(mi); } } else { - const Fl_Menu_Item *mi = i->mvalue(); + const Fl_Menu_Item *mi = i->menu() + i->value(); Fl_Align b = Fl_Align(long(mi->user_data())); int mod = 0; for (Fl_Type *o = Fl_Type::first; o; o = o->next) { |
