And another one's gone...

This commit is contained in:
2025-08-09 12:01:00 -04:00
parent 73df5edac6
commit 04232a17c1
2 changed files with 11 additions and 19 deletions

View File

@ -83,15 +83,10 @@ FltkViewport::FltkViewport (int X, int Y, int W, int H, const char *label):
gadgetOrientation[1] = GADGET_HORIZONTAL;
gadgetOrientation[2] = GADGET_VERTICAL;
gadgetOrientation[3] = GADGET_HORIZONTAL;
gadgets =
new container::typed::List <object::TypedPointer < Fl_Widget> >
(true);
}
FltkViewport::~FltkViewport ()
{
delete gadgets;
DBG_OBJ_DELETE ();
}
@ -106,15 +101,15 @@ void FltkViewport::adjustScrollbarsAndGadgetsAllocation ()
if (vscrollbar->visible ())
visibility |= 2;
if (gadgets->size () > 0) {
if (gadgets.size () > 0) {
switch (gadgetOrientation [visibility]) {
case GADGET_VERTICAL:
hdiff = SCROLLBAR_THICKNESS;
vdiff = SCROLLBAR_THICKNESS * gadgets->size ();
vdiff = SCROLLBAR_THICKNESS * gadgets.size ();
break;
case GADGET_HORIZONTAL:
hdiff = SCROLLBAR_THICKNESS * gadgets->size ();
hdiff = SCROLLBAR_THICKNESS * gadgets.size ();
vdiff = SCROLLBAR_THICKNESS;
break;
}
@ -137,9 +132,8 @@ void FltkViewport::adjustScrollbarsAndGadgetsAllocation ()
//int X = x () + w () - SCROLLBAR_THICKNESS;
//int Y = y () + h () - SCROLLBAR_THICKNESS;
for (Iterator <TypedPointer < Fl_Widget> > it = gadgets->iterator ();
it.hasNext (); ) {
Fl_Widget *widget = it.getNext()->getTypedValue ();
for( auto &widget : gadgets )
{
widget->resize(x (), y (), SCROLLBAR_THICKNESS, SCROLLBAR_THICKNESS);
/* FIXME: This has no effect */
@ -205,9 +199,8 @@ void FltkViewport::draw_area (void *data, int x, int y, int w, int h)
vp->FltkWidgetView::draw ();
for (Iterator <TypedPointer < Fl_Widget> > it = vp->gadgets->iterator();
it.hasNext (); ) {
Fl_Widget *widget = it.getNext()->getTypedValue ();
for( auto &widget: vp->gadgets )
{
vp->draw_child (*widget);
}
@ -666,11 +659,11 @@ void FltkViewport::setGadgetOrientation (bool hscrollbarVisible,
adjustScrollbarsAndGadgetsAllocation ();
}
void FltkViewport::addGadget (Fl_Widget *gadget)
void FltkViewport::addGadget (std::unique_ptr< Fl_Widget > gadget)
{
/** \bug Reparent? */
gadgets->append (new TypedPointer < Fl_Widget> (gadget));
gadgets.push_back( std::move( gadget ) );
adjustScrollbarsAndGadgetsAllocation ();
}

View File

@ -53,8 +53,7 @@ private:
Fl_Scrollbar *vscrollbar, *hscrollbar;
GadgetOrientation gadgetOrientation[4];
lout::container::typed::List <lout::object::TypedPointer < Fl_Widget> >
*gadgets;
std::list< std::unique_ptr < Fl_Widget > > gadgets;
void adjustScrollbarsAndGadgetsAllocation ();
void adjustScrollbarValues ();
@ -104,7 +103,7 @@ public:
void setGadgetOrientation (bool hscrollbarVisible, bool vscrollbarVisible,
GadgetOrientation gadgetOrientation);
void setDragScroll (bool enable) { hasDragScroll = enable ? 1 : 0; }
void addGadget (Fl_Widget *gadget);
void addGadget( std::unique_ptr< Fl_Widget > gadget );
void setScrollbarOnLeft (bool enable);
void setScrollbarPageMode(bool enable);
void setPageOverlap(int overlap);