mirror of
https://github.com/tuxbox-neutrino/neutrino.git
synced 2025-08-29 16:31:11 +02:00
CComponentsHeader: ensure to have correct font instances after changed font
On possible changed font settings, font objects can be invalid and we have a crash. With this fix it's possible, that CNeutrinoApp::setupFont() method clean up header font object itself.
This commit is contained in:
@@ -97,6 +97,7 @@ void CComponentsHeader::initVarHeader( const int& x_pos, const int& y_pos, const
|
|||||||
|
|
||||||
cch_font = NULL;
|
cch_font = NULL;
|
||||||
cch_size_mode = CC_HEADER_SIZE_LARGE;
|
cch_size_mode = CC_HEADER_SIZE_LARGE;
|
||||||
|
CNeutrinoApp::getInstance()->OnAfterSetupFonts.connect(sigc::mem_fun(this, &CComponentsHeader::resetFont));
|
||||||
|
|
||||||
shadow = shadow_mode;
|
shadow = shadow_mode;
|
||||||
col_frame = col_frame_old = color_frame;
|
col_frame = col_frame_old = color_frame;
|
||||||
@@ -161,6 +162,14 @@ void CComponentsHeader::setCaptionFont(Font* font)
|
|||||||
cch_font = font;
|
cch_font = font;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CComponentsHeader::resetFont()
|
||||||
|
{
|
||||||
|
if (cch_font){
|
||||||
|
cch_font = NULL;
|
||||||
|
dprintf(DEBUG_DEBUG, "\033[33m[CComponentsHeader][%s - %d] reset header font \033[0m\n", __func__, __LINE__);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void CComponentsHeader::initCaptionFont()
|
void CComponentsHeader::initCaptionFont()
|
||||||
{
|
{
|
||||||
Font *l_font = g_Font[SNeutrinoSettings::FONT_TYPE_MENU_TITLE];
|
Font *l_font = g_Font[SNeutrinoSettings::FONT_TYPE_MENU_TITLE];
|
||||||
@@ -168,7 +177,6 @@ void CComponentsHeader::initCaptionFont()
|
|||||||
|
|
||||||
if (cch_font == NULL){
|
if (cch_font == NULL){
|
||||||
cch_font = (cch_size_mode == CC_HEADER_SIZE_LARGE? l_font : s_font);
|
cch_font = (cch_size_mode == CC_HEADER_SIZE_LARGE? l_font : s_font);
|
||||||
|
|
||||||
//select matching height
|
//select matching height
|
||||||
if (cch_size_mode == CC_HEADER_SIZE_LARGE)
|
if (cch_size_mode == CC_HEADER_SIZE_LARGE)
|
||||||
height = std::max(height, l_font->getHeight());
|
height = std::max(height, l_font->getHeight());
|
||||||
|
@@ -68,6 +68,8 @@ class CComponentsHeader : public CComponentsForm, public CCTextScreen
|
|||||||
fb_pixel_t cch_col_text;
|
fb_pixel_t cch_col_text;
|
||||||
///property: caption font, see also setCaptionFont()
|
///property: caption font, see also setCaptionFont()
|
||||||
Font* cch_font;
|
Font* cch_font;
|
||||||
|
///reset font
|
||||||
|
void resetFont();
|
||||||
|
|
||||||
///property: internal y-position for all items
|
///property: internal y-position for all items
|
||||||
int cch_items_y;
|
int cch_items_y;
|
||||||
|
Reference in New Issue
Block a user