TCC khotkeys: fixed logic related to action and condition item selection after deleting an existing item.

Signed-off-by: Michele Calgaro <michele.calgaro@yahoo.it>
(cherry picked from commit 0c22a14875)
r14.0.x
Michele Calgaro 2 years ago
parent 63b2f6622d
commit 371ad533a3
Signed by: MicheleC
GPG Key ID: 2A75B7CA8ADED5CF

@ -149,7 +149,10 @@ void Action_list_widget::new_selected( int type_P )
void Action_list_widget::copy_pressed()
{
if ( !selected_item )
{
return;
}
actions_listview->setSelected( create_listview_item( selected_item->action(),
selected_item->parent() ? NULL : actions_listview, selected_item->parent(),
selected_item, true ), true );
@ -157,14 +160,32 @@ void Action_list_widget::copy_pressed()
void Action_list_widget::delete_pressed()
{
delete selected_item; // CHECKME snad vyvola signaly pro enable()
if ( !selected_item )
{
return;
}
Action_list_item *nextItem = static_cast< Action_list_item* >(selected_item->nextSibling());
delete selected_item;
selected_item = NULL;
if (!nextItem)
{
// If the last item of the list was deleted, get the new last item
nextItem = static_cast< Action_list_item* >(actions_listview->lastItem());
}
if (nextItem)
{
actions_listview->setSelected(nextItem, true);
current_changed(nextItem);
}
}
void Action_list_widget::modify_pressed()
{
if ( !selected_item )
{
return;
}
edit_listview_item( selected_item );
}

@ -214,7 +214,10 @@ void Condition_list_widget::new_selected( int type_P )
void Condition_list_widget::copy_pressed()
{
if ( !selected_item )
{
return;
}
conditions_listview->setSelected( create_listview_item(
selected_item->condition()->copy( selected_item->condition()->parent()),
selected_item->parent() ? NULL : conditions_listview,
@ -224,18 +227,32 @@ void Condition_list_widget::copy_pressed()
void Condition_list_widget::delete_pressed()
{
if ( selected_item )
if ( !selected_item )
{
return;
}
Condition_list_item *nextItem = static_cast< Condition_list_item* >(selected_item->nextSibling());
conditions.remove( selected_item->condition()); // we own it
delete selected_item; // CHECKME snad vyvola signaly pro enable()
delete selected_item;
selected_item = NULL;
if (!nextItem)
{
// If the last item of the list was deleted, get the new last item
nextItem = static_cast< Condition_list_item* >(conditions_listview->lastItem());
}
if (nextItem)
{
conditions_listview->setSelected(nextItem, true);
current_changed(nextItem);
}
}
void Condition_list_widget::modify_pressed()
{
if ( !selected_item )
{
return;
}
edit_listview_item( selected_item );
}

Loading…
Cancel
Save