diff options
| author | Pixel <pixel@nobis-crew.org> | 2010-06-15 00:59:57 -0700 | 
|---|---|---|
| committer | Pixel <pixel@nobis-crew.org> | 2010-06-15 00:59:57 -0700 | 
| commit | eed0eb6a476d54ce19aeff137984aa981d9e3976 (patch) | |
| tree | 807891636efd2f87dcbd261e971216269973ae07 /iup/src/gtk/iupgtk_tabs.c | |
| parent | ccc8261e4d48de89da4ddfe7b55e378ae0cd6f47 (diff) | |
Upgrading to iup 3.1
Diffstat (limited to 'iup/src/gtk/iupgtk_tabs.c')
| -rwxr-xr-x | iup/src/gtk/iupgtk_tabs.c | 50 | 
1 files changed, 30 insertions, 20 deletions
| diff --git a/iup/src/gtk/iupgtk_tabs.c b/iup/src/gtk/iupgtk_tabs.c index 8029826..6b5aa66 100755 --- a/iup/src/gtk/iupgtk_tabs.c +++ b/iup/src/gtk/iupgtk_tabs.c @@ -76,13 +76,13 @@ static void gtkTabsUpdatePageBgColor(Ihandle* ih, unsigned char r, unsigned char    for (child = ih->firstchild; child; child = child->brother)    { -    GtkWidget* tab_page = (GtkWidget*)iupAttribGet(child, "_IUPTAB_CONTAINER"); -    if (tab_page) +    GtkWidget* tab_container = (GtkWidget*)iupAttribGet(child, "_IUPTAB_CONTAINER"); +    if (tab_container)      {        GtkWidget* tab_label = (GtkWidget*)iupAttribGet(child, "_IUPGTK_TABLABEL");        if (tab_label)          iupgtkBaseSetBgColor(tab_label, r, g, b); -      iupgtkBaseSetBgColor(tab_page, r, g, b); +      iupgtkBaseSetBgColor(tab_container, r, g, b);      }    }  } @@ -121,15 +121,18 @@ static int gtkTabsSetPaddingAttrib(Ihandle* ih, const char* value)    iupStrToIntInt(value, &ih->data->horiz_padding, &ih->data->vert_padding, 'x');    if (ih->handle) +  {      gtkTabsUpdatePagePadding(ih); -  return 0; +    return 0; +  } +  else +    return 1; /* store until not mapped, when mapped will be set again */  }  static void gtkTabsUpdateTabType(Ihandle* ih)  { -  GtkNotebook* tab_page = (GtkNotebook*)ih->handle;    int iup2gtk[4] = {GTK_POS_TOP, GTK_POS_BOTTOM, GTK_POS_LEFT, GTK_POS_RIGHT}; -  gtk_notebook_set_tab_pos(tab_page, iup2gtk[ih->data->type]); +  gtk_notebook_set_tab_pos((GtkNotebook*)ih->handle, iup2gtk[ih->data->type]);  }  static int gtkTabsSetTabTypeAttrib(Ihandle* ih, const char* value) @@ -144,7 +147,7 @@ static int gtkTabsSetTabTypeAttrib(Ihandle* ih, const char* value)      ih->data->type = ITABS_TOP;    if (ih->handle) -    gtkTabsUpdateTabType(ih); +    gtkTabsUpdateTabType(ih);  /* for this to work must be updated in map */    return 0;  } @@ -171,7 +174,7 @@ static int gtkTabsSetTabTitleAttrib(Ihandle* ih, const char* name_id, const char      GtkWidget* tab_label = (GtkWidget*)iupAttribGet(child, "_IUPGTK_TABLABEL");      if (tab_label)      { -      GtkWidget* tab_page = (GtkWidget*)iupAttribGet(child, "_IUPTAB_CONTAINER"); +      GtkWidget* tab_page = (GtkWidget*)iupAttribGet(child, "_IUPTAB_PAGE");        gtk_label_set_text((GtkLabel*)tab_label, iupgtkStrConvertToUTF8(value));        gtk_notebook_set_menu_label_text((GtkNotebook*)ih->handle, tab_page, gtk_label_get_text((GtkLabel*)tab_label));      } @@ -238,8 +241,10 @@ void gtkTabSwitchPage(GtkNotebook* notebook, GtkNotebookPage *page, int pos, Iha    IFnnn cb;    Ihandle* child = IupGetChild(ih, pos);    Ihandle* prev_child = IupGetChild(ih, iupdrvTabsGetCurrentTab(ih)); -  IupSetAttribute(child, "VISIBLE", "YES"); -  IupSetAttribute(prev_child, "VISIBLE", "NO"); +  GtkWidget* tab_container = (GtkWidget*)iupAttribGet(child, "_IUPTAB_CONTAINER"); +  GtkWidget* prev_tab_container = (GtkWidget*)iupAttribGet(prev_child, "_IUPTAB_CONTAINER"); +  if (tab_container) gtk_widget_show(tab_container); +  if (prev_tab_container) gtk_widget_hide(prev_tab_container);    if (iupAttribGet(ih, "_IUPGTK_IGNORE_CHANGE"))      return; @@ -263,7 +268,7 @@ static void gtkTabsChildAddedMethod(Ihandle* ih, Ihandle* child)    if (ih->handle)    { -    GtkWidget* tab_page; +    GtkWidget *tab_page, *tab_container;      GtkWidget *tab_label = NULL, *tab_image = NULL;      char *tabtitle, *tabimage;      int pos; @@ -271,9 +276,13 @@ static void gtkTabsChildAddedMethod(Ihandle* ih, Ihandle* child)      pos = IupGetChildPos(ih, child); -    tab_page = gtk_fixed_new(); +    tab_page = gtk_vbox_new(FALSE, 0);      gtk_widget_show(tab_page); +    tab_container = gtk_fixed_new(); +    gtk_widget_show(tab_container); +    gtk_container_add((GtkContainer*)tab_page, tab_container); +      tabtitle = iupAttribGet(child, "TABTITLE");      if (!tabtitle) tabtitle = iupTabsAttribGetStrId(ih, "TABTITLE", pos);      tabimage = iupAttribGet(child, "TABIMAGE"); @@ -327,9 +336,10 @@ static void gtkTabsChildAddedMethod(Ihandle* ih, Ihandle* child)      iupAttribSetStr(child, "_IUPGTK_TABIMAGE", (char*)tab_image);  /* store it even if its NULL */      iupAttribSetStr(child, "_IUPGTK_TABLABEL", (char*)tab_label); -    iupAttribSetStr(child, "_IUPTAB_CONTAINER", (char*)tab_page); +    iupAttribSetStr(child, "_IUPTAB_CONTAINER", (char*)tab_container); +    iupAttribSetStr(child, "_IUPTAB_PAGE", (char*)tab_page);      iupStrToRGB(IupGetAttribute(ih, "BGCOLOR"), &r, &g, &b); -    iupgtkBaseSetBgColor(tab_page, r, g, b); +    iupgtkBaseSetBgColor(tab_container, r, g, b);      if (tabtitle)      { @@ -354,10 +364,8 @@ static void gtkTabsChildAddedMethod(Ihandle* ih, Ihandle* child)      iupAttribSetStr(ih, "_IUPGTK_IGNORE_CHANGE", NULL); -    if (pos == iupdrvTabsGetCurrentTab(ih)) -      IupSetAttribute(child, "VISIBLE", "YES"); -    else -      IupSetAttribute(child, "VISIBLE", "NO"); +    if (pos != iupdrvTabsGetCurrentTab(ih)) +      gtk_widget_hide(tab_container);    }  } @@ -365,10 +373,11 @@ static void gtkTabsChildRemovedMethod(Ihandle* ih, Ihandle* child)  {    if (ih->handle)    { -    GtkWidget* tab_page = (GtkWidget*)iupAttribGet(child, "_IUPTAB_CONTAINER"); +    GtkWidget* tab_page = (GtkWidget*)iupAttribGet(child, "_IUPTAB_PAGE");      if (tab_page)      {        int pos = gtk_notebook_page_num((GtkNotebook*)ih->handle, tab_page); +      iupTabsTestRemoveTab(ih, pos);        iupAttribSetStr(ih, "_IUPGTK_IGNORE_CHANGE", "1");        gtk_notebook_remove_page((GtkNotebook*)ih->handle, pos); @@ -377,6 +386,7 @@ static void gtkTabsChildRemovedMethod(Ihandle* ih, Ihandle* child)        iupAttribSetStr(child, "_IUPGTK_TABIMAGE", NULL);        iupAttribSetStr(child, "_IUPGTK_TABLABEL", NULL);        iupAttribSetStr(child, "_IUPTAB_CONTAINER", NULL); +      iupAttribSetStr(child, "_IUPTAB_PAGE", NULL);      }    }  } @@ -440,5 +450,5 @@ void iupdrvTabsInitClass(Iclass* ic)    iupClassRegisterAttribute(ic, "TABORIENTATION", iupTabsGetTabOrientationAttrib, gtkTabsSetTabOrientationAttrib, IUPAF_SAMEASSYSTEM, "HORIZONTAL", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);    iupClassRegisterAttributeId(ic, "TABTITLE", NULL, gtkTabsSetTabTitleAttrib, IUPAF_NO_INHERIT);    iupClassRegisterAttributeId(ic, "TABIMAGE", NULL, gtkTabsSetTabImageAttrib, IUPAF_NO_INHERIT); -  iupClassRegisterAttribute(ic, "PADDING", iupTabsGetPaddingAttrib, gtkTabsSetPaddingAttrib, IUPAF_SAMEASSYSTEM, "0x0", IUPAF_NOT_MAPPED); +  iupClassRegisterAttribute(ic, "PADDING", iupTabsGetPaddingAttrib, gtkTabsSetPaddingAttrib, IUPAF_SAMEASSYSTEM, "0x0", IUPAF_NOT_MAPPED|IUPAF_NO_INHERIT);  } | 
