diff options
| author | Matthias Melcher <fltk@matthiasm.com> | 2005-08-15 23:07:20 +0000 |
|---|---|---|
| committer | Matthias Melcher <fltk@matthiasm.com> | 2005-08-15 23:07:20 +0000 |
| commit | 78e42749634776a377eb3f0ceadea6276213ec7e (patch) | |
| tree | 7fb45a6dd35e54204d7ac7104fcc9b3cb80466a3 /fluid/Fl_Widget_Type.cxx | |
| parent | 41c089f3c13261e4606d43c1682fb4b3501e6670 (diff) | |
Added support for Fl_Window::size_range() in FLUID. There are no UI elements for increment or aspect ratio.
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.1@4515 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
Diffstat (limited to 'fluid/Fl_Widget_Type.cxx')
| -rw-r--r-- | fluid/Fl_Widget_Type.cxx | 95 |
1 files changed, 95 insertions, 0 deletions
diff --git a/fluid/Fl_Widget_Type.cxx b/fluid/Fl_Widget_Type.cxx index 170b0fd1d..f0ba996bf 100644 --- a/fluid/Fl_Widget_Type.cxx +++ b/fluid/Fl_Widget_Type.cxx @@ -1284,8 +1284,94 @@ void textcolor_cb(Fl_Button* i, void* v) { //////////////////////////////////////////////////////////////// // Kludges to the panel for subclasses: +void min_w_cb(Fl_Value_Input* i, void* v) { + if (v == LOAD) { + if (!current_widget->is_window()) {i->parent()->hide(); return;} + i->parent()->show(); + i->value(((Fl_Window_Type*)current_widget)->sr_min_w); + } else { + int n = i->value(); + for (Fl_Type *o = Fl_Type::first; o; o = o->next) { + if (o->selected && o->is_window()) { + ((Fl_Window_Type*)current_widget)->sr_min_w = n; + } + } + } +} + +void min_h_cb(Fl_Value_Input* i, void* v) { + if (v == LOAD) { + i->value(((Fl_Window_Type*)current_widget)->sr_min_h); + } else { + int n = i->value(); + for (Fl_Type *o = Fl_Type::first; o; o = o->next) { + if (o->selected && o->is_window()) { + ((Fl_Window_Type*)current_widget)->sr_min_h = n; + } + } + } +} + +void max_w_cb(Fl_Value_Input* i, void* v) { + if (v == LOAD) { + i->value(((Fl_Window_Type*)current_widget)->sr_max_w); + } else { + int n = i->value(); + for (Fl_Type *o = Fl_Type::first; o; o = o->next) { + if (o->selected && o->is_window()) { + ((Fl_Window_Type*)current_widget)->sr_max_w = n; + } + } + } +} + +void max_h_cb(Fl_Value_Input* i, void* v) { + if (v == LOAD) { + i->value(((Fl_Window_Type*)current_widget)->sr_max_h); + } else { + int n = i->value(); + for (Fl_Type *o = Fl_Type::first; o; o = o->next) { + if (o->selected && o->is_window()) { + ((Fl_Window_Type*)current_widget)->sr_max_h = n; + } + } + } +} + +void set_min_size_cb(Fl_Button*, void* v) { + if (v == LOAD) { + } else { + for (Fl_Type *o = Fl_Type::first; o; o = o->next) { + if (o->selected && o->is_window()) { + Fl_Window_Type *win = (Fl_Window_Type*)current_widget; + win->sr_min_w = win->o->w(); + win->sr_min_h = win->o->h(); + } + } + propagate_load(the_panel, LOAD); + } +} + +void set_max_size_cb(Fl_Button*, void* v) { + if (v == LOAD) { + } else { + for (Fl_Type *o = Fl_Type::first; o; o = o->next) { + if (o->selected && o->is_window()) { + Fl_Window_Type *win = (Fl_Window_Type*)current_widget; + win->sr_max_w = win->o->w(); + win->sr_max_h = win->o->h(); + } + } + propagate_load(the_panel, LOAD); + } +} + void slider_size_cb(Fl_Value_Input* i, void* v) { if (v == LOAD) { + if (current_widget->is_window()) + i->parent()->hide(); + else + i->parent()->show(); if (current_widget->is_valuator()!=2) {i->deactivate(); return;} i->activate(); i->value(((Fl_Slider*)(current_widget->o))->slider_size()); @@ -1523,6 +1609,15 @@ void live_mode_cb(Fl_Button*o,void *v) { live_window->resizable(live_widget); live_window->set_modal(); // block all other UI live_window->callback(leave_live_mode_cb); + if (current_widget->is_window()) { + Fl_Window_Type *w = (Fl_Window_Type*)current_widget; + int mw = w->sr_min_w; if (mw>0) mw += 20; + int mh = w->sr_min_h; if (mh>0) mh += 55; + int MW = w->sr_max_w; if (MW>0) MW += 20; + int MH = w->sr_max_h; if (MH>2) MH += 55; + if (mw || mh || MW || MH) + live_window->size_range(mw, mh, MW, MH); + } live_window->show(); } else o->value(0); } else o->value(0); |
