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 validitymaster
parent
7b7f8b7225
commit
7a90b31b30
|
@ -3051,7 +3051,7 @@ bool GUIFormSpecMenu::DoubleClickDetection(const SEvent event)
|
||||||
|
|
||||||
bool GUIFormSpecMenu::OnEvent(const SEvent& event)
|
bool GUIFormSpecMenu::OnEvent(const SEvent& event)
|
||||||
{
|
{
|
||||||
if(event.EventType==EET_KEY_INPUT_EVENT) {
|
if (event.EventType==EET_KEY_INPUT_EVENT) {
|
||||||
KeyPress kp(event.KeyInput);
|
KeyPress kp(event.KeyInput);
|
||||||
if (event.KeyInput.PressedDown && ( (kp == EscapeKey) ||
|
if (event.KeyInput.PressedDown && ( (kp == EscapeKey) ||
|
||||||
(kp == getKeySetting("keymap_inventory")) || (kp == CancelKey))) {
|
(kp == getKeySetting("keymap_inventory")) || (kp == CancelKey))) {
|
||||||
|
@ -3116,8 +3116,9 @@ bool GUIFormSpecMenu::OnEvent(const SEvent& event)
|
||||||
|
|
||||||
Inventory *inv_selected = NULL;
|
Inventory *inv_selected = NULL;
|
||||||
Inventory *inv_s = NULL;
|
Inventory *inv_s = NULL;
|
||||||
|
InventoryList *list_s = NULL;
|
||||||
|
|
||||||
if(m_selected_item) {
|
if (m_selected_item) {
|
||||||
inv_selected = m_invmgr->getInventory(m_selected_item->inventoryloc);
|
inv_selected = m_invmgr->getInventory(m_selected_item->inventoryloc);
|
||||||
sanity_check(inv_selected);
|
sanity_check(inv_selected);
|
||||||
sanity_check(inv_selected->getList(m_selected_item->listname) != NULL);
|
sanity_check(inv_selected->getList(m_selected_item->listname) != NULL);
|
||||||
|
@ -3125,35 +3126,35 @@ bool GUIFormSpecMenu::OnEvent(const SEvent& event)
|
||||||
|
|
||||||
u32 s_count = 0;
|
u32 s_count = 0;
|
||||||
|
|
||||||
if(s.isValid())
|
if (s.isValid())
|
||||||
do { // breakable
|
do { // breakable
|
||||||
inv_s = m_invmgr->getInventory(s.inventoryloc);
|
inv_s = m_invmgr->getInventory(s.inventoryloc);
|
||||||
|
|
||||||
if(!inv_s) {
|
if (!inv_s) {
|
||||||
errorstream<<"InventoryMenu: The selected inventory location "
|
errorstream << "InventoryMenu: The selected inventory location "
|
||||||
<<"\""<<s.inventoryloc.dump()<<"\" doesn't exist"
|
<< "\"" << s.inventoryloc.dump() << "\" doesn't exist"
|
||||||
<<std::endl;
|
<< std::endl;
|
||||||
s.i = -1; // make it invalid again
|
s.i = -1; // make it invalid again
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
InventoryList *list = inv_s->getList(s.listname);
|
list_s = inv_s->getList(s.listname);
|
||||||
if(list == NULL) {
|
if (list_s == NULL) {
|
||||||
verbosestream<<"InventoryMenu: The selected inventory list \""
|
verbosestream << "InventoryMenu: The selected inventory list \""
|
||||||
<<s.listname<<"\" does not exist"<<std::endl;
|
<< s.listname << "\" does not exist" << std::endl;
|
||||||
s.i = -1; // make it invalid again
|
s.i = -1; // make it invalid again
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if((u32)s.i >= list->getSize()) {
|
if ((u32)s.i >= list_s->getSize()) {
|
||||||
infostream<<"InventoryMenu: The selected inventory list \""
|
infostream << "InventoryMenu: The selected inventory list \""
|
||||||
<<s.listname<<"\" is too small (i="<<s.i<<", size="
|
<< 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
|
s.i = -1; // make it invalid again
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
s_count = list->getItem(s.i).count;
|
s_count = list_s->getItem(s.i).count;
|
||||||
} while(0);
|
} while(0);
|
||||||
|
|
||||||
bool identical = (m_selected_item != NULL) && s.isValid() &&
|
bool identical = (m_selected_item != NULL) && s.isValid() &&
|
||||||
|
@ -3165,19 +3166,19 @@ bool GUIFormSpecMenu::OnEvent(const SEvent& event)
|
||||||
// up/down: 0 = down (press), 1 = up (release), 2 = unknown event, -1 movement
|
// up/down: 0 = down (press), 1 = up (release), 2 = unknown event, -1 movement
|
||||||
int button = 0;
|
int button = 0;
|
||||||
int updown = 2;
|
int updown = 2;
|
||||||
if(event.MouseInput.Event == EMIE_LMOUSE_PRESSED_DOWN)
|
if (event.MouseInput.Event == EMIE_LMOUSE_PRESSED_DOWN)
|
||||||
{ button = 0; updown = 0; }
|
{ button = 0; updown = 0; }
|
||||||
else if(event.MouseInput.Event == EMIE_RMOUSE_PRESSED_DOWN)
|
else if (event.MouseInput.Event == EMIE_RMOUSE_PRESSED_DOWN)
|
||||||
{ button = 1; updown = 0; }
|
{ button = 1; updown = 0; }
|
||||||
else if(event.MouseInput.Event == EMIE_MMOUSE_PRESSED_DOWN)
|
else if (event.MouseInput.Event == EMIE_MMOUSE_PRESSED_DOWN)
|
||||||
{ button = 2; updown = 0; }
|
{ button = 2; updown = 0; }
|
||||||
else if(event.MouseInput.Event == EMIE_LMOUSE_LEFT_UP)
|
else if (event.MouseInput.Event == EMIE_LMOUSE_LEFT_UP)
|
||||||
{ button = 0; updown = 1; }
|
{ button = 0; updown = 1; }
|
||||||
else if(event.MouseInput.Event == EMIE_RMOUSE_LEFT_UP)
|
else if (event.MouseInput.Event == EMIE_RMOUSE_LEFT_UP)
|
||||||
{ button = 1; updown = 1; }
|
{ button = 1; updown = 1; }
|
||||||
else if(event.MouseInput.Event == EMIE_MMOUSE_LEFT_UP)
|
else if (event.MouseInput.Event == EMIE_MMOUSE_LEFT_UP)
|
||||||
{ button = 2; updown = 1; }
|
{ button = 2; updown = 1; }
|
||||||
else if(event.MouseInput.Event == EMIE_MOUSE_MOVED)
|
else if (event.MouseInput.Event == EMIE_MOUSE_MOVED)
|
||||||
{ updown = -1;}
|
{ updown = -1;}
|
||||||
|
|
||||||
// Set this number to a positive value to generate a move action
|
// Set this number to a positive value to generate a move action
|
||||||
|
@ -3195,7 +3196,7 @@ bool GUIFormSpecMenu::OnEvent(const SEvent& event)
|
||||||
// Set this number to a positive value to generate a craft action at s.
|
// Set this number to a positive value to generate a craft action at s.
|
||||||
u32 craft_amount = 0;
|
u32 craft_amount = 0;
|
||||||
|
|
||||||
if(updown == 0) {
|
if (updown == 0) {
|
||||||
// Some mouse button has been pressed
|
// Some mouse button has been pressed
|
||||||
|
|
||||||
//infostream<<"Mouse button "<<button<<" pressed at p=("
|
//infostream<<"Mouse button "<<button<<" pressed at p=("
|
||||||
|
@ -3203,19 +3204,18 @@ bool GUIFormSpecMenu::OnEvent(const SEvent& event)
|
||||||
|
|
||||||
m_selected_dragging = false;
|
m_selected_dragging = false;
|
||||||
|
|
||||||
if(s.isValid() && s.listname == "craftpreview") {
|
if (s.isValid() && s.listname == "craftpreview") {
|
||||||
// Craft preview has been clicked: craft
|
// Craft preview has been clicked: craft
|
||||||
craft_amount = (button == 2 ? 10 : 1);
|
craft_amount = (button == 2 ? 10 : 1);
|
||||||
}
|
} else if (m_selected_item == NULL) {
|
||||||
else if(m_selected_item == NULL) {
|
if (s_count != 0) {
|
||||||
if(s_count != 0) {
|
|
||||||
// Non-empty stack has been clicked: select or shift-move it
|
// Non-empty stack has been clicked: select or shift-move it
|
||||||
m_selected_item = new ItemSpec(s);
|
m_selected_item = new ItemSpec(s);
|
||||||
|
|
||||||
u32 count;
|
u32 count;
|
||||||
if(button == 1) // right
|
if (button == 1) // right
|
||||||
count = (s_count + 1) / 2;
|
count = (s_count + 1) / 2;
|
||||||
else if(button == 2) // middle
|
else if (button == 2) // middle
|
||||||
count = MYMIN(s_count, 10);
|
count = MYMIN(s_count, 10);
|
||||||
else // left
|
else // left
|
||||||
count = s_count;
|
count = s_count;
|
||||||
|
@ -3233,21 +3233,20 @@ bool GUIFormSpecMenu::OnEvent(const SEvent& event)
|
||||||
shift_move_amount = 1;
|
shift_move_amount = 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
} else { // m_selected_item != NULL
|
||||||
else { // m_selected_item != NULL
|
|
||||||
assert(m_selected_amount >= 1);
|
assert(m_selected_amount >= 1);
|
||||||
|
|
||||||
if(s.isValid()) {
|
if (s.isValid()) {
|
||||||
// Clicked a slot: move
|
// Clicked a slot: move
|
||||||
if(button == 1) // right
|
if (button == 1) // right
|
||||||
move_amount = 1;
|
move_amount = 1;
|
||||||
else if(button == 2) // middle
|
else if (button == 2) // middle
|
||||||
move_amount = MYMIN(m_selected_amount, 10);
|
move_amount = MYMIN(m_selected_amount, 10);
|
||||||
else // left
|
else // left
|
||||||
move_amount = m_selected_amount;
|
move_amount = m_selected_amount;
|
||||||
|
|
||||||
if(identical) {
|
if (identical) {
|
||||||
if(move_amount >= m_selected_amount)
|
if (move_amount >= m_selected_amount)
|
||||||
m_selected_amount = 0;
|
m_selected_amount = 0;
|
||||||
else
|
else
|
||||||
m_selected_amount -= move_amount;
|
m_selected_amount -= move_amount;
|
||||||
|
@ -3256,28 +3255,27 @@ bool GUIFormSpecMenu::OnEvent(const SEvent& event)
|
||||||
}
|
}
|
||||||
else if (!getAbsoluteClippingRect().isPointInside(m_pointer)) {
|
else if (!getAbsoluteClippingRect().isPointInside(m_pointer)) {
|
||||||
// Clicked outside of the window: drop
|
// Clicked outside of the window: drop
|
||||||
if(button == 1) // right
|
if (button == 1) // right
|
||||||
drop_amount = 1;
|
drop_amount = 1;
|
||||||
else if(button == 2) // middle
|
else if (button == 2) // middle
|
||||||
drop_amount = MYMIN(m_selected_amount, 10);
|
drop_amount = MYMIN(m_selected_amount, 10);
|
||||||
else // left
|
else // left
|
||||||
drop_amount = m_selected_amount;
|
drop_amount = m_selected_amount;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if(updown == 1) {
|
else if (updown == 1) {
|
||||||
// Some mouse button has been released
|
// Some mouse button has been released
|
||||||
|
|
||||||
//infostream<<"Mouse button "<<button<<" released at p=("
|
//infostream<<"Mouse button "<<button<<" released at p=("
|
||||||
// <<p.X<<","<<p.Y<<")"<<std::endl;
|
// <<p.X<<","<<p.Y<<")"<<std::endl;
|
||||||
|
|
||||||
if(m_selected_item != NULL && m_selected_dragging && s.isValid()) {
|
if (m_selected_item != NULL && m_selected_dragging && s.isValid()) {
|
||||||
if(!identical) {
|
if (!identical) {
|
||||||
// Dragged to different slot: move all selected
|
// Dragged to different slot: move all selected
|
||||||
move_amount = m_selected_amount;
|
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))) {
|
!(getAbsoluteClippingRect().isPointInside(m_pointer))) {
|
||||||
// Dragged outside of window: drop all selected
|
// Dragged outside of window: drop all selected
|
||||||
drop_amount = m_selected_amount;
|
drop_amount = m_selected_amount;
|
||||||
|
@ -3287,14 +3285,13 @@ bool GUIFormSpecMenu::OnEvent(const SEvent& event)
|
||||||
// Keep count of how many times right mouse button has been
|
// Keep count of how many times right mouse button has been
|
||||||
// clicked. One click is drag without dropping. Click + release
|
// clicked. One click is drag without dropping. Click + release
|
||||||
// + click changes to drop one item when moved mode
|
// + click changes to drop one item when moved mode
|
||||||
if(button == 1 && m_selected_item != NULL)
|
if (button == 1 && m_selected_item != NULL)
|
||||||
m_rmouse_auto_place = !m_rmouse_auto_place;
|
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
|
// Mouse has been moved and rmb is down and mouse pointer just
|
||||||
// entered a new inventory field (checked in the entry-if, this
|
// entered a new inventory field (checked in the entry-if, this
|
||||||
// is the only action here that is generated by mouse movement)
|
// is the only action here that is generated by mouse movement)
|
||||||
if(m_selected_item != NULL && s.isValid()){
|
if (m_selected_item != NULL && s.isValid()) {
|
||||||
// Move 1 item
|
// Move 1 item
|
||||||
// TODO: middle mouse to move 10 items might be handy
|
// TODO: middle mouse to move 10 items might be handy
|
||||||
if (m_rmouse_auto_place) {
|
if (m_rmouse_auto_place) {
|
||||||
|
@ -3302,7 +3299,7 @@ bool GUIFormSpecMenu::OnEvent(const SEvent& event)
|
||||||
// or contains the same item type as what is going to be
|
// or contains the same item type as what is going to be
|
||||||
// moved
|
// moved
|
||||||
InventoryList *list_from = inv_selected->getList(m_selected_item->listname);
|
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);
|
assert(list_from && list_to);
|
||||||
ItemStack stack_from = list_from->getItem(m_selected_item->i);
|
ItemStack stack_from = list_from->getItem(m_selected_item->i);
|
||||||
ItemStack stack_to = list_to->getItem(s.i);
|
ItemStack stack_to = list_to->getItem(s.i);
|
||||||
|
@ -3321,7 +3318,7 @@ bool GUIFormSpecMenu::OnEvent(const SEvent& event)
|
||||||
|
|
||||||
assert(inv_selected && inv_s);
|
assert(inv_selected && inv_s);
|
||||||
InventoryList *list_from = inv_selected->getList(m_selected_item->listname);
|
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);
|
assert(list_from && list_to);
|
||||||
ItemStack stack_from = list_from->getItem(m_selected_item->i);
|
ItemStack stack_from = list_from->getItem(m_selected_item->i);
|
||||||
ItemStack stack_to = list_to->getItem(s.i);
|
ItemStack stack_to = list_to->getItem(s.i);
|
||||||
|
@ -3340,7 +3337,7 @@ bool GUIFormSpecMenu::OnEvent(const SEvent& event)
|
||||||
m_selected_content_guess_inventory = s.inventoryloc;
|
m_selected_content_guess_inventory = s.inventoryloc;
|
||||||
}
|
}
|
||||||
// Source stack goes fully into destination stack
|
// Source stack goes fully into destination stack
|
||||||
else if(leftover.empty()) {
|
else if (leftover.empty()) {
|
||||||
m_selected_amount -= move_amount;
|
m_selected_amount -= move_amount;
|
||||||
m_selected_content_guess = ItemStack(); // Clear
|
m_selected_content_guess = ItemStack(); // Clear
|
||||||
}
|
}
|
||||||
|
@ -3351,7 +3348,7 @@ bool GUIFormSpecMenu::OnEvent(const SEvent& event)
|
||||||
m_selected_content_guess = ItemStack(); // Clear
|
m_selected_content_guess = ItemStack(); // Clear
|
||||||
}
|
}
|
||||||
|
|
||||||
infostream<<"Handing IACTION_MOVE to manager"<<std::endl;
|
infostream << "Handing IACTION_MOVE to manager" << std::endl;
|
||||||
IMoveAction *a = new IMoveAction();
|
IMoveAction *a = new IMoveAction();
|
||||||
a->count = move_amount;
|
a->count = move_amount;
|
||||||
a->from_inv = m_selected_item->inventoryloc;
|
a->from_inv = m_selected_item->inventoryloc;
|
||||||
|
@ -3375,8 +3372,8 @@ bool GUIFormSpecMenu::OnEvent(const SEvent& event)
|
||||||
break;
|
break;
|
||||||
u32 to_inv_ind = (i + 1) % mis;
|
u32 to_inv_ind = (i + 1) % mis;
|
||||||
const ListRingSpec &to_inv_sp = m_inventory_rings[to_inv_ind];
|
const ListRingSpec &to_inv_sp = m_inventory_rings[to_inv_ind];
|
||||||
InventoryList *list_from = inv_s->getList(s.listname);
|
InventoryList *list_from = list_s;
|
||||||
if (!list_from)
|
if (!s.isValid())
|
||||||
break;
|
break;
|
||||||
Inventory *inv_to = m_invmgr->getInventory(to_inv_sp.inventoryloc);
|
Inventory *inv_to = m_invmgr->getInventory(to_inv_sp.inventoryloc);
|
||||||
if (!inv_to)
|
if (!inv_to)
|
||||||
|
@ -3388,10 +3385,10 @@ bool GUIFormSpecMenu::OnEvent(const SEvent& event)
|
||||||
assert(shift_move_amount <= stack_from.count);
|
assert(shift_move_amount <= stack_from.count);
|
||||||
|
|
||||||
// find a place (or more than one) to add the new item
|
// find a place (or more than one) to add the new item
|
||||||
u32 slot_to = 0;
|
|
||||||
u32 ilt_size = list_to->getSize();
|
u32 ilt_size = list_to->getSize();
|
||||||
ItemStack leftover;
|
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);
|
list_to->itemFits(slot_to, stack_from, &leftover);
|
||||||
if (leftover.count < stack_from.count) {
|
if (leftover.count < stack_from.count) {
|
||||||
infostream << "Handing IACTION_MOVE to manager" << std::endl;
|
infostream << "Handing IACTION_MOVE to manager" << std::endl;
|
||||||
|
@ -3427,15 +3424,14 @@ bool GUIFormSpecMenu::OnEvent(const SEvent& event)
|
||||||
assert(drop_amount > 0 && drop_amount <= m_selected_amount);
|
assert(drop_amount > 0 && drop_amount <= m_selected_amount);
|
||||||
m_selected_amount -= drop_amount;
|
m_selected_amount -= drop_amount;
|
||||||
|
|
||||||
infostream<<"Handing IACTION_DROP to manager"<<std::endl;
|
infostream << "Handing IACTION_DROP to manager" << std::endl;
|
||||||
IDropAction *a = new IDropAction();
|
IDropAction *a = new IDropAction();
|
||||||
a->count = drop_amount;
|
a->count = drop_amount;
|
||||||
a->from_inv = m_selected_item->inventoryloc;
|
a->from_inv = m_selected_item->inventoryloc;
|
||||||
a->from_list = m_selected_item->listname;
|
a->from_list = m_selected_item->listname;
|
||||||
a->from_i = m_selected_item->i;
|
a->from_i = m_selected_item->i;
|
||||||
m_invmgr->inventoryAction(a);
|
m_invmgr->inventoryAction(a);
|
||||||
}
|
} else if (craft_amount > 0) {
|
||||||
else if(craft_amount > 0) {
|
|
||||||
m_selected_content_guess = ItemStack(); // Clear
|
m_selected_content_guess = ItemStack(); // Clear
|
||||||
|
|
||||||
// Send IACTION_CRAFT
|
// Send IACTION_CRAFT
|
||||||
|
@ -3443,7 +3439,7 @@ bool GUIFormSpecMenu::OnEvent(const SEvent& event)
|
||||||
assert(s.isValid());
|
assert(s.isValid());
|
||||||
assert(inv_s);
|
assert(inv_s);
|
||||||
|
|
||||||
infostream<<"Handing IACTION_CRAFT to manager"<<std::endl;
|
infostream << "Handing IACTION_CRAFT to manager" << std::endl;
|
||||||
ICraftAction *a = new ICraftAction();
|
ICraftAction *a = new ICraftAction();
|
||||||
a->count = craft_amount;
|
a->count = craft_amount;
|
||||||
a->craft_inv = s.inventoryloc;
|
a->craft_inv = s.inventoryloc;
|
||||||
|
@ -3451,7 +3447,7 @@ bool GUIFormSpecMenu::OnEvent(const SEvent& event)
|
||||||
}
|
}
|
||||||
|
|
||||||
// If m_selected_amount has been decreased to zero, deselect
|
// If m_selected_amount has been decreased to zero, deselect
|
||||||
if(m_selected_amount == 0) {
|
if (m_selected_amount == 0) {
|
||||||
delete m_selected_item;
|
delete m_selected_item;
|
||||||
m_selected_item = NULL;
|
m_selected_item = NULL;
|
||||||
m_selected_amount = 0;
|
m_selected_amount = 0;
|
||||||
|
@ -3460,12 +3456,12 @@ bool GUIFormSpecMenu::OnEvent(const SEvent& event)
|
||||||
}
|
}
|
||||||
m_old_pointer = m_pointer;
|
m_old_pointer = m_pointer;
|
||||||
}
|
}
|
||||||
if(event.EventType==EET_GUI_EVENT) {
|
if (event.EventType == EET_GUI_EVENT) {
|
||||||
|
|
||||||
if(event.GUIEvent.EventType==gui::EGET_TAB_CHANGED
|
if (event.GUIEvent.EventType == gui::EGET_TAB_CHANGED
|
||||||
&& isVisible()) {
|
&& isVisible()) {
|
||||||
// find the element that was clicked
|
// find the element that was clicked
|
||||||
for(unsigned int i=0; i<m_fields.size(); i++) {
|
for (unsigned int i=0; i<m_fields.size(); i++) {
|
||||||
FieldSpec &s = m_fields[i];
|
FieldSpec &s = m_fields[i];
|
||||||
if ((s.ftype == f_TabHeader) &&
|
if ((s.ftype == f_TabHeader) &&
|
||||||
(s.fid == event.GUIEvent.Caller->getID())) {
|
(s.fid == event.GUIEvent.Caller->getID())) {
|
||||||
|
@ -3476,16 +3472,16 @@ bool GUIFormSpecMenu::OnEvent(const SEvent& event)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(event.GUIEvent.EventType==gui::EGET_ELEMENT_FOCUS_LOST
|
if (event.GUIEvent.EventType == gui::EGET_ELEMENT_FOCUS_LOST
|
||||||
&& isVisible()) {
|
&& isVisible()) {
|
||||||
if(!canTakeFocus(event.GUIEvent.Element)) {
|
if (!canTakeFocus(event.GUIEvent.Element)) {
|
||||||
infostream<<"GUIFormSpecMenu: Not allowing focus change."
|
infostream<<"GUIFormSpecMenu: Not allowing focus change."
|
||||||
<<std::endl;
|
<<std::endl;
|
||||||
// Returning true disables focus change
|
// Returning true disables focus change
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if((event.GUIEvent.EventType == gui::EGET_BUTTON_CLICKED) ||
|
if ((event.GUIEvent.EventType == gui::EGET_BUTTON_CLICKED) ||
|
||||||
(event.GUIEvent.EventType == gui::EGET_CHECKBOX_CHANGED) ||
|
(event.GUIEvent.EventType == gui::EGET_CHECKBOX_CHANGED) ||
|
||||||
(event.GUIEvent.EventType == gui::EGET_COMBO_BOX_CHANGED) ||
|
(event.GUIEvent.EventType == gui::EGET_COMBO_BOX_CHANGED) ||
|
||||||
(event.GUIEvent.EventType == gui::EGET_SCROLL_BAR_CHANGED)) {
|
(event.GUIEvent.EventType == gui::EGET_SCROLL_BAR_CHANGED)) {
|
||||||
|
@ -3504,14 +3500,14 @@ bool GUIFormSpecMenu::OnEvent(const SEvent& event)
|
||||||
}
|
}
|
||||||
|
|
||||||
// find the element that was clicked
|
// find the element that was clicked
|
||||||
for(u32 i=0; i<m_fields.size(); i++) {
|
for (u32 i = 0; i < m_fields.size(); i++) {
|
||||||
FieldSpec &s = m_fields[i];
|
FieldSpec &s = m_fields[i];
|
||||||
// if its a button, set the send field so
|
// if its a button, set the send field so
|
||||||
// lua knows which button was pressed
|
// lua knows which button was pressed
|
||||||
if (((s.ftype == f_Button) || (s.ftype == f_CheckBox)) &&
|
if (((s.ftype == f_Button) || (s.ftype == f_CheckBox)) &&
|
||||||
(s.fid == event.GUIEvent.Caller->getID())) {
|
(s.fid == event.GUIEvent.Caller->getID())) {
|
||||||
s.send = true;
|
s.send = true;
|
||||||
if(s.is_exit) {
|
if (s.is_exit) {
|
||||||
if (m_allowclose) {
|
if (m_allowclose) {
|
||||||
acceptInput(quit_mode_accept);
|
acceptInput(quit_mode_accept);
|
||||||
quitMenu();
|
quitMenu();
|
||||||
|
@ -3524,11 +3520,10 @@ bool GUIFormSpecMenu::OnEvent(const SEvent& event)
|
||||||
s.send = false;
|
s.send = false;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
} else if ((s.ftype == f_DropDown) &&
|
||||||
else if ((s.ftype == f_DropDown) &&
|
|
||||||
(s.fid == event.GUIEvent.Caller->getID())) {
|
(s.fid == event.GUIEvent.Caller->getID())) {
|
||||||
// only send the changed dropdown
|
// only send the changed dropdown
|
||||||
for(u32 i=0; i<m_fields.size(); i++) {
|
for (u32 i = 0; i < m_fields.size(); i++) {
|
||||||
FieldSpec &s2 = m_fields[i];
|
FieldSpec &s2 = m_fields[i];
|
||||||
if (s2.ftype == f_DropDown) {
|
if (s2.ftype == f_DropDown) {
|
||||||
s2.send = false;
|
s2.send = false;
|
||||||
|
@ -3539,17 +3534,15 @@ bool GUIFormSpecMenu::OnEvent(const SEvent& event)
|
||||||
|
|
||||||
// revert configuration to make sure dropdowns are sent on
|
// revert configuration to make sure dropdowns are sent on
|
||||||
// regular button click
|
// regular button click
|
||||||
for(u32 i=0; i<m_fields.size(); i++) {
|
for (u32 i = 0; i < m_fields.size(); i++) {
|
||||||
FieldSpec &s2 = m_fields[i];
|
FieldSpec &s2 = m_fields[i];
|
||||||
if (s2.ftype == f_DropDown) {
|
if (s2.ftype == f_DropDown) {
|
||||||
s2.send = true;
|
s2.send = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
} else if ((s.ftype == f_ScrollBar) &&
|
||||||
else if ((s.ftype == f_ScrollBar) &&
|
(s.fid == event.GUIEvent.Caller->getID())) {
|
||||||
(s.fid == event.GUIEvent.Caller->getID()))
|
|
||||||
{
|
|
||||||
s.fdefault = L"Changed";
|
s.fdefault = L"Changed";
|
||||||
acceptInput(quit_mode_no);
|
acceptInput(quit_mode_no);
|
||||||
s.fdefault = L"";
|
s.fdefault = L"";
|
||||||
|
@ -3557,8 +3550,8 @@ bool GUIFormSpecMenu::OnEvent(const SEvent& event)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(event.GUIEvent.EventType == gui::EGET_EDITBOX_ENTER) {
|
if (event.GUIEvent.EventType == gui::EGET_EDITBOX_ENTER) {
|
||||||
if(event.GUIEvent.Caller->getID() > 257) {
|
if (event.GUIEvent.Caller->getID() > 257) {
|
||||||
|
|
||||||
if (m_allowclose) {
|
if (m_allowclose) {
|
||||||
acceptInput(quit_mode_accept);
|
acceptInput(quit_mode_accept);
|
||||||
|
@ -3572,11 +3565,11 @@ bool GUIFormSpecMenu::OnEvent(const SEvent& event)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(event.GUIEvent.EventType == gui::EGET_TABLE_CHANGED) {
|
if (event.GUIEvent.EventType == gui::EGET_TABLE_CHANGED) {
|
||||||
int current_id = event.GUIEvent.Caller->getID();
|
int current_id = event.GUIEvent.Caller->getID();
|
||||||
if(current_id > 257) {
|
if (current_id > 257) {
|
||||||
// find the element that was clicked
|
// find the element that was clicked
|
||||||
for(u32 i=0; i<m_fields.size(); i++) {
|
for (u32 i = 0; i < m_fields.size(); i++) {
|
||||||
FieldSpec &s = m_fields[i];
|
FieldSpec &s = m_fields[i];
|
||||||
// if it's a table, set the send field
|
// if it's a table, set the send field
|
||||||
// so lua knows which table was changed
|
// so lua knows which table was changed
|
||||||
|
|
Loading…
Reference in New Issue