mirror of
https://github.com/tuxbox-neutrino/neutrino.git
synced 2025-08-29 08:21:12 +02:00
CComponentsForm: fix position of replaced item
If cc-item is bound on a parent form, it's not enough to replace the item object only, also properties like parent and index must be moved to new item to ensure that positions are calculated correctly. But it's matter for unbound cc-items.
This commit is contained in:
@@ -242,6 +242,8 @@ class CComponentsItem : public CComponents
|
|||||||
|
|
||||||
///sets pointer to the form object in which this item is embedded.
|
///sets pointer to the form object in which this item is embedded.
|
||||||
virtual void setParent(CComponentsItem *parent){cc_parent = parent;};
|
virtual void setParent(CComponentsItem *parent){cc_parent = parent;};
|
||||||
|
///returns pointer to the form object in which this item is embedded.
|
||||||
|
virtual CComponentsItem * getParent(){return cc_parent;};
|
||||||
|
|
||||||
///abstract: paint item, arg: do_save_bg see paintInit() above
|
///abstract: paint item, arg: do_save_bg see paintInit() above
|
||||||
virtual void paint(bool do_save_bg = CC_SAVE_SCREEN_YES) = 0;
|
virtual void paint(bool do_save_bg = CC_SAVE_SCREEN_YES) = 0;
|
||||||
|
@@ -188,9 +188,14 @@ CComponentsItem* CComponentsForm::getCCItem(const uint& cc_item_id)
|
|||||||
void CComponentsForm::replaceCCItem(const uint& cc_item_id, CComponentsItem* new_cc_Item)
|
void CComponentsForm::replaceCCItem(const uint& cc_item_id, CComponentsItem* new_cc_Item)
|
||||||
{
|
{
|
||||||
if (!v_cc_items.empty()){
|
if (!v_cc_items.empty()){
|
||||||
if (v_cc_items[cc_item_id]){
|
CComponentsItem* old_Item = v_cc_items[cc_item_id];
|
||||||
delete v_cc_items[cc_item_id];
|
if (old_Item){
|
||||||
v_cc_items[cc_item_id] = NULL;
|
if (old_Item->getParent()){
|
||||||
|
new_cc_Item->setParent(old_Item);
|
||||||
|
new_cc_Item->setIndex(old_Item->getIndex());
|
||||||
|
}
|
||||||
|
delete old_Item;
|
||||||
|
old_Item = NULL;
|
||||||
v_cc_items[cc_item_id] = new_cc_Item;
|
v_cc_items[cc_item_id] = new_cc_Item;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user