📄 gtkbox.c
字号:
GtkWidget *child){ g_return_if_fail (box != NULL); g_return_if_fail (GTK_IS_BOX (box)); g_return_if_fail (child != NULL); gtk_box_pack_start (box, child, TRUE, TRUE, 0);}voidgtk_box_pack_end_defaults (GtkBox *box, GtkWidget *child){ g_return_if_fail (box != NULL); g_return_if_fail (GTK_IS_BOX (box)); g_return_if_fail (child != NULL); gtk_box_pack_end (box, child, TRUE, TRUE, 0);}voidgtk_box_set_homogeneous (GtkBox *box, gboolean homogeneous){ g_return_if_fail (box != NULL); g_return_if_fail (GTK_IS_BOX (box)); if ((homogeneous ? TRUE : FALSE) != box->homogeneous) { box->homogeneous = homogeneous ? TRUE : FALSE; gtk_widget_queue_resize (GTK_WIDGET (box)); }}voidgtk_box_set_spacing (GtkBox *box, gint spacing){ g_return_if_fail (box != NULL); g_return_if_fail (GTK_IS_BOX (box)); if (spacing != box->spacing) { box->spacing = spacing; gtk_widget_queue_resize (GTK_WIDGET (box)); }}voidgtk_box_reorder_child (GtkBox *box, GtkWidget *child, gint position){ GList *list; g_return_if_fail (box != NULL); g_return_if_fail (GTK_IS_BOX (box)); g_return_if_fail (child != NULL); list = box->children; while (list) { GtkBoxChild *child_info; child_info = list->data; if (child_info->widget == child) break; list = list->next; } if (list && box->children->next) { GList *tmp_list; if (list->next) list->next->prev = list->prev; if (list->prev) list->prev->next = list->next; else box->children = list->next; tmp_list = box->children; while (position && tmp_list->next) { position--; tmp_list = tmp_list->next; } if (position) { tmp_list->next = list; list->prev = tmp_list; list->next = NULL; } else { if (tmp_list->prev) tmp_list->prev->next = list; else box->children = list; list->prev = tmp_list->prev; tmp_list->prev = list; list->next = tmp_list; } if (GTK_WIDGET_VISIBLE (child) && GTK_WIDGET_VISIBLE (box)) gtk_widget_queue_resize (child); }}voidgtk_box_query_child_packing (GtkBox *box, GtkWidget *child, gboolean *expand, gboolean *fill, guint *padding, GtkPackType *pack_type){ GList *list; GtkBoxChild *child_info = NULL; g_return_if_fail (box != NULL); g_return_if_fail (GTK_IS_BOX (box)); g_return_if_fail (child != NULL); list = box->children; while (list) { child_info = list->data; if (child_info->widget == child) break; list = list->next; } if (list) { if (expand) *expand = child_info->expand; if (fill) *fill = child_info->fill; if (padding) *padding = child_info->padding; if (pack_type) *pack_type = child_info->pack; }}voidgtk_box_set_child_packing (GtkBox *box, GtkWidget *child, gboolean expand, gboolean fill, guint padding, GtkPackType pack_type){ GList *list; GtkBoxChild *child_info = NULL; g_return_if_fail (box != NULL); g_return_if_fail (GTK_IS_BOX (box)); g_return_if_fail (child != NULL); list = box->children; while (list) { child_info = list->data; if (child_info->widget == child) break; list = list->next; } if (list) { child_info->expand = expand != FALSE; child_info->fill = fill != FALSE; child_info->padding = padding; if (pack_type == GTK_PACK_END) child_info->pack = GTK_PACK_END; else child_info->pack = GTK_PACK_START; if (GTK_WIDGET_VISIBLE (child) && GTK_WIDGET_VISIBLE (box)) gtk_widget_queue_resize (child); }}static voidgtk_box_map (GtkWidget *widget){ GtkBox *box; GtkBoxChild *child; GList *children; g_return_if_fail (widget != NULL); g_return_if_fail (GTK_IS_BOX (widget)); box = GTK_BOX (widget); GTK_WIDGET_SET_FLAGS (box, GTK_MAPPED); children = box->children; while (children) { child = children->data; children = children->next; if (GTK_WIDGET_VISIBLE (child->widget) && !GTK_WIDGET_MAPPED (child->widget)) gtk_widget_map (child->widget); }}static voidgtk_box_unmap (GtkWidget *widget){ GtkBox *box; GtkBoxChild *child; GList *children; g_return_if_fail (widget != NULL); g_return_if_fail (GTK_IS_BOX (widget)); box = GTK_BOX (widget); GTK_WIDGET_UNSET_FLAGS (box, GTK_MAPPED); children = box->children; while (children) { child = children->data; children = children->next; if (GTK_WIDGET_VISIBLE (child->widget) && GTK_WIDGET_MAPPED (child->widget)) gtk_widget_unmap (child->widget); }}static voidgtk_box_draw (GtkWidget *widget, GdkRectangle *area){ GtkBox *box; GtkBoxChild *child; GdkRectangle child_area; GList *children; g_return_if_fail (widget != NULL); g_return_if_fail (GTK_IS_BOX (widget)); if (GTK_WIDGET_DRAWABLE (widget)) { box = GTK_BOX (widget); children = box->children; while (children) { child = children->data; children = children->next; if (GTK_WIDGET_DRAWABLE (child->widget) && gtk_widget_intersect (child->widget, area, &child_area)) gtk_widget_draw (child->widget, &child_area); } }}static gintgtk_box_expose (GtkWidget *widget, GdkEventExpose *event){ GtkBox *box; GtkBoxChild *child; GdkEventExpose child_event; GList *children; g_return_val_if_fail (widget != NULL, FALSE); g_return_val_if_fail (GTK_IS_BOX (widget), FALSE); g_return_val_if_fail (event != NULL, FALSE); if (GTK_WIDGET_DRAWABLE (widget)) { box = GTK_BOX (widget); child_event = *event; children = box->children; while (children) { child = children->data; children = children->next; if (GTK_WIDGET_DRAWABLE (child->widget) && GTK_WIDGET_NO_WINDOW (child->widget) && gtk_widget_intersect (child->widget, &event->area, &child_event.area)) gtk_widget_event (child->widget, (GdkEvent*) &child_event); } } return FALSE;}static voidgtk_box_add (GtkContainer *container, GtkWidget *widget){ g_return_if_fail (container != NULL); g_return_if_fail (GTK_IS_BOX (container)); g_return_if_fail (widget != NULL); gtk_box_pack_start_defaults (GTK_BOX (container), widget);}static voidgtk_box_remove (GtkContainer *container, GtkWidget *widget){ GtkBox *box; GtkBoxChild *child; GList *children; g_return_if_fail (container != NULL); g_return_if_fail (GTK_IS_BOX (container)); g_return_if_fail (widget != NULL); box = GTK_BOX (container); children = box->children; while (children) { child = children->data; if (child->widget == widget) { gboolean was_visible; was_visible = GTK_WIDGET_VISIBLE (widget); gtk_widget_unparent (widget); box->children = g_list_remove_link (box->children, children); g_list_free (children); g_free (child); /* queue resize regardless of GTK_WIDGET_VISIBLE (container), * since that's what is needed by toplevels. */ if (was_visible) gtk_widget_queue_resize (GTK_WIDGET (container)); break; } children = children->next; }}static voidgtk_box_forall (GtkContainer *container, gboolean include_internals, GtkCallback callback, gpointer callback_data){ GtkBox *box; GtkBoxChild *child; GList *children; g_return_if_fail (container != NULL); g_return_if_fail (GTK_IS_BOX (container)); g_return_if_fail (callback != NULL); box = GTK_BOX (container); children = box->children; while (children) { child = children->data; children = children->next; if (child->pack == GTK_PACK_START) (* callback) (child->widget, callback_data); } children = g_list_last (box->children); while (children) { child = children->data; children = children->prev; if (child->pack == GTK_PACK_END) (* callback) (child->widget, callback_data); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -