added function _updateContentSize()

This commit is contained in:
Martin Preuss
2024-05-24 18:47:21 +02:00
parent 2561bdcd7d
commit f9133587e4

View File

@@ -12,6 +12,9 @@
#include "o_drawable_p.h" #include "o_drawable_p.h"
#include <gwenhywfar/debug.h>
/* ------------------------------------------------------------------------------------------------ /* ------------------------------------------------------------------------------------------------
* forward declarations * forward declarations
@@ -23,6 +26,7 @@ static GWENHYWFAR_CB void _freeData(void *bp, void *p);
static int _drawFallback(AQDG_OBJECT *object); static int _drawFallback(AQDG_OBJECT *object);
static int _getDefaultWidth(AQDG_OBJECT *object); static int _getDefaultWidth(AQDG_OBJECT *object);
static int _getDefaultHeight(AQDG_OBJECT *object); static int _getDefaultHeight(AQDG_OBJECT *object);
static void _updateContentSize(AQDG_OBJECT *object);
@@ -110,6 +114,7 @@ void AQDG_DrawableObject_SetFontId(AQDG_OBJECT *object, int i)
if (xo) { if (xo) {
if (xo->fontId!=i) { if (xo->fontId!=i) {
xo->fontId=i; xo->fontId=i;
_updateContentSize(object);
AQDG_Object_ModifyBranchFlagsUp(object, AQDG_Object_ModifyBranchFlagsUp(object,
AQDG_OBJECT_FLAGS_LAYOUT | AQDG_OBJECT_FLAGS_DRAW, AQDG_OBJECT_FLAGS_LAYOUT | AQDG_OBJECT_FLAGS_DRAW,
AQDG_OBJECT_FLAGS_LAYOUT | AQDG_OBJECT_FLAGS_DRAW); AQDG_OBJECT_FLAGS_LAYOUT | AQDG_OBJECT_FLAGS_DRAW);
@@ -194,6 +199,8 @@ void AQDG_DrawableObject_SetText(AQDG_OBJECT *object, const char *s)
if (xo) { if (xo) {
free(xo->text); free(xo->text);
xo->text=s?strdup(s):NULL; xo->text=s?strdup(s):NULL;
_updateContentSize(object);
AQDG_Object_ModifyBranchFlagsUp(object, AQDG_Object_ModifyBranchFlagsUp(object,
AQDG_OBJECT_FLAGS_LAYOUT | AQDG_OBJECT_FLAGS_DRAW, AQDG_OBJECT_FLAGS_LAYOUT | AQDG_OBJECT_FLAGS_DRAW,
AQDG_OBJECT_FLAGS_LAYOUT | AQDG_OBJECT_FLAGS_DRAW); AQDG_OBJECT_FLAGS_LAYOUT | AQDG_OBJECT_FLAGS_DRAW);
@@ -348,6 +355,35 @@ int _getDefaultHeight(AQDG_OBJECT *object)
void _updateContentSize(AQDG_OBJECT *object)
{
if (object) {
AQDG_OBJECT_DRAWABLE *xo;
xo=GWEN_INHERIT_GETDATA(AQDG_OBJECT, AQDG_OBJECT_DRAWABLE, object);
if (xo) {
xo->contentWidth=0;
xo->contentHeight=0;
if (xo->text) {
int i;
i=AQDG_Draw_Context_GetTextWidth(xo->drawContext, xo->fontId, xo->text);
if (i<0) {
DBG_INFO(NULL, "here (%d)", i);
}
else
xo->contentWidth=i;
i=AQDG_Draw_Context_GetTextHeight(xo->drawContext, xo->fontId, xo->text);
if (i<0) {
DBG_INFO(NULL, "here (%d)", i);
}
else
xo->contentHeight=i;
}
}
}
}