GUIFormSpecMenu::OnEvent code style update and small refactor

* Make method (more) consistent with current code stlye
* Move index into loop constructor after @rubenwardy's suggestion
* Cache inv_s->getList(s.listname), which removes a possibly bad scenario
of inv_s being null.
* Properly check for validity
This commit is contained in:
est31 2015-06-16 20:33:07 +02:00
parent 7b7f8b7225
commit 7a90b31b30
1 changed files with 79 additions and 86 deletions

View File

@ -3116,6 +3116,7 @@ bool GUIFormSpecMenu::OnEvent(const SEvent& event)
Inventory *inv_selected = NULL;
Inventory *inv_s = NULL;
InventoryList *list_s = NULL;
if (m_selected_item) {
inv_selected = m_invmgr->getInventory(m_selected_item->inventoryloc);
@ -3137,23 +3138,23 @@ bool GUIFormSpecMenu::OnEvent(const SEvent& event)
break;
}
InventoryList *list = inv_s->getList(s.listname);
if(list == NULL) {
list_s = inv_s->getList(s.listname);
if (list_s == NULL) {
verbosestream << "InventoryMenu: The selected inventory list \""
<< s.listname << "\" does not exist" << std::endl;
s.i = -1; // make it invalid again
break;
}
if((u32)s.i >= list->getSize()) {
if ((u32)s.i >= list_s->getSize()) {
infostream << "InventoryMenu: The selected inventory list \""
<< s.listname << "\" is too small (i=" << s.i << ", size="
<<list->getSize()<<")"<<std::endl;
<< list_s->getSize() << ")" << std::endl;
s.i = -1; // make it invalid again
break;
}
s_count = list->getItem(s.i).count;
s_count = list_s->getItem(s.i).count;
} while(0);
bool identical = (m_selected_item != NULL) && s.isValid() &&
@ -3206,8 +3207,7 @@ bool GUIFormSpecMenu::OnEvent(const SEvent& event)
if (s.isValid() && s.listname == "craftpreview") {
// Craft preview has been clicked: craft
craft_amount = (button == 2 ? 10 : 1);
}
else if(m_selected_item == NULL) {
} else if (m_selected_item == NULL) {
if (s_count != 0) {
// Non-empty stack has been clicked: select or shift-move it
m_selected_item = new ItemSpec(s);
@ -3233,8 +3233,7 @@ bool GUIFormSpecMenu::OnEvent(const SEvent& event)
shift_move_amount = 1;
}
}
}
else { // m_selected_item != NULL
} else { // m_selected_item != NULL
assert(m_selected_amount >= 1);
if (s.isValid()) {
@ -3276,8 +3275,7 @@ bool GUIFormSpecMenu::OnEvent(const SEvent& event)
// Dragged to different slot: move all selected
move_amount = m_selected_amount;
}
}
else if(m_selected_item != NULL && m_selected_dragging &&
} else if (m_selected_item != NULL && m_selected_dragging &&
!(getAbsoluteClippingRect().isPointInside(m_pointer))) {
// Dragged outside of window: drop all selected
drop_amount = m_selected_amount;
@ -3289,8 +3287,7 @@ bool GUIFormSpecMenu::OnEvent(const SEvent& event)
// + click changes to drop one item when moved mode
if (button == 1 && m_selected_item != NULL)
m_rmouse_auto_place = !m_rmouse_auto_place;
}
else if(updown == -1) {
} else if (updown == -1) {
// Mouse has been moved and rmb is down and mouse pointer just
// entered a new inventory field (checked in the entry-if, this
// is the only action here that is generated by mouse movement)
@ -3302,7 +3299,7 @@ bool GUIFormSpecMenu::OnEvent(const SEvent& event)
// or contains the same item type as what is going to be
// moved
InventoryList *list_from = inv_selected->getList(m_selected_item->listname);
InventoryList *list_to = inv_s->getList(s.listname);
InventoryList *list_to = list_s;
assert(list_from && list_to);
ItemStack stack_from = list_from->getItem(m_selected_item->i);
ItemStack stack_to = list_to->getItem(s.i);
@ -3321,7 +3318,7 @@ bool GUIFormSpecMenu::OnEvent(const SEvent& event)
assert(inv_selected && inv_s);
InventoryList *list_from = inv_selected->getList(m_selected_item->listname);
InventoryList *list_to = inv_s->getList(s.listname);
InventoryList *list_to = list_s;
assert(list_from && list_to);
ItemStack stack_from = list_from->getItem(m_selected_item->i);
ItemStack stack_to = list_to->getItem(s.i);
@ -3375,8 +3372,8 @@ bool GUIFormSpecMenu::OnEvent(const SEvent& event)
break;
u32 to_inv_ind = (i + 1) % mis;
const ListRingSpec &to_inv_sp = m_inventory_rings[to_inv_ind];
InventoryList *list_from = inv_s->getList(s.listname);
if (!list_from)
InventoryList *list_from = list_s;
if (!s.isValid())
break;
Inventory *inv_to = m_invmgr->getInventory(to_inv_sp.inventoryloc);
if (!inv_to)
@ -3388,10 +3385,10 @@ bool GUIFormSpecMenu::OnEvent(const SEvent& event)
assert(shift_move_amount <= stack_from.count);
// find a place (or more than one) to add the new item
u32 slot_to = 0;
u32 ilt_size = list_to->getSize();
ItemStack leftover;
for (; slot_to < ilt_size && shift_move_amount > 0; slot_to++) {
for (u32 slot_to = 0; slot_to < ilt_size
&& shift_move_amount > 0; slot_to++) {
list_to->itemFits(slot_to, stack_from, &leftover);
if (leftover.count < stack_from.count) {
infostream << "Handing IACTION_MOVE to manager" << std::endl;
@ -3434,8 +3431,7 @@ bool GUIFormSpecMenu::OnEvent(const SEvent& event)
a->from_list = m_selected_item->listname;
a->from_i = m_selected_item->i;
m_invmgr->inventoryAction(a);
}
else if(craft_amount > 0) {
} else if (craft_amount > 0) {
m_selected_content_guess = ItemStack(); // Clear
// Send IACTION_CRAFT
@ -3524,8 +3520,7 @@ bool GUIFormSpecMenu::OnEvent(const SEvent& event)
s.send = false;
return true;
}
}
else if ((s.ftype == f_DropDown) &&
} else if ((s.ftype == f_DropDown) &&
(s.fid == event.GUIEvent.Caller->getID())) {
// only send the changed dropdown
for (u32 i = 0; i < m_fields.size(); i++) {
@ -3546,10 +3541,8 @@ bool GUIFormSpecMenu::OnEvent(const SEvent& event)
}
}
return true;
}
else if ((s.ftype == f_ScrollBar) &&
(s.fid == event.GUIEvent.Caller->getID()))
{
} else if ((s.ftype == f_ScrollBar) &&
(s.fid == event.GUIEvent.Caller->getID())) {
s.fdefault = L"Changed";
acceptInput(quit_mode_no);
s.fdefault = L"";