@@ -105,7 +105,7 @@ namespace lsp
105105 // Unlink all items
106106 for (size_t i=0 , n=vItems.size (); i<n; ++i)
107107 {
108- GraphItem *item = vItems.get (i);
108+ Widget *item = vItems.get (i);
109109 if (item == NULL )
110110 continue ;
111111
@@ -237,10 +237,10 @@ namespace lsp
237237
238238 for (size_t i=0 , n = vItems.size (); i<n; ++i)
239239 {
240- tk::GraphItem *gi = vItems.get (i);
241- if (gi == NULL )
240+ tk::Widget *w = vItems.get (i);
241+ if (w == NULL )
242242 continue ;
243- tk::Slot *slot = gi ->slot (SLOT_RESIZE_PARENT);
243+ tk::Slot *slot = w ->slot (SLOT_RESIZE_PARENT);
244244 if (slot != NULL )
245245 {
246246 ws::rectangle_t xr = *r;
@@ -346,14 +346,14 @@ namespace lsp
346346 sync_lists ();
347347
348348 // Compute list of discarded widgets
349- lltl::ptrset<GraphItem > discarded;
349+ lltl::ptrset<tk::Widget > discarded;
350350 {
351351 lltl::darray<w_alloc_t > grouped;
352352
353353 // Fill all grouped widgets
354354 for (size_t i=0 , n=vItems.size (); i<n; ++i)
355355 {
356- GraphItem *gi = vItems.get (i);
356+ tk:: GraphItem *gi = tk::widget_cast<tk::GraphItem>( vItems.get (i) );
357357 if ((gi == NULL ) || (!gi->visibility ()->get ()))
358358 continue ;
359359
@@ -397,14 +397,14 @@ namespace lsp
397397 // Draw all objects
398398 for (size_t i=0 , n=vItems.size (); i<n; ++i)
399399 {
400- GraphItem *gi = vItems.get (i);
401- if ((gi == NULL ) || (!gi ->visibility ()->get ()))
400+ tk::Widget *w = vItems.get (i);
401+ if ((w == NULL ) || (!w ->visibility ()->get ()))
402402 continue ;
403- if (discarded.contains (gi ))
403+ if (discarded.contains (w ))
404404 continue ;
405405
406- gi ->render (s, &sICanvas , true );
407- gi ->commit_redraw ();
406+ w ->render (s, &sICanvas , true );
407+ w ->commit_redraw ();
408408 }
409409 }
410410
@@ -416,14 +416,14 @@ namespace lsp
416416
417417 for (size_t i=0 , n=vItems.size (); i<n; ++i)
418418 {
419- GraphItem *gi = vItems.get (i);
420- if (gi == NULL )
419+ tk::Widget *w = vItems.get (i);
420+ if (w == NULL )
421421 continue ;
422422
423- GraphOrigin *go = widget_cast<GraphOrigin>(gi );
423+ tk:: GraphOrigin *go = widget_cast<tk:: GraphOrigin>(w );
424424 if (go != NULL )
425425 vOrigins.add (go);
426- GraphAxis *ga = widget_cast<GraphAxis>(gi );
426+ tk:: GraphAxis *ga = widget_cast<tk:: GraphAxis>(w );
427427 if (ga != NULL )
428428 {
429429 vAxis.add (ga);
@@ -449,43 +449,46 @@ namespace lsp
449449 // Lookup widgets
450450 for (size_t i=0 , n=vItems.size (); i<n; ++i)
451451 {
452- GraphItem *gi = vItems.get (i);
453- if ((gi == NULL ) || (!gi ->is_visible_child_of (this ) ))
452+ tk::Widget *w = vItems.get (i);
453+ if (!w ->is_visible_child_of (this ))
454454 continue ;
455455
456- if (gi->inside (x, y))
457- return gi;
456+ if ((w != NULL ) && (w->inside (x, y)))
457+ {
458+ Widget *child = w->find_widget (x, y);
459+ return (child != NULL ) ? child : w;
460+ }
458461 }
459462 return NULL ;
460463 }
461464
462465 void Graph::on_add_item (void *obj, Property *prop, void *w)
463466 {
464- GraphItem *item = widget_ptrcast<GraphItem >(w);
467+ Widget *item = widget_ptrcast<Widget >(w);
465468 if (item == NULL )
466469 return ;
467470
468- Graph *_this = widget_ptrcast<Graph>(obj);
469- if (_this == NULL )
471+ Graph *self = widget_ptrcast<Graph>(obj);
472+ if (self == NULL )
470473 return ;
471474
472- item->set_parent (_this );
473- _this ->query_draw ();
475+ item->set_parent (self );
476+ self ->query_draw ();
474477 }
475478
476479 void Graph::on_remove_item (void *obj, Property *prop, void *w)
477480 {
478- GraphItem *item = widget_ptrcast<GraphItem >(w);
481+ Widget *item = widget_ptrcast<Widget >(w);
479482 if (item == NULL )
480483 return ;
481484
482- Graph *_this = widget_ptrcast<Graph>(obj);
483- if (_this == NULL )
485+ Graph *self = widget_ptrcast<Graph>(obj);
486+ if (self == NULL )
484487 return ;
485488
486489 // Remove widget from supplementary structures
487- _this ->unlink_widget (item);
488- _this ->query_draw ();
490+ self ->unlink_widget (item);
491+ self ->query_draw ();
489492 }
490493
491494 bool Graph::origin (size_t index, float *x, float *y)
@@ -512,22 +515,27 @@ namespace lsp
512515 {
513516 GraphItem *item = widget_cast<GraphItem>(child);
514517 if (item == NULL )
515- return STATUS_BAD_TYPE;
518+ {
519+ GraphEmbed *embed = widget_cast<GraphEmbed>(child);
520+ if (embed == NULL )
521+ return STATUS_BAD_TYPE;
522+ }
516523
517- status_t res = vItems.add (item);
518- if (res == STATUS_OK)
524+ status_t res = vItems.add (child);
525+ if (res != STATUS_OK)
526+ return res;
527+
528+ GraphOrigin *go = widget_cast<GraphOrigin>(child);
529+ if (go != NULL )
530+ vOrigins.add (go);
531+ GraphAxis *ga = widget_cast<GraphAxis>(child);
532+ if (ga != NULL )
519533 {
520- GraphOrigin *go = widget_cast<GraphOrigin>(child);
521- if (go != NULL )
522- vOrigins.add (go);
523- GraphAxis *ga = widget_cast<GraphAxis>(child);
524- if (ga != NULL )
525- {
526- vAxis.add (ga);
527- if (ga->basis ()->get ())
528- vBasis.add (ga);
529- }
534+ vAxis.add (ga);
535+ if (ga->basis ()->get ())
536+ vBasis.add (ga);
530537 }
538+
531539 return res;
532540 }
533541
@@ -608,9 +616,9 @@ namespace lsp
608616
609617 // Return success
610618 if (x != NULL )
611- *x = xx;
619+ *x = xx + canvas_aleft () ;
612620 if (y != NULL )
613- *y = yy;
621+ *y = yy + canvas_atop () ;
614622
615623 return STATUS_OK;
616624 }
0 commit comments