diff options
Diffstat (limited to 'app/wlib/gtklib/control.c')
| -rw-r--r-- | app/wlib/gtklib/control.c | 22 | 
1 files changed, 17 insertions, 5 deletions
diff --git a/app/wlib/gtklib/control.c b/app/wlib/gtklib/control.c index e824c94..c891924 100644 --- a/app/wlib/gtklib/control.c +++ b/app/wlib/gtklib/control.c @@ -109,7 +109,9 @@ wPos_t wLabelWidth(      GtkRequisition requisition;      widget = gtk_label_new(wlibConvertInput(label));      gtk_widget_size_request(widget, &requisition); +    g_object_ref_sink (widget);      gtk_widget_destroy(widget); +    g_object_unref(widget);      return requisition.width+8;  } @@ -162,7 +164,7 @@ wPos_t wControlGetPosX(  wPos_t wControlGetPosY(      wControl_p b)		/* Control */  { -    return b->realY - BORDERSIZE - ((b->parent->option&F_MENUBAR)?MENUH:0); +    return b->realY - BORDERSIZE - ((b->parent->option&F_MENUBAR)?b->parent->menu_height:0);  }  /** @@ -179,15 +181,21 @@ void wControlSetPos(      wPos_t y)  {      b->realX = x; -    b->realY = y + BORDERSIZE + ((b->parent->option&F_MENUBAR)?MENUH:0); +    b->realY = y + BORDERSIZE + ((b->parent->option&F_MENUBAR)?b->parent->menu_height:0);      if (b->widget) {          gtk_fixed_move(GTK_FIXED(b->parent->widget), b->widget, b->realX, b->realY);      }      if (b->label) { +    	GtkRequisition requisition, reqwidget; +    	gtk_widget_size_request(b->label, &requisition); +    	if (b->widget) +    	   	gtk_widget_size_request(b->widget, &reqwidget); +    	else +    	  	reqwidget.height = requisition.height;          gtk_fixed_move(GTK_FIXED(b->parent->widget), b->label, b->realX-b->labelW, -                       b->realY+LABEL_OFFSET); +                       b->realY+(reqwidget.height/2 - requisition.height/2));      }  } @@ -202,14 +210,18 @@ void wControlSetLabel(      wControl_p b,      const char * labelStr)  { -    GtkRequisition requisition; +    GtkRequisition requisition,reqwidget;      if (b->label) {          gtk_label_set_text(GTK_LABEL(b->label), wlibConvertInput(labelStr));          gtk_widget_size_request(b->label, &requisition); +        if (b->widget) +        	gtk_widget_size_request(b->widget, &reqwidget); +        else +        	reqwidget.height = requisition.height;          b->labelW = requisition.width+8;          gtk_fixed_move(GTK_FIXED(b->parent->widget), b->label, b->realX-b->labelW, -                       b->realY+LABEL_OFFSET); +                       b->realY+(reqwidget.height/2 - requisition.height/2));      } else {          b->labelW = wlibAddLabel(b, labelStr);      }  | 
