Sort of implemented uiTabDeletePage() on GTK+. It's segfaulting on close; that isn't good...
This commit is contained in:
parent
e74aeeab44
commit
5bd6140d46
1
TODO.md
1
TODO.md
|
@ -18,6 +18,7 @@
|
|||
- verify retainment for uiParents in GTK+
|
||||
- add an example of events to each of the new controls guides
|
||||
- verify that uiParentSetMainControl() does indeed not update
|
||||
- settle differences between intmax_t and uintmax_t
|
||||
|
||||
ultimately:
|
||||
- make everything vtable-based
|
||||
|
|
2
test.c
2
test.c
|
@ -173,7 +173,7 @@ uiTab *tab;
|
|||
|
||||
void movePage1Out(uiButton *b, void *data)
|
||||
{
|
||||
uiTabDeletePage(tab, 0)
|
||||
uiTabDeletePage(tab, 0);
|
||||
uiStackAppend(mainStack, uiControl(page1stack), 1);
|
||||
}
|
||||
|
||||
|
|
2
ui.idl
2
ui.idl
|
@ -124,7 +124,7 @@ func NewLabel(text *const char) *Label;
|
|||
interface Tab from Control {
|
||||
// TODO rename to AppendPage()
|
||||
func AddPage(name *const char, c *Control);
|
||||
func DeletePage(index intmax_t);
|
||||
func DeletePage(index uintmax_t);
|
||||
};
|
||||
func NewTab(void) *Tab;
|
||||
|
||||
|
|
20
unix/tab.c
20
unix/tab.c
|
@ -40,6 +40,25 @@ static void tabAddPage(uiTab *tt, const char *name, uiControl *child)
|
|||
t->len++;
|
||||
}
|
||||
|
||||
static void tabDeletePage(uiTab *tt, uintmax_t n)
|
||||
{
|
||||
struct tab *t = (struct tab *) tt;
|
||||
uiParent *p;
|
||||
uintmax_t i;
|
||||
|
||||
p = t->pages[n];
|
||||
for (i = n; i < t->len - 1; i++)
|
||||
t->pages[i] = t->pages[i + 1];
|
||||
t->pages[i] = NULL;
|
||||
t->len--;
|
||||
|
||||
// make sure the page's control isn't destroyed
|
||||
uiParentSetMainControl(p, NULL);
|
||||
// TODO don't call uiParentDestroy() here as the following line will do so; figure out how to prevent
|
||||
|
||||
gtk_notebook_remove_page(t->notebook, n);
|
||||
}
|
||||
|
||||
uiTab *uiNewTab(void)
|
||||
{
|
||||
struct tab *t;
|
||||
|
@ -57,6 +76,7 @@ uiTab *uiNewTab(void)
|
|||
g_signal_connect(t->widget, "destroy", G_CALLBACK(onDestroy), t);
|
||||
|
||||
uiTab(t)->AddPage = tabAddPage;
|
||||
uiTab(t)->DeletePage = tabDeletePage;
|
||||
|
||||
return uiTab(t);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue