Implemented the new bin system on uiTab.

This commit is contained in:
Pietro Gagliardi 2015-06-30 22:36:12 -04:00
parent dc617bcfe2
commit 381c7e9277
2 changed files with 14 additions and 31 deletions

View File

@ -12,9 +12,9 @@ struct tab {
}; };
struct tabPage { struct tabPage {
uiControl *bin;
GtkWidget *binWidget;
uiControl *c; uiControl *c;
GtkWidget *widget;
int margined;
}; };
uiDefineControlType(uiTab, uiTypeTab, struct tab) uiDefineControlType(uiTab, uiTypeTab, struct tab)
@ -39,11 +39,13 @@ static void tabInsertAt(uiTab *tt, const char *name, uintmax_t n, uiControl *chi
struct tabPage page; struct tabPage page;
page.c = child; page.c = child;
page.widget = GTK_WIDGET(uiControlHandle(page.c)); page.bin = newBin();
page.binWidget = GTK_WIDGET(uiControlHandle(page.bin));
binSetChild(page.bin, page.c);
uiControlSetParent(page.c, uiControl(t)); uiControlSetParent(page.bin, uiControl(t));
gtk_notebook_set_tab_label_text(t->notebook, page.widget, name); gtk_notebook_set_tab_label_text(t->notebook, page.binWidget, name);
gtk_notebook_reorder_child(t->notebook, page.widget, n); gtk_notebook_reorder_child(t->notebook, page.binWidget, n);
g_array_insert_val(t->pages, n, page); g_array_insert_val(t->pages, n, page);
} }
@ -65,15 +67,19 @@ static uintmax_t tabNumPages(uiTab *tt)
static int tabMargined(uiTab *tt, uintmax_t n) static int tabMargined(uiTab *tt, uintmax_t n)
{ {
struct tab *t = (struct tab *) tt; struct tab *t = (struct tab *) tt;
struct tabPage *page;
return PUT_CODE_HERE; page = &g_array_index(t->pages, struct tabPage, n);
return binMargined(page->bin);
} }
static void tabSetMargined(uiTab *tt, uintmax_t n, int margined) static void tabSetMargined(uiTab *tt, uintmax_t n, int margined)
{ {
struct tab *t = (struct tab *) tt; struct tab *t = (struct tab *) tt;
struct tabPage *page;
PUT_CODE_HERE; page = &g_array_index(t->pages, struct tabPage, n);
binSetMargined(page->bin, margined);
} }
uiTab *uiNewTab(void) uiTab *uiNewTab(void)

View File

@ -68,29 +68,6 @@ static void tabDeletePage(uiTab *tt, uintmax_t n)
g_array_remove_index(t->pages, n); g_array_remove_index(t->pages, n);
} }
static int tabMargined(uiTab *tt, uintmax_t n)
{
struct tab *t = (struct tab *) tt;
struct tabPage *page;
page = &g_array_index(t->pages, struct tabPage, n);
return page->margined;
}
static void tabSetMargined(uiTab *tt, uintmax_t n, int margined)
{
struct tab *t = (struct tab *) tt;
struct tabPage *page;
page = &g_array_index(t->pages, struct tabPage, n);
page->margined = margined;
if (page->margined)
uiBinSetMargins(page->bin, gtkXMargin, gtkYMargin, gtkXMargin, gtkYMargin);
else
uiBinSetMargins(page->bin, 0, 0, 0, 0);
uiContainerUpdate(page->bin);
}
uiTab *uiNewTab(void) uiTab *uiNewTab(void)
{ {
struct tab *t; struct tab *t;