forked from Mirrorlandia_minetest/minetest
Fix bounding rect for formspec elements label vertlabel and checkboxes
This commit is contained in:
parent
2a09b7e84f
commit
65a4630f31
@ -22,7 +22,7 @@ tab_credits = {
|
|||||||
caption = fgettext("Credits"),
|
caption = fgettext("Credits"),
|
||||||
cbf_formspec = function (tabview, name, tabdata)
|
cbf_formspec = function (tabview, name, tabdata)
|
||||||
local logofile = defaulttexturedir .. "logo.png"
|
local logofile = defaulttexturedir .. "logo.png"
|
||||||
return "vertlabel[0,-0.5;CREDITS]" ..
|
return "vertlabel[0,-0.25;CREDITS]" ..
|
||||||
"label[0.5,3;Minetest " .. core.get_version() .. "]" ..
|
"label[0.5,3;Minetest " .. core.get_version() .. "]" ..
|
||||||
"label[0.5,3.3;http://minetest.net]" ..
|
"label[0.5,3.3;http://minetest.net]" ..
|
||||||
"image[0.5,1;" .. core.formspec_escape(logofile) .. "]" ..
|
"image[0.5,1;" .. core.formspec_escape(logofile) .. "]" ..
|
||||||
|
@ -79,7 +79,7 @@ end
|
|||||||
|
|
||||||
local function formspec(tabview, name, tabdata)
|
local function formspec(tabview, name, tabdata)
|
||||||
local tab_string =
|
local tab_string =
|
||||||
"vertlabel[0,0;" .. fgettext("SETTINGS") .. "]" ..
|
"vertlabel[0,-0.25;" .. fgettext("SETTINGS") .. "]" ..
|
||||||
"box[0.75,0;3.25,4;#999999]" ..
|
"box[0.75,0;3.25,4;#999999]" ..
|
||||||
"checkbox[1,0;cb_fancy_trees;".. fgettext("Fancy Trees") .. ";"
|
"checkbox[1,0;cb_fancy_trees;".. fgettext("Fancy Trees") .. ";"
|
||||||
.. dump(core.setting_getbool("new_style_leaves")) .. "]"..
|
.. dump(core.setting_getbool("new_style_leaves")) .. "]"..
|
||||||
|
@ -62,6 +62,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
|
|||||||
return; \
|
return; \
|
||||||
}
|
}
|
||||||
|
|
||||||
|
extern gui::IGUIEnvironment* guienv;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
GUIFormSpecMenu
|
GUIFormSpecMenu
|
||||||
@ -85,7 +86,8 @@ GUIFormSpecMenu::GUIFormSpecMenu(irr::IrrlichtDevice* dev,
|
|||||||
m_lock(false),
|
m_lock(false),
|
||||||
m_form_src(fsrc),
|
m_form_src(fsrc),
|
||||||
m_text_dst(tdst),
|
m_text_dst(tdst),
|
||||||
m_ext_ptr(ext_ptr)
|
m_ext_ptr(ext_ptr),
|
||||||
|
m_font(guienv->getSkin()->getFont())
|
||||||
{
|
{
|
||||||
current_keys_pending.key_down = false;
|
current_keys_pending.key_down = false;
|
||||||
current_keys_pending.key_up = false;
|
current_keys_pending.key_up = false;
|
||||||
@ -388,8 +390,6 @@ void GUIFormSpecMenu::parseCheckbox(parserData* data,std::string element)
|
|||||||
pos.X += stof(v_pos[0]) * (float) spacing.X;
|
pos.X += stof(v_pos[0]) * (float) spacing.X;
|
||||||
pos.Y += stof(v_pos[1]) * (float) spacing.Y;
|
pos.Y += stof(v_pos[1]) * (float) spacing.Y;
|
||||||
|
|
||||||
core::rect<s32> rect = core::rect<s32>(pos.X, pos.Y+((imgsize.Y/2)-15), pos.X+300, pos.Y+((imgsize.Y/2)+15));
|
|
||||||
|
|
||||||
bool fselected = false;
|
bool fselected = false;
|
||||||
|
|
||||||
if (selected == "true")
|
if (selected == "true")
|
||||||
@ -397,6 +397,11 @@ void GUIFormSpecMenu::parseCheckbox(parserData* data,std::string element)
|
|||||||
|
|
||||||
std::wstring wlabel = narrow_to_wide(label.c_str());
|
std::wstring wlabel = narrow_to_wide(label.c_str());
|
||||||
|
|
||||||
|
core::rect<s32> rect = core::rect<s32>(
|
||||||
|
pos.X, pos.Y + ((imgsize.Y/2) - 15),
|
||||||
|
pos.X + m_font->getDimension(wlabel.c_str()).Width + 25, // text size + size of checkbox
|
||||||
|
pos.Y + ((imgsize.Y/2) + 15));
|
||||||
|
|
||||||
FieldSpec spec(
|
FieldSpec spec(
|
||||||
narrow_to_wide(name.c_str()),
|
narrow_to_wide(name.c_str()),
|
||||||
wlabel, //Needed for displaying text on MSVC
|
wlabel, //Needed for displaying text on MSVC
|
||||||
@ -1083,8 +1088,6 @@ void GUIFormSpecMenu::parseLabel(parserData* data,std::string element)
|
|||||||
pos.X += stof(v_pos[0]) * (float)spacing.X;
|
pos.X += stof(v_pos[0]) * (float)spacing.X;
|
||||||
pos.Y += stof(v_pos[1]) * (float)spacing.Y;
|
pos.Y += stof(v_pos[1]) * (float)spacing.Y;
|
||||||
|
|
||||||
core::rect<s32> rect = core::rect<s32>(pos.X, pos.Y+((imgsize.Y/2)-15), pos.X+300, pos.Y+((imgsize.Y/2)+15));
|
|
||||||
|
|
||||||
if(data->bp_set != 2)
|
if(data->bp_set != 2)
|
||||||
errorstream<<"WARNING: invalid use of label without a size[] element"<<std::endl;
|
errorstream<<"WARNING: invalid use of label without a size[] element"<<std::endl;
|
||||||
|
|
||||||
@ -1092,6 +1095,11 @@ void GUIFormSpecMenu::parseLabel(parserData* data,std::string element)
|
|||||||
|
|
||||||
std::wstring wlabel = narrow_to_wide(text.c_str());
|
std::wstring wlabel = narrow_to_wide(text.c_str());
|
||||||
|
|
||||||
|
core::rect<s32> rect = core::rect<s32>(
|
||||||
|
pos.X, pos.Y+((imgsize.Y/2)-15),
|
||||||
|
pos.X + m_font->getDimension(wlabel.c_str()).Width,
|
||||||
|
pos.Y+((imgsize.Y/2)+15));
|
||||||
|
|
||||||
FieldSpec spec(
|
FieldSpec spec(
|
||||||
L"",
|
L"",
|
||||||
wlabel,
|
wlabel,
|
||||||
@ -1119,7 +1127,13 @@ void GUIFormSpecMenu::parseVertLabel(parserData* data,std::string element)
|
|||||||
pos.X += stof(v_pos[0]) * (float)spacing.X;
|
pos.X += stof(v_pos[0]) * (float)spacing.X;
|
||||||
pos.Y += stof(v_pos[1]) * (float)spacing.Y;
|
pos.Y += stof(v_pos[1]) * (float)spacing.Y;
|
||||||
|
|
||||||
core::rect<s32> rect = core::rect<s32>(pos.X, pos.Y+((imgsize.Y/2)-15), pos.X+15, pos.Y+300);
|
core::rect<s32> rect = core::rect<s32>(
|
||||||
|
pos.X, pos.Y+((imgsize.Y/2)-15),
|
||||||
|
pos.X+15, pos.Y +
|
||||||
|
(m_font->getKerningHeight() +
|
||||||
|
m_font->getDimension(text.c_str()).Height)
|
||||||
|
* (text.length()+1));
|
||||||
|
//actually text.length() would be correct but adding +1 avoids to break all mods
|
||||||
|
|
||||||
if(data->bp_set != 2)
|
if(data->bp_set != 2)
|
||||||
errorstream<<"WARNING: invalid use of label without a size[] element"<<std::endl;
|
errorstream<<"WARNING: invalid use of label without a size[] element"<<std::endl;
|
||||||
|
@ -312,9 +312,10 @@ protected:
|
|||||||
video::SColor m_slotbg_h;
|
video::SColor m_slotbg_h;
|
||||||
video::SColor m_slotbordercolor;
|
video::SColor m_slotbordercolor;
|
||||||
private:
|
private:
|
||||||
IFormSource* m_form_src;
|
IFormSource *m_form_src;
|
||||||
TextDest* m_text_dst;
|
TextDest *m_text_dst;
|
||||||
GUIFormSpecMenu** m_ext_ptr;
|
GUIFormSpecMenu **m_ext_ptr;
|
||||||
|
gui::IGUIFont *m_font;
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
v2s32 size;
|
v2s32 size;
|
||||||
|
Loading…
Reference in New Issue
Block a user