#include <cstring>
#include <IGUISkin.h>
#include <IGUIFont.h>
-#include <IGUIScrollBar.h>
#include "client/renderingengine.h"
#include "debug.h"
#include "log.h"
#include "util/string.h" // for parseColorString()
#include "settings.h" // for settings
#include "porting.h" // for dpi
-#include "guiscalingfilter.h"
+#include "client/guiscalingfilter.h"
/*
GUITable
m_font = skin->getFont();
if (m_font) {
m_font->grab();
- m_rowheight = m_font->getDimension(L"A").Height + 4;
+ m_rowheight = m_font->getDimension(L"Ay").Height + 4;
m_rowheight = MYMAX(m_rowheight, 1);
}
const s32 s = skin->getSize(gui::EGDS_SCROLLBAR_SIZE);
- m_scrollbar = Environment->addScrollBar(false,
+ m_scrollbar = new GUIScrollBar(Environment, this, -1,
core::rect<s32>(RelativeRect.getWidth() - s,
0,
RelativeRect.getWidth(),
RelativeRect.getHeight()),
- this, -1);
+ false, true);
m_scrollbar->setSubElement(true);
m_scrollbar->setTabStop(false);
m_scrollbar->setAlignment(gui::EGUIA_LOWERRIGHT, gui::EGUIA_LOWERRIGHT,
setTabStop(true);
setTabOrder(-1);
updateAbsolutePosition();
-
+#ifdef HAVE_TOUCHSCREENGUI
+ float density = 1; // dp scaling is applied by the skin
+#else
+ float density = RenderingEngine::getDisplayDensity();
+#endif
core::rect<s32> relative_rect = m_scrollbar->getRelativePosition();
- s32 width = (relative_rect.getWidth()/(2.0/3.0)) *
- RenderingEngine::getDisplayDensity() *
+ s32 width = (relative_rect.getWidth() / (2.0 / 3.0)) * density *
g_settings->getFloat("gui_scaling");
m_scrollbar->setRelativePosition(core::rect<s32>(
relative_rect.LowerRightCorner.X-width,relative_rect.UpperLeftCorner.Y,
if (m_font)
m_font->drop();
- m_scrollbar->remove();
+ if (m_scrollbar)
+ m_scrollbar->drop();
}
GUITable::Option GUITable::splitOption(const std::string &str)
// Make template for new cells
Cell newcell;
- memset(&newcell, 0, sizeof newcell);
newcell.content_type = columntype;
newcell.tooltip_index = tooltip_index;
newcell.reported_column = j+1;
}
}
+void GUITable::setOverrideFont(IGUIFont *font)
+{
+ if (m_font == font)
+ return;
+
+ if (font == nullptr)
+ font = Environment->getSkin()->getFont();
+
+ if (m_font)
+ m_font->drop();
+
+ m_font = font;
+ m_font->grab();
+
+ m_rowheight = m_font->getDimension(L"Ay").Height + 4;
+ m_rowheight = MYMAX(m_rowheight, 1);
+
+ updateScrollBar();
+}
+
+IGUIFont *GUITable::getOverrideFont() const
+{
+ return m_font;
+}
+
GUITable::DynamicData GUITable::getDynamicData() const
{
DynamicData dyndata;
m_scrollbar->setMax(scrollmax);
m_scrollbar->setSmallStep(m_rowheight);
m_scrollbar->setLargeStep(2 * m_rowheight);
+ m_scrollbar->setPageSize(totalheight);
}
void GUITable::sendTableEvent(s32 column, bool doubleclick)