День добрый, у своего контрола в событии expose_event пытаюсь установить inner border(контрол унаследован от GtkEntry), но при запуске, размеру контрола начинают резко увеличиваться, т.е контрол растёт в длину, пока программу не остановишь аварийно. Мне нужно чтобы бордер пересчитывался динамически, когда я например растягиваю контрол, т.к длина контрола растёт, то и бордер нужно передвинуть дальше к краю, но почему-то не получается :(
static gint 
gtk_date_picker_expose(GtkWidget * widget, GdkEventExpose *event)
{
...
//если растягиваем контрол, его длина растёт
gdk_window_get_size(window, &w, &h);
	
	picker->w = h+1;
	picker->h = h+1;
	picker->x = w-h-1;
	picker->y = -1;
...
// нужно сдвинуть бордер подальше к краю, иначе при растягивании он останется на прежнем месте, например по середине, но тут проблема
set_inner_border_offset(GTK_ENTRY(widget), picker->x-1);
...
}
// установка бордера(мне нужно устанавливать его только справа)
void 
set_inner_border_offset(GtkWidget * widget, int offset)
{
	GtkBorder * border 	= (GtkBorder *)gtk_entry_get_inner_border(GTK_ENTRY(widget)); 
	if (!border) {
		border 			= g_new(GtkBorder, 1); 
		border->top 	= 2;
		border->bottom 	= 2;
		border->left 	= 2;
		border->right 	= 2;
	}
	border->right = offset;
	border_offset = offset;	
	gtk_entry_set_inner_border(GTK_ENTRY(widget), border);
	g_free(border);
}
Any idea? Куда покопать?


