Round two of gtk accessor functions: chanview-tabs

This commit is contained in:
TingPing 2013-10-05 22:21:04 -04:00
parent 435e8881ed
commit c463236521
2 changed files with 54 additions and 50 deletions

View File

@ -70,15 +70,15 @@ cv_tabs_sizealloc (GtkWidget *widget, GtkAllocation *allocation, chanview *cv)
if (cv->vertical) if (cv->vertical)
{ {
adj = gtk_viewport_get_vadjustment (GTK_VIEWPORT (inner->parent)); adj = gtk_viewport_get_vadjustment (GTK_VIEWPORT (gtk_widget_get_parent (inner)));
gdk_window_get_geometry (inner->parent->window, 0, 0, 0, &viewport_size, 0); gdk_window_get_geometry (gtk_widget_get_parent_window (inner), 0, 0, 0, &viewport_size, 0);
} else } else
{ {
adj = gtk_viewport_get_hadjustment (GTK_VIEWPORT (inner->parent)); adj = gtk_viewport_get_hadjustment (GTK_VIEWPORT (gtk_widget_get_parent (inner)));
gdk_window_get_geometry (inner->parent->window, 0, 0, &viewport_size, 0, 0); gdk_window_get_geometry (gtk_widget_get_parent_window (inner), 0, 0, &viewport_size, 0, 0);
} }
if (adj->upper <= viewport_size) if (gtk_adjustment_get_upper (adj) <= viewport_size)
{ {
gtk_widget_hide (((tabview *)cv)->b1); gtk_widget_hide (((tabview *)cv)->b1);
gtk_widget_hide (((tabview *)cv)->b2); gtk_widget_hide (((tabview *)cv)->b2);
@ -99,22 +99,22 @@ tab_search_offset (GtkWidget *inner, gint start_offset,
GtkWidget *button; GtkWidget *button;
gint found; gint found;
boxes = GTK_BOX (inner)->children; boxes = gtk_container_get_children (GTK_CONTAINER (inner));
if (!forward && boxes) if (!forward && boxes)
boxes = g_list_last (boxes); boxes = g_list_last (boxes);
while (boxes) while (boxes)
{ {
box = ((GtkBoxChild *)boxes->data)->widget; box = (GtkWidget *)boxes->data;
boxes = (forward ? boxes->next : boxes->prev); boxes = (forward ? boxes->next : boxes->prev);
tabs = GTK_BOX (box)->children; tabs = gtk_container_get_children (GTK_CONTAINER (box));
if (!forward && tabs) if (!forward && tabs)
tabs = g_list_last (tabs); tabs = g_list_last (tabs);
while (tabs) while (tabs)
{ {
button = ((GtkBoxChild *)tabs->data)->widget; button = (GtkWidget *)tabs->data;
tabs = (forward ? tabs->next : tabs->prev); tabs = (forward ? tabs->next : tabs->prev);
if (!GTK_IS_TOGGLE_BUTTON (button)) if (!GTK_IS_TOGGLE_BUTTON (button))
@ -137,18 +137,20 @@ tab_scroll_left_up_clicked (GtkWidget *widget, chanview *cv)
gint viewport_size; gint viewport_size;
gfloat new_value; gfloat new_value;
GtkWidget *inner; GtkWidget *inner;
GdkWindow *parent_win;
gfloat i; gfloat i;
inner = ((tabview *)cv)->inner; inner = ((tabview *)cv)->inner;
parent_win = gtk_widget_get_window (gtk_widget_get_parent (inner));
if (cv->vertical) if (cv->vertical)
{ {
adj = gtk_viewport_get_vadjustment (GTK_VIEWPORT (inner->parent)); adj = gtk_viewport_get_vadjustment (GTK_VIEWPORT (gtk_widget_get_parent(inner)));
gdk_window_get_geometry (inner->parent->window, 0, 0, 0, &viewport_size, 0); gdk_window_get_geometry (parent_win, 0, 0, 0, &viewport_size, 0);
} else } else
{ {
adj = gtk_viewport_get_hadjustment (GTK_VIEWPORT (inner->parent)); adj = gtk_viewport_get_hadjustment (GTK_VIEWPORT (gtk_widget_get_parent(inner)));
gdk_window_get_geometry (inner->parent->window, 0, 0, &viewport_size, 0, 0); gdk_window_get_geometry (parent_win, 0, 0, &viewport_size, 0, 0);
} }
new_value = tab_search_offset (inner, adj->value, 0, cv->vertical); new_value = tab_search_offset (inner, adj->value, 0, cv->vertical);
@ -184,18 +186,20 @@ tab_scroll_right_down_clicked (GtkWidget *widget, chanview *cv)
gint viewport_size; gint viewport_size;
gfloat new_value; gfloat new_value;
GtkWidget *inner; GtkWidget *inner;
GdkWindow *parent_win;
gfloat i; gfloat i;
inner = ((tabview *)cv)->inner; inner = ((tabview *)cv)->inner;
parent_win = gtk_widget_get_window (gtk_widget_get_parent (inner));
if (cv->vertical) if (cv->vertical)
{ {
adj = gtk_viewport_get_vadjustment (GTK_VIEWPORT (inner->parent)); adj = gtk_viewport_get_vadjustment (GTK_VIEWPORT (gtk_widget_get_parent(inner)));
gdk_window_get_geometry (inner->parent->window, 0, 0, 0, &viewport_size, 0); gdk_window_get_geometry (parent_win, 0, 0, 0, &viewport_size, 0);
} else } else
{ {
adj = gtk_viewport_get_hadjustment (GTK_VIEWPORT (inner->parent)); adj = gtk_viewport_get_hadjustment (GTK_VIEWPORT (gtk_widget_get_parent(inner)));
gdk_window_get_geometry (inner->parent->window, 0, 0, &viewport_size, 0, 0); gdk_window_get_geometry (parent_win, 0, 0, &viewport_size, 0, 0);
} }
new_value = tab_search_offset (inner, adj->value, 1, cv->vertical); new_value = tab_search_offset (inner, adj->value, 1, cv->vertical);
@ -329,7 +333,7 @@ cv_tabs_init (chanview *cv)
button = gtkutil_button (outer, GTK_STOCK_CLOSE, NULL, cv_tabs_xclick_cb, button = gtkutil_button (outer, GTK_STOCK_CLOSE, NULL, cv_tabs_xclick_cb,
cv, 0); cv, 0);
gtk_button_set_relief (GTK_BUTTON (button), GTK_RELIEF_NONE); gtk_button_set_relief (GTK_BUTTON (button), GTK_RELIEF_NONE);
GTK_WIDGET_UNSET_FLAGS (button, GTK_CAN_FOCUS); gtk_widget_set_can_focus (button, FALSE);
gtk_container_add (GTK_CONTAINER (cv->box), outer); gtk_container_add (GTK_CONTAINER (cv->box), outer);
} }
@ -343,7 +347,7 @@ static void
tab_add_sorted (chanview *cv, GtkWidget *box, GtkWidget *tab, chan *ch) tab_add_sorted (chanview *cv, GtkWidget *box, GtkWidget *tab, chan *ch)
{ {
GList *list; GList *list;
GtkBoxChild *child; GtkWidget *child;
int i = 0; int i = 0;
void *b; void *b;
@ -360,13 +364,13 @@ tab_add_sorted (chanview *cv, GtkWidget *box, GtkWidget *tab, chan *ch)
/* userdata, passed to mg_tabs_compare() */ /* userdata, passed to mg_tabs_compare() */
b = ch->userdata; b = ch->userdata;
list = GTK_BOX (box)->children; list = gtk_container_get_children (GTK_CONTAINER (box));
while (list) while (list)
{ {
child = list->data; child = list->data;
if (!GTK_IS_SEPARATOR (child->widget)) if (!GTK_IS_SEPARATOR (child))
{ {
void *a = g_object_get_data (G_OBJECT (child->widget), "u"); void *a = g_object_get_data (G_OBJECT (child), "u");
if (ch->tag == 0 && cv->cb_compare (a, b) > 0) if (ch->tag == 0 && cv->cb_compare (a, b) > 0)
{ {
@ -393,23 +397,23 @@ cv_tabs_prune (chanview *cv)
{ {
GList *boxes, *children; GList *boxes, *children;
GtkWidget *box, *inner; GtkWidget *box, *inner;
GtkBoxChild *child; GtkWidget *child;
int empty; int empty;
inner = ((tabview *)cv)->inner; inner = ((tabview *)cv)->inner;
boxes = GTK_BOX (inner)->children; boxes = gtk_container_get_children (GTK_CONTAINER (inner));
while (boxes) while (boxes)
{ {
child = boxes->data; child = boxes->data;
box = child->widget; box = child;
boxes = boxes->next; boxes = boxes->next;
/* check if the box is empty (except a vseperator) */ /* check if the box is empty (except a vseperator) */
empty = TRUE; empty = TRUE;
children = GTK_BOX (box)->children; children = gtk_container_get_children (GTK_CONTAINER (box));
while (children) while (children)
{ {
if (!GTK_IS_SEPARATOR (((GtkBoxChild *)children->data)->widget)) if (!GTK_IS_SEPARATOR ((GtkWidget *)children->data))
{ {
empty = FALSE; empty = FALSE;
break; break;
@ -427,21 +431,21 @@ tab_add_real (chanview *cv, GtkWidget *tab, chan *ch)
{ {
GList *boxes, *children; GList *boxes, *children;
GtkWidget *sep, *box, *inner; GtkWidget *sep, *box, *inner;
GtkBoxChild *child; GtkWidget *child;
int empty; int empty;
inner = ((tabview *)cv)->inner; inner = ((tabview *)cv)->inner;
/* see if a family for this tab already exists */ /* see if a family for this tab already exists */
boxes = GTK_BOX (inner)->children; boxes = gtk_container_get_children (GTK_CONTAINER (inner));
while (boxes) while (boxes)
{ {
child = boxes->data; child = boxes->data;
box = child->widget; box = child;
if (g_object_get_data (G_OBJECT (box), "f") == ch->family) if (g_object_get_data (G_OBJECT (box), "f") == ch->family)
{ {
tab_add_sorted (cv, box, tab, ch); tab_add_sorted (cv, box, tab, ch);
gtk_widget_queue_resize (inner->parent); gtk_widget_queue_resize (gtk_widget_get_parent(inner));
return; return;
} }
@ -449,10 +453,10 @@ tab_add_real (chanview *cv, GtkWidget *tab, chan *ch)
/* check if the box is empty (except a vseperator) */ /* check if the box is empty (except a vseperator) */
empty = TRUE; empty = TRUE;
children = GTK_BOX (box)->children; children = gtk_container_get_children (GTK_CONTAINER (box));
while (children) while (children)
{ {
if (!GTK_IS_SEPARATOR (((GtkBoxChild *)children->data)->widget)) if (!GTK_IS_SEPARATOR ((GtkWidget *)children->data))
{ {
empty = FALSE; empty = FALSE;
break; break;
@ -484,7 +488,7 @@ tab_add_real (chanview *cv, GtkWidget *tab, chan *ch)
gtk_box_pack_start (GTK_BOX (box), tab, 0, 0, 0); gtk_box_pack_start (GTK_BOX (box), tab, 0, 0, 0);
gtk_widget_show (tab); gtk_widget_show (tab);
gtk_widget_show (box); gtk_widget_show (box);
gtk_widget_queue_resize (inner->parent); gtk_widget_queue_resize (gtk_widget_get_parent(inner));
} }
static gboolean static gboolean
@ -590,25 +594,25 @@ tab_group_for_each_tab (chanview *cv,
{ {
GList *tabs; GList *tabs;
GList *boxes; GList *boxes;
GtkBoxChild *child; GtkWidget *child;
GtkBox *innerbox; GtkBox *innerbox;
int i; int i;
innerbox = (GtkBox *) ((tabview *)cv)->inner; innerbox = (GtkBox *) ((tabview *)cv)->inner;
boxes = innerbox->children; boxes = gtk_container_get_children (GTK_CONTAINER (innerbox));
i = 0; i = 0;
while (boxes) while (boxes)
{ {
child = boxes->data; child = boxes->data;
tabs = GTK_BOX (child->widget)->children; tabs = gtk_container_get_children (GTK_CONTAINER (child));
while (tabs) while (tabs)
{ {
child = tabs->data; child = tabs->data;
if (!GTK_IS_SEPARATOR (child->widget)) if (!GTK_IS_SEPARATOR (child))
{ {
if (callback (child->widget, i, usernum) != -1) if (callback (child, i, usernum) != -1)
return i; return i;
i++; i++;
} }
@ -707,15 +711,15 @@ cv_tabs_move (chan *ch, int delta)
{ {
int i, pos = 0; int i, pos = 0;
GList *list; GList *list;
GtkWidget *parent = ((GtkWidget *)ch->impl)->parent; GtkWidget *parent = gtk_widget_get_parent(GTK_WIDGET (ch->impl));
i = 0; i = 0;
for (list = GTK_BOX (parent)->children; list; list = list->next) for (list = gtk_container_get_children (GTK_CONTAINER (parent)); list; list = list->next)
{ {
GtkBoxChild *child_entry; GtkWidget *child_entry;
child_entry = list->data; child_entry = list->data;
if (child_entry->widget == ch->impl) if (child_entry == ch->impl)
pos = i; pos = i;
i++; i++;
} }
@ -733,23 +737,23 @@ cv_tabs_move_family (chan *ch, int delta)
/* find position of tab's family */ /* find position of tab's family */
i = 0; i = 0;
for (list = GTK_BOX (((tabview *)ch->cv)->inner)->children; list; list = list->next) for (list = gtk_container_get_children (GTK_CONTAINER (((tabview *)ch->cv)->inner)); list; list = list->next)
{ {
GtkBoxChild *child_entry; GtkWidget *child_entry;
void *fam; void *fam;
child_entry = list->data; child_entry = list->data;
fam = g_object_get_data (G_OBJECT (child_entry->widget), "f"); fam = g_object_get_data (G_OBJECT (child_entry), "f");
if (fam == ch->family) if (fam == ch->family)
{ {
box = child_entry->widget; box = child_entry;
pos = i; pos = i;
} }
i++; i++;
} }
pos = (pos - delta) % i; pos = (pos - delta) % i;
gtk_box_reorder_child (GTK_BOX (box->parent), box, pos); gtk_box_reorder_child (GTK_BOX (gtk_widget_get_parent(box)), box, pos);
} }
static void static void
@ -776,7 +780,7 @@ cv_tabs_rename (chan *ch, char *name)
pango_attr_list_ref (attr); pango_attr_list_ref (attr);
gtk_button_set_label (GTK_BUTTON (tab), name); gtk_button_set_label (GTK_BUTTON (tab), name);
gtk_widget_queue_resize (tab->parent->parent->parent); gtk_widget_queue_resize (gtk_widget_get_parent(gtk_widget_get_parent(gtk_widget_get_parent(tab))));
if (attr) if (attr)
{ {

View File

@ -265,7 +265,7 @@ cv_tree_focus (chan *ch)
gtk_tree_view_get_visible_rect (tree, &vis_rect); gtk_tree_view_get_visible_rect (tree, &vis_rect);
/* The cordinates aren't offset correctly */ /* The cordinates aren't offset correctly */
gtk_tree_view_widget_to_tree_coords( tree, cell_rect.x, cell_rect.y, NULL, &cell_rect.y ); gtk_tree_view_convert_widget_to_bin_window_coords ( tree, cell_rect.x, cell_rect.y, NULL, &cell_rect.y );
/* only need to scroll if out of bounds */ /* only need to scroll if out of bounds */
if (cell_rect.y < vis_rect.y || if (cell_rect.y < vis_rect.y ||