X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fui%2Fgui%2Fpsppire-variable.c;h=5c884a3fb616e558dc77f0766101209b71434924;hb=57b436a22d9ae0e395fb2e3ce101c2b5c2e6939e;hp=3fa71ea30b5330fe194df1e6fd8e4745f286b527;hpb=755ecfd2e8d86bc134fe7202c46fee354ec166d0;p=pspp-builds.git diff --git a/src/ui/gui/psppire-variable.c b/src/ui/gui/psppire-variable.c index 3fa71ea3..5c884a3f 100644 --- a/src/ui/gui/psppire-variable.c +++ b/src/ui/gui/psppire-variable.c @@ -25,6 +25,8 @@ #include #include +#include + #include "psppire-variable.h" #include "psppire-dict.h" @@ -115,8 +117,21 @@ psppire_variable_set_width(struct PsppireVariable *pv, gint width) fmt.w = width; if ( pv->v->type == ALPHA ) + { + gint old_var_cnt , new_var_cnt ; + + if ( pv->v->width == 0 ) + old_var_cnt = 1; + else + old_var_cnt = DIV_RND_UP(pv->v->width, MAX_SHORT_STRING); + + new_var_cnt = DIV_RND_UP(width, MAX_SHORT_STRING); pv->v->width = width; + psppire_dict_resize_variable(pv->dict, pv, + old_var_cnt, new_var_cnt); + } + return psppire_variable_set_format(pv, &fmt); } @@ -124,15 +139,30 @@ psppire_variable_set_width(struct PsppireVariable *pv, gint width) gboolean psppire_variable_set_type(struct PsppireVariable *pv, int type) { + gint old_var_cnt , new_var_cnt ; + g_return_val_if_fail(pv, FALSE); g_return_val_if_fail(pv->dict, FALSE); g_return_val_if_fail(pv->v, FALSE); pv->v->type = type; + if ( pv->v->width == 0 ) + old_var_cnt = 1; + else + old_var_cnt = DIV_RND_UP(pv->v->width, MAX_SHORT_STRING); + if ( type == NUMERIC ) pv->v->width = 0; + if ( pv->v->width == 0 ) + new_var_cnt = 1; + else + new_var_cnt = DIV_RND_UP(pv->v->width, MAX_SHORT_STRING); + + psppire_dict_resize_variable(pv->dict, pv, + old_var_cnt, new_var_cnt); + psppire_dict_var_changed(pv->dict, pv->v->index); return TRUE; }