PROP_SHOW_TABS,
PROP_SHOW_BORDER,
PROP_SCROLLABLE,
- PROP_TAB_BORDER,
- PROP_TAB_HBORDER,
- PROP_TAB_VBORDER,
PROP_PAGE,
PROP_ENABLE_POPUP,
- PROP_GROUP_ID,
PROP_GROUP,
- PROP_HOMOGENEOUS
};
enum {
GtkMenu *menu);
/*** GtkNotebook Private Setters ***/
-static void gtk_notebook_set_homogeneous_tabs_internal (GtkNotebook *notebook,
- gboolean homogeneous);
-static void gtk_notebook_set_tab_border_internal (GtkNotebook *notebook,
- guint border_width);
-static void gtk_notebook_set_tab_hborder_internal (GtkNotebook *notebook,
- guint tab_hborder);
-static void gtk_notebook_set_tab_vborder_internal (GtkNotebook *notebook,
- guint tab_vborder);
-
static void gtk_notebook_update_tab_states (GtkNotebook *notebook);
static gboolean gtk_notebook_mnemonic_activate_switch_page (GtkWidget *child,
gboolean overload,
GTK_TYPE_POSITION_TYPE,
GTK_POS_TOP,
GTK_PARAM_READWRITE));
- g_object_class_install_property (gobject_class,
- PROP_TAB_BORDER,
- g_param_spec_uint ("tab-border",
- P_("Tab Border"),
- P_("Width of the border around the tab labels"),
- 0,
- G_MAXUINT,
- 2,
- GTK_PARAM_WRITABLE));
- g_object_class_install_property (gobject_class,
- PROP_TAB_HBORDER,
- g_param_spec_uint ("tab-hborder",
- P_("Horizontal Tab Border"),
- P_("Width of the horizontal border of tab labels"),
- 0,
- G_MAXUINT,
- 2,
- GTK_PARAM_READWRITE));
- g_object_class_install_property (gobject_class,
- PROP_TAB_VBORDER,
- g_param_spec_uint ("tab-vborder",
- P_("Vertical Tab Border"),
- P_("Width of the vertical border of tab labels"),
- 0,
- G_MAXUINT,
- 2,
- GTK_PARAM_READWRITE));
g_object_class_install_property (gobject_class,
PROP_SHOW_TABS,
g_param_spec_boolean ("show-tabs",
P_("If TRUE, pressing the right mouse button on the notebook pops up a menu that you can use to go to a page"),
FALSE,
GTK_PARAM_READWRITE));
- g_object_class_install_property (gobject_class,
- PROP_HOMOGENEOUS,
- g_param_spec_boolean ("homogeneous",
- P_("Homogeneous"),
- P_("Whether tabs should have homogeneous sizes"),
- FALSE,
- GTK_PARAM_READWRITE));
- g_object_class_install_property (gobject_class,
- PROP_GROUP_ID,
- g_param_spec_int ("group-id",
- P_("Group ID"),
- P_("Group ID for tabs drag and drop"),
- -1,
- G_MAXINT,
- -1,
- GTK_PARAM_READWRITE));
/**
* GtkNotebook:group:
{
GtkNotebookPrivate *priv;
- GTK_WIDGET_SET_FLAGS (notebook, GTK_CAN_FOCUS);
- GTK_WIDGET_SET_FLAGS (notebook, GTK_NO_WINDOW);
+ gtk_widget_set_can_focus (GTK_WIDGET (notebook), TRUE);
+ gtk_widget_set_has_window (GTK_WIDGET (notebook), FALSE);
priv = GTK_NOTEBOOK_GET_PRIVATE (notebook);
* do this by setting a flag, then propagating the focus motion to the notebook.
*/
toplevel = gtk_widget_get_toplevel (GTK_WIDGET (notebook));
- if (!GTK_WIDGET_TOPLEVEL (toplevel))
+ if (!gtk_widget_is_toplevel (toplevel))
return;
g_object_ref (notebook);
else
gtk_notebook_popup_disable (notebook);
break;
- case PROP_HOMOGENEOUS:
- gtk_notebook_set_homogeneous_tabs_internal (notebook, g_value_get_boolean (value));
- break;
case PROP_PAGE:
gtk_notebook_set_current_page (notebook, g_value_get_int (value));
break;
case PROP_TAB_POS:
gtk_notebook_set_tab_pos (notebook, g_value_get_enum (value));
break;
- case PROP_TAB_BORDER:
- gtk_notebook_set_tab_border_internal (notebook, g_value_get_uint (value));
- break;
- case PROP_TAB_HBORDER:
- gtk_notebook_set_tab_hborder_internal (notebook, g_value_get_uint (value));
- break;
- case PROP_TAB_VBORDER:
- gtk_notebook_set_tab_vborder_internal (notebook, g_value_get_uint (value));
- break;
- case PROP_GROUP_ID:
- gtk_notebook_set_group_id (notebook, g_value_get_int (value));
- break;
case PROP_GROUP:
gtk_notebook_set_group (notebook, g_value_get_pointer (value));
break;
case PROP_ENABLE_POPUP:
g_value_set_boolean (value, notebook->menu != NULL);
break;
- case PROP_HOMOGENEOUS:
- g_value_set_boolean (value, notebook->homogeneous);
- break;
case PROP_PAGE:
g_value_set_int (value, gtk_notebook_get_current_page (notebook));
break;
case PROP_TAB_POS:
g_value_set_enum (value, notebook->tab_pos);
break;
- case PROP_TAB_HBORDER:
- g_value_set_uint (value, notebook->tab_hborder);
- break;
- case PROP_TAB_VBORDER:
- g_value_set_uint (value, notebook->tab_vborder);
- break;
- case PROP_GROUP_ID:
- g_value_set_int (value, gtk_notebook_get_group_id (notebook));
- break;
case PROP_GROUP:
g_value_set_pointer (value, priv->group);
break;
for (tmp_list = notebook->children; tmp_list; tmp_list = tmp_list->next)
{
GtkNotebookPage *page = tmp_list->data;
- if (GTK_WIDGET_VISIBLE (page->child))
+ if (gtk_widget_get_visible (page->child))
{
visible_page = page;
break;
for (i = 0; i < N_ACTION_WIDGETS; i++)
{
if (priv->action_widget[i] &&
- GTK_WIDGET_VISIBLE (priv->action_widget[i]))
+ gtk_widget_get_visible (priv->action_widget[i]))
{
rectangle->width -= priv->action_widget[i]->allocation.width;
if ((!is_rtl && i == ACTION_WIDGET_START) ||
for (i = 0; i < N_ACTION_WIDGETS; i++)
{
if (priv->action_widget[i] &&
- GTK_WIDGET_VISIBLE (priv->action_widget[i]))
+ gtk_widget_get_visible (priv->action_widget[i]))
{
rectangle->height -= priv->action_widget[i]->allocation.height;
GList *children;
gint i;
- GTK_WIDGET_SET_FLAGS (widget, GTK_MAPPED);
+ gtk_widget_set_mapped (widget, TRUE);
notebook = GTK_NOTEBOOK (widget);
priv = GTK_NOTEBOOK_GET_PRIVATE (notebook);
- if (notebook->cur_page &&
- GTK_WIDGET_VISIBLE (notebook->cur_page->child) &&
- !GTK_WIDGET_MAPPED (notebook->cur_page->child))
+ if (notebook->cur_page &&
+ gtk_widget_get_visible (notebook->cur_page->child) &&
+ !gtk_widget_get_mapped (notebook->cur_page->child))
gtk_widget_map (notebook->cur_page->child);
- if (notebook->show_tabs)
- {
- for (i = 0; i < 2; i++)
+ for (i = 0; i < N_ACTION_WIDGETS; i++)
{
if (priv->action_widget[i] &&
- GTK_WIDGET_VISIBLE (priv->action_widget[i]) &&
- !GTK_WIDGET_MAPPED (priv->action_widget[i]))
+ gtk_widget_get_visible (priv->action_widget[i]) &&
+ GTK_WIDGET_CHILD_VISIBLE (priv->action_widget[i]) &&
+ !gtk_widget_get_mapped (priv->action_widget[i]))
gtk_widget_map (priv->action_widget[i]);
}
- }
-
+
if (notebook->scrollable)
gtk_notebook_pages_allocate (notebook);
else
children = children->next;
if (page->tab_label &&
- GTK_WIDGET_VISIBLE (page->tab_label) &&
- !GTK_WIDGET_MAPPED (page->tab_label))
+ gtk_widget_get_visible (page->tab_label) &&
+ !gtk_widget_get_mapped (page->tab_label))
gtk_widget_map (page->tab_label);
}
}
{
stop_scrolling (GTK_NOTEBOOK (widget));
- GTK_WIDGET_UNSET_FLAGS (widget, GTK_MAPPED);
+ gtk_widget_set_mapped (widget, FALSE);
gdk_window_hide (GTK_NOTEBOOK (widget)->event_window);
GdkRectangle event_window_pos;
notebook = GTK_NOTEBOOK (widget);
- GTK_WIDGET_SET_FLAGS (notebook, GTK_REALIZED);
+
+ gtk_widget_set_realized (widget, TRUE);
gtk_notebook_get_event_window_position (notebook, &event_window_pos);
{
page = children->data;
- if (GTK_WIDGET_VISIBLE (page->child))
+ if (gtk_widget_get_visible (page->child))
{
vis_pages++;
gtk_widget_size_request (page->child, &child_requisition);
child_requisition.height);
if (notebook->menu && page->menu_label->parent &&
- !GTK_WIDGET_VISIBLE (page->menu_label->parent))
+ !gtk_widget_get_visible (page->menu_label->parent))
gtk_widget_show (page->menu_label->parent);
}
else
if (page == notebook->cur_page)
switch_page = TRUE;
if (notebook->menu && page->menu_label->parent &&
- GTK_WIDGET_VISIBLE (page->menu_label->parent))
+ gtk_widget_get_visible (page->menu_label->parent))
gtk_widget_hide (page->menu_label->parent);
}
}
gint tab_max = 0;
gint padding;
gint i;
+ gint action_width = 0;
+ gint action_height = 0;
for (children = notebook->children; children;
children = children->next)
{
page = children->data;
- if (GTK_WIDGET_VISIBLE (page->child))
+ if (gtk_widget_get_visible (page->child))
{
- if (!GTK_WIDGET_VISIBLE (page->tab_label))
+ if (!gtk_widget_get_visible (page->tab_label))
gtk_widget_show (page->tab_label);
gtk_widget_size_request (page->tab_label,
break;
}
}
- else if (GTK_WIDGET_VISIBLE (page->tab_label))
+ else if (gtk_widget_get_visible (page->tab_label))
gtk_widget_hide (page->tab_label);
}
page = children->data;
children = children->next;
- if (!GTK_WIDGET_VISIBLE (page->child))
+ if (!gtk_widget_get_visible (page->child))
continue;
if (notebook->homogeneous)
widget->requisition.width < tab_width)
tab_width = tab_max + 2 * (scroll_arrow_hlength + arrow_spacing);
+ action_width += action_widget_requisition[ACTION_WIDGET_START].width;
+ action_width += action_widget_requisition[ACTION_WIDGET_END].width;
if (notebook->homogeneous && !notebook->scrollable)
widget->requisition.width = MAX (widget->requisition.width,
vis_pages * tab_max +
- tab_overlap);
+ tab_overlap + action_width);
else
widget->requisition.width = MAX (widget->requisition.width,
- tab_width + tab_overlap);
+ tab_width + tab_overlap + action_width);
- widget->requisition.width += action_widget_requisition[ACTION_WIDGET_START].width;
- widget->requisition.width += action_widget_requisition[ACTION_WIDGET_END].width;
widget->requisition.height += tab_height;
break;
case GTK_POS_LEFT:
page = children->data;
children = children->next;
- if (!GTK_WIDGET_VISIBLE (page->child))
+ if (!gtk_widget_get_visible (page->child))
continue;
page->requisition.width = tab_width;
if (notebook->scrollable && vis_pages > 1 &&
widget->requisition.height < tab_height)
tab_height = tab_max + (2 * scroll_arrow_vlength + arrow_spacing);
+ action_height += action_widget_requisition[ACTION_WIDGET_START].height;
+ action_height += action_widget_requisition[ACTION_WIDGET_END].height;
if (notebook->homogeneous && !notebook->scrollable)
widget->requisition.height =
MAX (widget->requisition.height,
- vis_pages * tab_max + tab_overlap);
+ vis_pages * tab_max + tab_overlap + action_height);
else
widget->requisition.height =
MAX (widget->requisition.height,
- tab_height + tab_overlap);
+ tab_height + tab_overlap + action_height);
if (!notebook->homogeneous || notebook->scrollable)
vis_pages = 1;
vis_pages * tab_max +
tab_overlap);
- widget->requisition.height += action_widget_requisition[ACTION_WIDGET_START].height;
- widget->requisition.height += action_widget_requisition[ACTION_WIDGET_END].height;
widget->requisition.width += tab_width;
break;
}
{
page = children->data;
- if (page->tab_label && GTK_WIDGET_VISIBLE (page->tab_label))
+ if (page->tab_label && gtk_widget_get_visible (page->tab_label))
gtk_widget_hide (page->tab_label);
}
}
children = children->next)
{
page = children->data;
- if (GTK_WIDGET_VISIBLE (page->child))
+ if (gtk_widget_get_visible (page->child))
{
gtk_notebook_switch_page (notebook, page);
break;
}
}
}
- else if (GTK_WIDGET_VISIBLE (widget))
+ else if (gtk_widget_get_visible (widget))
{
widget->requisition.width = GTK_CONTAINER (widget)->border_width * 2;
widget->requisition.height= GTK_CONTAINER (widget)->border_width * 2;
gtk_widget_style_get (widget, "focus-line-width", &focus_width, NULL);
widget->allocation = *allocation;
- if (GTK_WIDGET_REALIZED (widget))
+ if (gtk_widget_get_realized (widget))
{
GdkRectangle position;
gdk_window_move_resize (notebook->event_window,
position.x, position.y,
position.width, position.height);
- if (GTK_WIDGET_MAPPED (notebook))
+ if (gtk_widget_get_mapped (GTK_WIDGET (notebook)))
gdk_window_show_unraised (notebook->event_window);
}
else
page = children->data;
children = children->next;
- if (GTK_WIDGET_VISIBLE (page->child))
+ if (gtk_widget_get_visible (page->child))
gtk_widget_size_allocate (page->child, &child_allocation);
}
gtk_container_propagate_expose (GTK_CONTAINER (notebook),
notebook->cur_page->tab_label, event);
}
- else if (GTK_WIDGET_DRAWABLE (widget))
+ else if (gtk_widget_is_drawable (widget))
{
gtk_notebook_paint (widget, &event->area);
if (notebook->show_tabs)
pages = pages->next;
if (page->tab_label->window == event->window &&
- GTK_WIDGET_DRAWABLE (page->tab_label))
+ gtk_widget_is_drawable (page->tab_label))
gtk_container_propagate_expose (GTK_CONTAINER (notebook),
page->tab_label, event);
}
for (i = 0; i < N_ACTION_WIDGETS; i++)
{
if (priv->action_widget[i] &&
- GTK_WIDGET_DRAWABLE (priv->action_widget[i]))
+ gtk_widget_is_drawable (priv->action_widget[i]))
gtk_container_propagate_expose (GTK_CONTAINER (notebook),
priv->action_widget[i], event);
}
gboolean left = (ARROW_IS_LEFT (arrow) && !is_rtl) ||
(!ARROW_IS_LEFT (arrow) && is_rtl);
- if (!GTK_WIDGET_HAS_FOCUS (widget))
+ if (!gtk_widget_has_focus (widget))
gtk_widget_grab_focus (widget);
notebook->button = button;
{
page = children->data;
- if (GTK_WIDGET_VISIBLE (page->child) &&
- page->tab_label && GTK_WIDGET_MAPPED (page->tab_label) &&
+ if (gtk_widget_get_visible (page->child) &&
+ page->tab_label && gtk_widget_get_mapped (page->tab_label) &&
(x >= page->allocation.x) &&
(y >= page->allocation.y) &&
(x <= (page->allocation.x + page->allocation.width)) &&
page = children->data;
if ((priv->operation != DRAG_OPERATION_REORDER || page != notebook->cur_page) &&
- GTK_WIDGET_VISIBLE (page->child) &&
+ gtk_widget_get_visible (page->child) &&
page->tab_label &&
- GTK_WIDGET_MAPPED (page->tab_label) &&
+ gtk_widget_get_mapped (page->tab_label) &&
page->pack == pack)
{
switch (notebook->tab_pos)
static void
show_drag_window (GtkNotebook *notebook,
GtkNotebookPrivate *priv,
- GtkNotebookPage *page)
+ GtkNotebookPage *page,
+ GdkDevice *device)
{
GtkWidget *widget = GTK_WIDGET (notebook);
gdk_window_show (priv->drag_window);
/* the grab will dissapear when the window is hidden */
- gdk_pointer_grab (priv->drag_window,
- FALSE,
- GDK_POINTER_MOTION_MASK | GDK_BUTTON_RELEASE_MASK,
- NULL, NULL, GDK_CURRENT_TIME);
+ gdk_device_grab (device, priv->drag_window,
+ GDK_OWNERSHIP_WINDOW, FALSE,
+ GDK_POINTER_MOTION_MASK | GDK_BUTTON_RELEASE_MASK,
+ NULL, GDK_CURRENT_TIME);
}
/* This function undoes the reparenting that happens both when drag_window
if (priv->operation != DRAG_OPERATION_REORDER)
{
priv->operation = DRAG_OPERATION_REORDER;
- show_drag_window (notebook, priv, page);
+ show_drag_window (notebook, priv, page, event->device);
}
gtk_notebook_pages_allocate (notebook);
gtk_notebook_state_changed (GtkWidget *widget,
GtkStateType previous_state)
{
- if (!GTK_WIDGET_IS_SENSITIVE (widget))
+ if (!gtk_widget_is_sensitive (widget))
stop_scrolling (GTK_NOTEBOOK (widget));
}
{
GtkNotebook *notebook = GTK_NOTEBOOK (widget);
- if (GTK_WIDGET_HAS_FOCUS (widget) && GTK_WIDGET_DRAWABLE (widget) &&
+ if (gtk_widget_has_focus (widget) && gtk_widget_is_drawable (widget) &&
notebook->show_tabs && notebook->cur_page &&
notebook->cur_page->tab_label->window == event->window)
{
area.height = page->tab_label->allocation.height + 2 * focus_width;
gtk_paint_focus (widget->style, event->window,
- GTK_WIDGET_STATE (widget), NULL, widget, "tab",
+ gtk_widget_get_state (widget), NULL, widget, "tab",
area.x, area.y, area.width, area.height);
}
}
label = gtk_notebook_get_tab_label (notebook, child);
if (GTK_IS_LABEL (label))
- g_value_set_string (value, GTK_LABEL (label)->label);
+ g_value_set_string (value, gtk_label_get_label (GTK_LABEL (label)));
else
g_value_set_string (value, NULL);
break;
label = gtk_notebook_get_menu_label (notebook, child);
if (GTK_IS_LABEL (label))
- g_value_set_string (value, GTK_LABEL (label)->label);
+ g_value_set_string (value, gtk_label_get_label (GTK_LABEL (label)));
else
g_value_set_string (value, NULL);
break;
GtkNotebookPrivate *priv = GTK_NOTEBOOK_GET_PRIVATE (notebook);
if (priv->action_widget[action] &&
- GTK_WIDGET_VISIBLE (priv->action_widget[action]))
+ gtk_widget_get_visible (priv->action_widget[action]))
return gtk_widget_child_focus (priv->action_widget[action], direction);
else
return FALSE;
*/
toplevel = gtk_widget_get_toplevel (GTK_WIDGET (container));
- if (toplevel && GTK_WIDGET_TOPLEVEL (toplevel))
+ if (toplevel && gtk_widget_is_toplevel (toplevel))
{
page_child = GTK_WINDOW (toplevel)->focus_widget;
while (page_child)
if (notebook->cur_page &&
notebook->cur_page->child == page &&
- !GTK_WIDGET_VISIBLE (page))
+ !gtk_widget_get_visible (page))
{
list = g_list_find (notebook->children, notebook->cur_page);
if (list)
if (tab_label)
{
- if (notebook->show_tabs && GTK_WIDGET_VISIBLE (child))
+ if (notebook->show_tabs && gtk_widget_get_visible (child))
gtk_widget_show (tab_label);
else
gtk_widget_hide (tab_label);
widget = GTK_WIDGET (notebook);
border = GTK_CONTAINER (notebook)->border_width;
- if (!GTK_WIDGET_MAPPED (notebook) || !notebook->first_tab)
+ if (!gtk_widget_get_mapped (widget) || !notebook->first_tab)
return;
page = notebook->first_tab->data;
static void
gtk_notebook_redraw_arrows (GtkNotebook *notebook)
{
- if (GTK_WIDGET_MAPPED (notebook) && gtk_notebook_show_arrows (notebook))
+ if (gtk_widget_get_mapped (GTK_WIDGET (notebook)) &&
+ gtk_notebook_show_arrows (notebook))
{
GdkRectangle rect;
gint i;
g_signal_handler_disconnect (page->child, page->notify_visible_handler);
- if (GTK_WIDGET_VISIBLE (page->child) && GTK_WIDGET_VISIBLE (notebook))
+ if (gtk_widget_get_visible (page->child) &&
+ gtk_widget_get_visible (GTK_WIDGET (notebook)))
need_resize = TRUE;
gtk_widget_unparent (page->child);
if (destroying)
gtk_widget_destroy (tab_label);
g_object_unref (tab_label);
- }
+ }
if (notebook->menu)
{
- gtk_container_remove (GTK_CONTAINER (notebook->menu),
- page->menu_label->parent);
+ GtkWidget *parent = page->menu_label->parent;
+
+ gtk_notebook_menu_label_unparent (parent, NULL);
+ gtk_container_remove (GTK_CONTAINER (notebook->menu), parent);
+
gtk_widget_queue_resize (notebook->menu);
}
if (!page->default_menu)
g_object_unref (page->menu_label);
-
+
g_list_free (list);
if (page->last_focus_child)
gtk_label_set_text (GTK_LABEL (page->tab_label), string);
}
- if (GTK_WIDGET_VISIBLE (page->child) &&
- !GTK_WIDGET_VISIBLE (page->tab_label))
+ if (gtk_widget_get_visible (page->child) &&
+ !gtk_widget_get_visible (page->tab_label))
gtk_widget_show (page->tab_label);
- else if (!GTK_WIDGET_VISIBLE (page->child) &&
- GTK_WIDGET_VISIBLE (page->tab_label))
+ else if (!gtk_widget_get_visible (page->child) &&
+ gtk_widget_get_visible (page->tab_label))
gtk_widget_hide (page->tab_label);
}
if (notebook->menu && page->default_menu)
{
if (GTK_IS_LABEL (page->tab_label))
gtk_label_set_text (GTK_LABEL (page->menu_label),
- GTK_LABEL (page->tab_label)->label);
+ gtk_label_get_label (GTK_LABEL (page->tab_label)));
else
gtk_label_set_text (GTK_LABEL (page->menu_label), string);
}
page = list->data;
if (page->pack == flag &&
(!find_visible ||
- (GTK_WIDGET_VISIBLE (page->child) &&
+ (gtk_widget_get_visible (page->child) &&
(!page->tab_label || NOTEBOOK_IS_TAB_LABEL_PARENT (notebook, page)))))
return list;
old_list = list;
page = list->data;
if (page->pack != flag &&
(!find_visible ||
- (GTK_WIDGET_VISIBLE (page->child) &&
+ (gtk_widget_get_visible (page->child) &&
(!page->tab_label || NOTEBOOK_IS_TAB_LABEL_PARENT (notebook, page)))))
return list;
old_list = list;
gboolean is_rtl;
gint tab_pos;
- if (!GTK_WIDGET_DRAWABLE (widget))
+ if (!gtk_widget_is_drawable (widget))
return;
notebook = GTK_NOTEBOOK (widget);
tab_pos = get_effective_tab_pos (notebook);
if ((!notebook->show_tabs && !notebook->show_border) ||
- !notebook->cur_page || !GTK_WIDGET_VISIBLE (notebook->cur_page->child))
+ !notebook->cur_page || !gtk_widget_get_visible (notebook->cur_page->child))
return;
x = widget->allocation.x + border_width;
if (!notebook->first_tab)
notebook->first_tab = notebook->children;
- if (!GTK_WIDGET_MAPPED (notebook->cur_page->tab_label))
+ if (!gtk_widget_get_mapped (notebook->cur_page->tab_label))
page = GTK_NOTEBOOK_PAGE (notebook->first_tab);
else
page = notebook->cur_page;
}
if (!NOTEBOOK_IS_TAB_LABEL_PARENT (notebook, notebook->cur_page) ||
- !GTK_WIDGET_MAPPED (notebook->cur_page->tab_label))
+ !gtk_widget_get_mapped (notebook->cur_page->tab_label))
{
gap_x = 0;
gap_width = 0;
page = children->data;
children = gtk_notebook_search_page (notebook, children,
step, TRUE);
- if (!GTK_WIDGET_VISIBLE (page->child))
+ if (!gtk_widget_get_visible (page->child))
continue;
- if (!GTK_WIDGET_MAPPED (page->tab_label))
+ if (!gtk_widget_get_mapped (page->tab_label))
showarrow = TRUE;
else if (page != notebook->cur_page)
gtk_notebook_draw_tab (notebook, page, area);
GtkWidget *widget;
if (!NOTEBOOK_IS_TAB_LABEL_PARENT (notebook, page) ||
- !GTK_WIDGET_MAPPED (page->tab_label) ||
+ !gtk_widget_get_mapped (page->tab_label) ||
(page->allocation.width == 0) || (page->allocation.height == 0))
return;
GtkArrowType arrow;
gboolean is_rtl, left;
- if (GTK_WIDGET_DRAWABLE (notebook))
+ widget = GTK_WIDGET (notebook);
+
+ if (gtk_widget_is_drawable (widget))
{
gint scroll_arrow_hlength;
gint scroll_arrow_vlength;
gtk_notebook_get_arrow_rect (notebook, &arrow_rect, nbarrow);
- widget = GTK_WIDGET (notebook);
-
is_rtl = gtk_widget_get_direction (widget) == GTK_TEXT_DIR_RTL;
left = (ARROW_IS_LEFT (nbarrow) && !is_rtl) ||
(!ARROW_IS_LEFT (nbarrow) && is_rtl);
state_type = GTK_STATE_PRELIGHT;
}
else
- state_type = GTK_WIDGET_STATE (widget);
+ state_type = gtk_widget_get_state (widget);
if (notebook->click_child == nbarrow)
shadow_type = GTK_SHADOW_IN;
children = children->next;
if (NOTEBOOK_IS_TAB_LABEL_PARENT (notebook, page) &&
- GTK_WIDGET_VISIBLE (page->child))
+ gtk_widget_get_visible (page->child))
*tab_space += page->requisition.width;
}
break;
children = children->next;
if (NOTEBOOK_IS_TAB_LABEL_PARENT (notebook, page) &&
- GTK_WIDGET_VISIBLE (page->child))
+ gtk_widget_get_visible (page->child))
*tab_space += page->requisition.height;
}
break;
*remaining_space = tab_space;
if (NOTEBOOK_IS_TAB_LABEL_PARENT (notebook, notebook->cur_page) &&
- GTK_WIDGET_VISIBLE (notebook->cur_page->child))
+ gtk_widget_get_visible (notebook->cur_page->child))
{
gtk_notebook_calc_tabs (notebook,
notebook->focus_tab,
/* Is first_tab really predecessor of focus_tab? */
page = notebook->first_tab->data;
if (NOTEBOOK_IS_TAB_LABEL_PARENT (notebook, page) &&
- GTK_WIDGET_VISIBLE (page->child))
+ gtk_widget_get_visible (page->child))
for (children = notebook->focus_tab;
children && children != notebook->first_tab;
children = gtk_notebook_search_page (notebook,
children = children->next;
if (!NOTEBOOK_IS_TAB_LABEL_PARENT (notebook, page) ||
- !GTK_WIDGET_VISIBLE (page->child))
+ !gtk_widget_get_visible (page->child))
continue;
c++;
{
*children = (*children)->next;
- if (page->pack != GTK_PACK_END || !GTK_WIDGET_VISIBLE (page->child))
+ if (page->pack != GTK_PACK_END || !gtk_widget_get_visible (page->child))
continue;
}
gboolean was_visible = page->tab_allocated_visible;
if (!page->tab_label ||
- !GTK_WIDGET_VISIBLE (page->tab_label) ||
+ !gtk_widget_get_visible (page->tab_label) ||
!gtk_widget_get_child_visible (page->tab_label))
{
page->tab_allocated_visible = FALSE;
{
page = children->data;
if (NOTEBOOK_IS_TAB_LABEL_PARENT (notebook, page) &&
- GTK_WIDGET_VISIBLE (page->child))
+ gtk_widget_get_visible (page->child))
{
if (page->pack == pack)
{
{
page = children->data;
if (NOTEBOOK_IS_TAB_LABEL_PARENT (notebook, page) &&
- GTK_WIDGET_VISIBLE (page->child))
+ gtk_widget_get_visible (page->child))
{
if (page->pack == pack)
{
{
gboolean child_has_focus;
- if (notebook->cur_page == page || !GTK_WIDGET_VISIBLE (page->child))
+ if (notebook->cur_page == page || !gtk_widget_get_visible (page->child))
return;
/* save the value here, changing visibility changes focus */
return;
page = notebook->focus_tab->data;
- if (GTK_WIDGET_MAPPED (page->tab_label))
+ if (gtk_widget_get_mapped (page->tab_label))
gtk_notebook_redraw_tabs (notebook);
else
gtk_notebook_pages_allocate (notebook);
if (page->default_menu)
{
if (GTK_IS_LABEL (page->tab_label))
- page->menu_label = gtk_label_new (GTK_LABEL (page->tab_label)->label);
+ page->menu_label = gtk_label_new (gtk_label_get_label (GTK_LABEL (page->tab_label)));
else
page->menu_label = gtk_label_new ("");
gtk_misc_set_alignment (GTK_MISC (page->menu_label), 0.0, 0.5);
gtk_notebook_real_page_position (notebook, list));
g_signal_connect (menu_item, "activate",
G_CALLBACK (gtk_notebook_menu_switch_page), page);
- if (GTK_WIDGET_VISIBLE (page->child))
+ if (gtk_widget_get_visible (page->child))
gtk_widget_show (menu_item);
}
notebook->menu = NULL;
}
-/* Private GtkNotebook Setter Functions:
- *
- * gtk_notebook_set_homogeneous_tabs_internal
- * gtk_notebook_set_tab_border_internal
- * gtk_notebook_set_tab_hborder_internal
- * gtk_notebook_set_tab_vborder_internal
- */
-static void
-gtk_notebook_set_homogeneous_tabs_internal (GtkNotebook *notebook,
- gboolean homogeneous)
-{
- if (homogeneous == notebook->homogeneous)
- return;
-
- notebook->homogeneous = homogeneous;
- gtk_widget_queue_resize (GTK_WIDGET (notebook));
-
- g_object_notify (G_OBJECT (notebook), "homogeneous");
-}
-
-static void
-gtk_notebook_set_tab_border_internal (GtkNotebook *notebook,
- guint border_width)
-{
- notebook->tab_hborder = border_width;
- notebook->tab_vborder = border_width;
-
- if (GTK_WIDGET_VISIBLE (notebook) && notebook->show_tabs)
- gtk_widget_queue_resize (GTK_WIDGET (notebook));
-
- g_object_freeze_notify (G_OBJECT (notebook));
- g_object_notify (G_OBJECT (notebook), "tab-hborder");
- g_object_notify (G_OBJECT (notebook), "tab-vborder");
- g_object_thaw_notify (G_OBJECT (notebook));
-}
-
-static void
-gtk_notebook_set_tab_hborder_internal (GtkNotebook *notebook,
- guint tab_hborder)
-{
- if (notebook->tab_hborder == tab_hborder)
- return;
-
- notebook->tab_hborder = tab_hborder;
-
- if (GTK_WIDGET_VISIBLE (notebook) && notebook->show_tabs)
- gtk_widget_queue_resize (GTK_WIDGET (notebook));
-
- g_object_notify (G_OBJECT (notebook), "tab-hborder");
-}
-
-static void
-gtk_notebook_set_tab_vborder_internal (GtkNotebook *notebook,
- guint tab_vborder)
-{
- if (notebook->tab_vborder == tab_vborder)
- return;
-
- notebook->tab_vborder = tab_vborder;
-
- if (GTK_WIDGET_VISIBLE (notebook) && notebook->show_tabs)
- gtk_widget_queue_resize (GTK_WIDGET (notebook));
-
- g_object_notify (G_OBJECT (notebook), "tab-vborder");
-}
-
/* Public GtkNotebook Page Insert/Remove Methods :
*
* gtk_notebook_append_page
{
notebook->show_border = show_border;
- if (GTK_WIDGET_VISIBLE (notebook))
+ if (gtk_widget_get_visible (GTK_WIDGET (notebook)))
gtk_widget_queue_resize (GTK_WIDGET (notebook));
g_object_notify (G_OBJECT (notebook), "show-border");
gtk_notebook_set_show_tabs (GtkNotebook *notebook,
gboolean show_tabs)
{
+ GtkNotebookPrivate *priv;
GtkNotebookPage *page;
GList *children;
+ gint i;
g_return_if_fail (GTK_IS_NOTEBOOK (notebook));
+ priv = GTK_NOTEBOOK_GET_PRIVATE (notebook);
+
show_tabs = show_tabs != FALSE;
if (notebook->show_tabs == show_tabs)
if (!show_tabs)
{
- GTK_WIDGET_UNSET_FLAGS (notebook, GTK_CAN_FOCUS);
-
+ gtk_widget_set_can_focus (GTK_WIDGET (notebook), FALSE);
+
while (children)
{
page = children->data;
}
else
{
- GTK_WIDGET_SET_FLAGS (notebook, GTK_CAN_FOCUS);
+ gtk_widget_set_can_focus (GTK_WIDGET (notebook), TRUE);
gtk_notebook_update_labels (notebook);
}
+
+ for (i = 0; i < N_ACTION_WIDGETS; i++)
+ {
+ if (priv->action_widget[i])
+ gtk_widget_set_child_visible (priv->action_widget[i], show_tabs);
+ }
+
gtk_widget_queue_resize (GTK_WIDGET (notebook));
g_object_notify (G_OBJECT (notebook), "show-tabs");
if (notebook->tab_pos != pos)
{
notebook->tab_pos = pos;
- if (GTK_WIDGET_VISIBLE (notebook))
+ if (gtk_widget_get_visible (GTK_WIDGET (notebook)))
gtk_widget_queue_resize (GTK_WIDGET (notebook));
}
return notebook->tab_pos;
}
-/**
- * gtk_notebook_set_homogeneous_tabs:
- * @notebook: a #GtkNotebook
- * @homogeneous: %TRUE if all tabs should be the same size.
- *
- * Sets whether the tabs must have all the same size or not.
- **/
-void
-gtk_notebook_set_homogeneous_tabs (GtkNotebook *notebook,
- gboolean homogeneous)
-{
- g_return_if_fail (GTK_IS_NOTEBOOK (notebook));
-
- gtk_notebook_set_homogeneous_tabs_internal (notebook, homogeneous);
-}
-
-/**
- * gtk_notebook_set_tab_border:
- * @notebook: a #GtkNotebook
- * @border_width: width of the border around the tab labels.
- *
- * Sets the width the border around the tab labels
- * in a notebook. This is equivalent to calling
- * gtk_notebook_set_tab_hborder (@notebook, @border_width) followed
- * by gtk_notebook_set_tab_vborder (@notebook, @border_width).
- **/
-void
-gtk_notebook_set_tab_border (GtkNotebook *notebook,
- guint border_width)
-{
- g_return_if_fail (GTK_IS_NOTEBOOK (notebook));
-
- gtk_notebook_set_tab_border_internal (notebook, border_width);
-}
-
-/**
- * gtk_notebook_set_tab_hborder:
- * @notebook: a #GtkNotebook
- * @tab_hborder: width of the horizontal border of tab labels.
- *
- * Sets the width of the horizontal border of tab labels.
- **/
-void
-gtk_notebook_set_tab_hborder (GtkNotebook *notebook,
- guint tab_hborder)
-{
- g_return_if_fail (GTK_IS_NOTEBOOK (notebook));
-
- gtk_notebook_set_tab_hborder_internal (notebook, tab_hborder);
-}
-
-/**
- * gtk_notebook_set_tab_vborder:
- * @notebook: a #GtkNotebook
- * @tab_vborder: width of the vertical border of tab labels.
- *
- * Sets the width of the vertical border of tab labels.
- **/
-void
-gtk_notebook_set_tab_vborder (GtkNotebook *notebook,
- guint tab_vborder)
-{
- g_return_if_fail (GTK_IS_NOTEBOOK (notebook));
-
- gtk_notebook_set_tab_vborder_internal (notebook, tab_vborder);
-}
-
/**
* gtk_notebook_set_scrollable:
* @notebook: a #GtkNotebook
{
notebook->scrollable = scrollable;
- if (GTK_WIDGET_VISIBLE (notebook))
+ if (gtk_widget_get_visible (GTK_WIDGET (notebook)))
gtk_widget_queue_resize (GTK_WIDGET (notebook));
g_object_notify (G_OBJECT (notebook), "scrollable");
* @notebook: a #GtkNotebook
*
* Enables the popup menu: if the user clicks with the right mouse button on
- * the bookmarks, a menu with all the pages will be popped up.
+ * the tab labels, a menu with all the pages will be popped up.
**/
void
gtk_notebook_popup_enable (GtkNotebook *notebook)
G_CALLBACK (gtk_notebook_mnemonic_activate_switch_page),
notebook);
- if (notebook->show_tabs && GTK_WIDGET_VISIBLE (child))
+ if (notebook->show_tabs && gtk_widget_get_visible (child))
{
gtk_widget_show (page->tab_label);
gtk_widget_queue_resize (GTK_WIDGET (notebook));
* gtk_notebook_set_tab_label_packing:
* @notebook: a #GtkNotebook
* @child: the child widget
- * @expand: whether to expand the bookmark or not
- * @fill: whether the bookmark should fill the allocated area or not
- * @pack_type: the position of the bookmark
+ * @expand: whether to expand the tab label or not
+ * @fill: whether the tab label should fill the allocated area or not
+ * @pack_type: the position of the tab label
*
* Sets the packing parameters for the tab label of the page
* containing @child. See gtk_box_pack_start() for the exact meaning
* of the parameters.
*
- * Deprecated: 2.20: Modify the "tab-expand" and "tab-fill" child
- * properties instead.
+ * Deprecated: 2.20: Modify the #GtkNotebook:tab-expand and
+ * #GtkNotebook:tab-fill child properties instead.
+ * Modifying the packing of the tab label is a deprecated feature and
+ * shouldn't be done anymore.
**/
void
gtk_notebook_set_tab_label_packing (GtkNotebook *notebook,
* Query the packing attributes for the tab label of the page
* containing @child.
*
- * Deprecated: 2.20: Modify the "tab-expand" and "tab-fill" child
- * properties instead.
+ * Deprecated: 2.20: Modify the #GtkNotebook:tab-expand and
+ * #GtkNotebook:tab-fill child properties instead.
**/
void
gtk_notebook_query_tab_label_packing (GtkNotebook *notebook,
/**
* gtk_notebook_set_window_creation_hook:
- * @func: the #GtkNotebookWindowCreationFunc, or %NULL
+ * @func: (allow-none): the #GtkNotebookWindowCreationFunc, or %NULL
* @data: user data for @func
- * @destroy: Destroy notifier for @data, or %NULL
+ * @destroy: (allow-none): Destroy notifier for @data, or %NULL
*
* Installs a global function used to create a window
* when a detached tab is dropped in an empty area.
window_creation_hook_destroy = destroy;
}
-/**
- * gtk_notebook_set_group_id:
- * @notebook: a #GtkNotebook
- * @group_id: a group identificator, or -1 to unset it
- *
- * Sets an group identificator for @notebook, notebooks sharing
- * the same group identificator will be able to exchange tabs
- * via drag and drop. A notebook with group identificator -1 will
- * not be able to exchange tabs with any other notebook.
- *
- * Since: 2.10
- * Deprecated: 2.12: use gtk_notebook_set_group() instead.
- */
-void
-gtk_notebook_set_group_id (GtkNotebook *notebook,
- gint group_id)
-{
- gpointer group;
-
- g_return_if_fail (GTK_IS_NOTEBOOK (notebook));
-
- /* add 1 to get rid of the -1/NULL difference */
- group = GINT_TO_POINTER (group_id + 1);
- gtk_notebook_set_group (notebook, group);
-}
-
/**
* gtk_notebook_set_group:
* @notebook: a #GtkNotebook
- * @group: a pointer to identify the notebook group, or %NULL to unset it
+ * @group: (allow-none): a pointer to identify the notebook group, or %NULL to unset it
*
* Sets a group identificator pointer for @notebook, notebooks sharing
* the same group identificator pointer will be able to exchange tabs
}
}
-/**
- * gtk_notebook_get_group_id:
- * @notebook: a #GtkNotebook
- *
- * Gets the current group identificator for @notebook.
- *
- * Return Value: the group identificator, or -1 if none is set.
- *
- * Since: 2.10
- * Deprecated: 2.12: use gtk_notebook_get_group() instead.
- */
-gint
-gtk_notebook_get_group_id (GtkNotebook *notebook)
-{
- GtkNotebookPrivate *priv;
-
- g_return_val_if_fail (GTK_IS_NOTEBOOK (notebook), -1);
-
- priv = GTK_NOTEBOOK_GET_PRIVATE (notebook);
-
- /* substract 1 to get rid of the -1/NULL difference */
- return GPOINTER_TO_INT (priv->group) - 1;
-}
-
/**
* gtk_notebook_get_group:
* @notebook: a #GtkNotebook
if (widget)
{
+ gtk_widget_set_child_visible (widget, notebook->show_tabs);
gtk_widget_set_parent (widget, GTK_WIDGET (notebook));
-
- if (GTK_WIDGET_REALIZED (GTK_WIDGET (notebook)))
- gtk_widget_realize (widget);
}
gtk_widget_queue_resize (GTK_WIDGET (notebook));