static void gs_shell_category_create_filter_list (GsShellCategory *shell, GsCategory *category, GsCategory *subcategory) { GsShellCategoryPrivate *priv = shell->priv; GtkWidget *row; GList *l; GsCategory *s; _cleanup_list_free_ GList *list = NULL; gs_container_remove_all (GTK_CONTAINER (priv->category_detail_grid)); list = gs_category_get_subcategories (category); if (!list) return; gtk_grid_attach (GTK_GRID (priv->category_detail_grid), priv->col0_placeholder, 0, 0, 1, 1); gtk_grid_attach (GTK_GRID (priv->category_detail_grid), priv->col1_placeholder, 1, 0, 1, 1); gs_container_remove_all (GTK_CONTAINER (priv->listbox_filter)); for (l = list; l; l = l->next) { s = l->data; if (gs_category_get_size (s) < 1) continue; row = gtk_label_new (gs_category_get_name (s)); g_object_set_data_full (G_OBJECT (row), "category", g_object_ref (s), g_object_unref); g_object_set (row, "xalign", 0.0, "margin", 10, NULL); gtk_widget_show (row); gtk_list_box_insert (GTK_LIST_BOX (priv->listbox_filter), row, -1); if (subcategory == s) gtk_list_box_select_row (GTK_LIST_BOX (priv->listbox_filter), GTK_LIST_BOX_ROW (gtk_widget_get_parent (row))); } }
static void glade_gtk_listbox_child_insert_action (GladeWidgetAdaptor *adaptor, GObject *container, GObject *object, const gchar *group_format, gboolean after) { GladeWidget *parent; GladeWidget *gchild; gint position; parent = glade_widget_get_from_gobject (container); glade_command_push_group (group_format, glade_widget_get_name (parent)); position = gtk_list_box_row_get_index (GTK_LIST_BOX_ROW (object)); if (after) position++; gchild = glade_command_create (glade_widget_adaptor_get_by_type (GTK_TYPE_LIST_BOX_ROW), parent, NULL, glade_widget_get_project (parent)); glade_widget_pack_property_set (gchild, "position", position); glade_command_pop_group (); }
void glade_gtk_listbox_get_child_property (GladeWidgetAdaptor *adaptor, GObject *container, GObject *child, const gchar *property_name, GValue *value) { g_return_if_fail (GTK_IS_LIST_BOX (container)); g_return_if_fail (GTK_IS_LIST_BOX_ROW (child)); if (strcmp (property_name, "position") == 0) { gint position = gtk_list_box_row_get_index (GTK_LIST_BOX_ROW (child)); g_value_set_int (value, position); } else { /* Chain Up */ GWA_GET_CLASS (GTK_TYPE_CONTAINER)->child_get_property (adaptor, container, child, property_name, value); } }
static void gb_view_stack_move_top_list_row (GbViewStack *self, GbView *view) { GList *children; GList *iter; g_assert (GB_IS_VIEW_STACK (self)); g_assert (GB_IS_VIEW (view)); children = gtk_container_get_children (GTK_CONTAINER (self->views_listbox)); for (iter = children; iter; iter = iter->next) { GtkWidget *row = iter->data; GbView *item = g_object_get_data (G_OBJECT (row), "GB_VIEW"); if (item == view) { g_object_ref (row); gtk_container_remove (GTK_CONTAINER (self->views_listbox), row); gtk_list_box_prepend (self->views_listbox, row); gtk_list_box_select_row (self->views_listbox, GTK_LIST_BOX_ROW (row)); g_object_unref (row); break; } } g_list_free (children); }
static void individual_favourite_change_cb (FolksIndividual *individual, GParamSpec *spec, EmpathyRosterView *self) { /* We may have to refilter the contact as only favorite contacts are always * displayed regardless of their presence. */ GHashTable *contacts; GtkWidget *contact; contacts = g_hash_table_lookup (self->priv->roster_contacts, individual); if (contacts == NULL) return; if (self->priv->show_groups) contact = g_hash_table_lookup (contacts, EMPATHY_ROSTER_MODEL_GROUP_TOP_GROUP); else contact = g_hash_table_lookup (contacts, NO_GROUP); if (contact == NULL) return; gtk_list_box_row_changed (GTK_LIST_BOX_ROW (contact)); }
static void mnemonic_activate (GtkLabel *label, gboolean cycling, CcUaPanel *self) { GtkWidget *row; row = gtk_widget_get_parent (GTK_WIDGET (label)); activate_row (self, GTK_LIST_BOX_ROW (row)); }
static void dict_close_button_clicked_cb (IdeEditorSpellWidget *self, GtkButton *button) { GtkWidget *row; g_assert (IDE_IS_EDITOR_SPELL_WIDGET (self)); g_assert (GTK_IS_BUTTON (button)); if (NULL != (row = gtk_widget_get_ancestor (GTK_WIDGET (button), GTK_TYPE_LIST_BOX_ROW))) remove_dict_row (self, GTK_LIST_BOX (self->dict_words_list), GTK_LIST_BOX_ROW (row)); }
static GtkListBoxRow * locale_row_new (const gchar *text) { GtkWidget *row; GtkWidget *widget; row = gtk_list_box_row_new (); widget = padded_label_new (text, ROW_LABEL_POSITION_CENTER, ROW_TRAVEL_DIRECTION_NONE, FALSE); gtk_container_add (GTK_CONTAINER (row), widget); return GTK_LIST_BOX_ROW (row); }
static void on_row_action_combo_box_changed (GtkComboBox *combo, CcWacomButtonRow *row) { GsdWacomActionType type; GtkTreeModel *model; GtkListBox *list_box; GtkTreeIter iter; if (!gtk_combo_box_get_active_iter (combo, &iter)) return; /* Select the row where we changed the combo box (if not yet selected) */ list_box = GTK_LIST_BOX (gtk_widget_get_parent (GTK_WIDGET (row))); if (list_box && gtk_list_box_get_selected_row (list_box) != GTK_LIST_BOX_ROW (row)) gtk_list_box_select_row (list_box, GTK_LIST_BOX_ROW (row)); model = gtk_combo_box_get_model (combo); gtk_tree_model_get (model, &iter, ACTION_TYPE_COLUMN, &type, -1); change_button_action_type (row, type); }
void glade_gtk_listbox_add_child (GladeWidgetAdaptor *adaptor, GObject *object, GObject *child) { g_return_if_fail (GTK_IS_LIST_BOX (object)); g_return_if_fail (GTK_IS_LIST_BOX_ROW (child)); /* Insert to the end of the list */ glade_gtk_listbox_insert (GTK_LIST_BOX (object), GTK_LIST_BOX_ROW (child), -1); }
static SeahorseKeyserverResultsRow* seahorse_keyserver_results_row_new (GObject *item) { g_autoptr(SeahorseKeyserverResultsRow) row = NULL; g_autoptr(GtkWidget) grid = NULL; g_autoptr(GtkWidget) label = NULL; g_autoptr(GtkWidget) import_button = NULL; gchar *item_label; gboolean item_exportable; g_object_get (item, "markup", &item_label, "exportable", &item_exportable, NULL); row = g_object_new (SEAHORSE_TYPE_KEYSERVER_RESULTS_ROW, NULL); gtk_list_box_row_set_selectable (GTK_LIST_BOX_ROW (row), FALSE); gtk_widget_set_sensitive (GTK_WIDGET (row), item_exportable); gtk_widget_show (GTK_WIDGET (row)); row->key = item; grid = gtk_grid_new (); g_object_set (grid, "margin", 6, NULL); gtk_widget_show (grid); label = gtk_label_new (item_label); gtk_widget_set_hexpand (label, TRUE); gtk_label_set_xalign (GTK_LABEL (label), 0); gtk_label_set_use_markup (GTK_LABEL (label), TRUE); gtk_widget_show (label); gtk_grid_attach (GTK_GRID (grid), g_steal_pointer (&label), 0, 0, 1, 1); import_button = gtk_button_new_from_icon_name ("document-save-symbolic", GTK_ICON_SIZE_BUTTON); row->import_button = GTK_BUTTON (import_button); g_signal_connect_object (import_button, "clicked", G_CALLBACK (on_import_button_clicked), row, 0); gtk_widget_set_visible (import_button, TRUE); gtk_widget_set_valign (import_button, GTK_ALIGN_START); gtk_widget_set_halign (import_button, GTK_ALIGN_END); gtk_style_context_add_class (gtk_widget_get_style_context (import_button), "flat"); if (item_exportable) gtk_widget_set_tooltip_text (import_button, _("Import")); else gtk_widget_set_tooltip_text (import_button, _("Can’t import key")); gtk_grid_attach (GTK_GRID (grid), g_steal_pointer (&import_button), 1, 0, 1, 1); gtk_container_add (GTK_CONTAINER (row), g_steal_pointer (&grid)); return g_steal_pointer (&row); }
static GtkListBoxRow * more_widget_new (void) { GtkWidget *box, *row; GtkWidget *arrow; row = gtk_list_box_row_new (); box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 10); gtk_container_add (GTK_CONTAINER (row), box); gtk_widget_set_tooltip_text (box, _("More…")); arrow = gtk_image_new_from_icon_name ("view-more-symbolic", GTK_ICON_SIZE_MENU); gtk_style_context_add_class (gtk_widget_get_style_context (arrow), "dim-label"); gtk_widget_set_margin_top (box, 10); gtk_widget_set_margin_bottom (box, 10); gtk_box_pack_start (GTK_BOX (box), arrow, TRUE, TRUE, 0); return GTK_LIST_BOX_ROW (row); }
static gboolean dict_row_key_pressed_event_cb (IdeEditorSpellWidget *self, GdkEventKey *event, GtkListBox *listbox) { GtkListBoxRow *row; g_assert (IDE_IS_EDITOR_SPELL_WIDGET (self)); g_assert (event != NULL); g_assert (GTK_IS_LIST_BOX (listbox)); if (NULL != (row = gtk_list_box_get_selected_row (listbox)) && event->keyval == GDK_KEY_Delete) { remove_dict_row (self, GTK_LIST_BOX (self->dict_words_list), GTK_LIST_BOX_ROW (row)); return GDK_EVENT_STOP; } return GDK_EVENT_PROPAGATE; }
static void setup_listbox (GtkBuilder *builder, GtkStyleProvider *provider) { GtkWidget *normal_row; GtkWidget *listbox; gint i; normal_row = NULL; listbox = gtk_list_box_new (); gtk_container_add (GTK_CONTAINER (WID ("scrolledwindow")), listbox); g_signal_connect (listbox, "row-activated", G_CALLBACK (row_activated), provider); /* Add a row for each blend mode available */ for (i = 0; blend_modes[i].name != NULL; i++) { GtkWidget *label; GtkWidget *row; row = gtk_list_box_row_new (); label = g_object_new (GTK_TYPE_LABEL, "label", blend_modes[i].name, "xalign", 0.0, NULL); gtk_container_add (GTK_CONTAINER (row), label); gtk_container_add (GTK_CONTAINER (listbox), row); /* The first selected row is "normal" */ if (g_strcmp0 (blend_modes[i].id, "normal") == 0) normal_row = row; } /* Select the "normal" row */ gtk_list_box_select_row (GTK_LIST_BOX (listbox), GTK_LIST_BOX_ROW (normal_row)); g_signal_emit_by_name (G_OBJECT (normal_row), "activate"); gtk_widget_grab_focus (normal_row); }
static void update_group_widgets (EmpathyRosterView *self, EmpathyRosterGroup *group, EmpathyRosterContact *contact, gboolean add) { guint old_count, count; old_count = empathy_roster_group_get_widgets_count (group); if (add) count = empathy_roster_group_add_widget (group, GTK_WIDGET (contact)); else count = empathy_roster_group_remove_widget (group, GTK_WIDGET (contact)); if (count != old_count) { gtk_list_box_row_changed (GTK_LIST_BOX_ROW (group)); check_if_empty (self); } }
static void select_first_contact (EmpathyRosterView *self) { GList *children, *l; children = gtk_container_get_children (GTK_CONTAINER (self)); for (l = children; l != NULL; l = g_list_next (l)) { GtkWidget *child = l->data; if (!gtk_widget_get_child_visible (child)) continue; if (!EMPATHY_IS_ROSTER_CONTACT (child)) continue; gtk_list_box_select_row (GTK_LIST_BOX (self), GTK_LIST_BOX_ROW (child)); break; } g_list_free (children); }
static AtkStateSet* gtk_list_box_row_accessible_ref_state_set (AtkObject *obj) { AtkStateSet *state_set; GtkWidget *widget, *parent; state_set = ATK_OBJECT_CLASS (gtk_list_box_row_accessible_parent_class)->ref_state_set (obj); widget = gtk_accessible_get_widget (GTK_ACCESSIBLE (obj)); if (widget != NULL) { parent = gtk_widget_get_parent (widget); if (parent != NULL && gtk_list_box_get_selection_mode (GTK_LIST_BOX (parent)) != GTK_SELECTION_NONE) atk_state_set_add_state (state_set, ATK_STATE_SELECTABLE); if (gtk_list_box_row_is_selected (GTK_LIST_BOX_ROW (widget))) atk_state_set_add_state (state_set, ATK_STATE_SELECTED); } return state_set; }
GtkListBoxRow* cast_GtkListBoxRow(GtkWidget* widget) { return GTK_LIST_BOX_ROW(widget); }
static void populate_colors (GtkWidget *widget) { struct { const gchar *name; const gchar *color; const gchar *title; } colors[] = { { "2.5", "#C8828C", "Red" }, { "5", "#C98286", NULL }, { "7.5", "#C9827F", NULL }, { "10", "#C98376", NULL }, { "2.5", "#C8856D", "Red/Yellow" }, { "5", "#C58764", NULL }, { "7.5", "#C1895E", NULL }, { "10", "#BB8C56", NULL }, { "2.5", "#B58F4F", "Yellow" }, { "5", "#AD924B", NULL }, { "7.5", "#A79548", NULL }, { "10", "#A09749", NULL }, { "2.5", "#979A4E", "Yellow/Green" }, { "5", "#8D9C55", NULL }, { "7.5", "#7F9F62", NULL }, { "10", "#73A06E", NULL }, { "2.5", "#65A27C", "Green" }, { "5", "#5CA386", NULL }, { "7.5", "#57A38D", NULL }, { "10", "#52A394", NULL }, { "2.5", "#4EA39A", "Green/Blue" }, { "5", "#49A3A2", NULL }, { "7.5", "#46A2AA", NULL }, { "10", "#46A1B1", NULL }, { "2.5", "#49A0B8", "Blue" }, { "5", "#529EBD", NULL }, { "7.5", "#5D9CC1", NULL }, { "10", "#689AC3", NULL }, { "2.5", "#7597C5", "Blue/Purple" }, { "5", "#8095C6", NULL }, { "7.5", "#8D91C6", NULL }, { "10", "#988EC4", NULL }, { "2.5", "#A08CC1", "Purple" }, { "5", "#A88ABD", NULL }, { "7.5", "#B187B6", NULL }, { "10", "#B786B0", NULL }, { "2.5", "#BC84A9", "Purple/Red" }, { "5", "#C183A0", NULL }, { "7.5", "#C48299", NULL }, { "10", "#C68292", NULL } }; gint i; GtkWidget *row, *box, *label, *swatch; GtkWidget *sw; GdkRGBA rgba; gtk_list_box_set_header_func (GTK_LIST_BOX (widget), update_title_header, NULL, NULL); for (i = 0; i < G_N_ELEMENTS (colors); i++) { row = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 20); label = gtk_label_new (colors[i].name); g_object_set (label, "halign", GTK_ALIGN_START, "valign", GTK_ALIGN_CENTER, "margin", 6, "xalign", 0.0, NULL); gtk_box_pack_start (GTK_BOX (row), label, TRUE, TRUE, 0); gdk_rgba_parse (&rgba, colors[i].color); swatch = g_object_new (g_type_from_name ("GtkColorSwatch"), "rgba", &rgba, "selectable", FALSE, "halign", GTK_ALIGN_END, "valign", GTK_ALIGN_CENTER, "margin", 6, "height-request", 24, NULL); box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0); gtk_container_add (GTK_CONTAINER (box), swatch); gtk_box_pack_start (GTK_BOX (row), box, FALSE, FALSE, 0); gtk_widget_show_all (row); gtk_list_box_insert (GTK_LIST_BOX (widget), row, -1); row = gtk_widget_get_parent (row); gtk_list_box_row_set_activatable (GTK_LIST_BOX_ROW (row), FALSE); if (colors[i].title) g_object_set_data (G_OBJECT (row), "title", (gpointer)colors[i].title); } gtk_list_box_invalidate_headers (GTK_LIST_BOX (widget)); sw = gtk_widget_get_ancestor (widget, GTK_TYPE_SCROLLED_WINDOW); g_signal_connect (sw, "edge-overshot", G_CALLBACK (overshot), widget); }
static void overshot (GtkScrolledWindow *sw, GtkPositionType pos, GtkWidget *widget) { GtkWidget *box, *row, *label, *swatch; GdkRGBA rgba; const gchar *color; gchar *text; GtkWidget *silver; GtkWidget *gold; silver = GTK_WIDGET (g_object_get_data (G_OBJECT (widget), "Silver")); gold = GTK_WIDGET (g_object_get_data (G_OBJECT (widget), "Gold")); if (pos == GTK_POS_TOP) { if (silver) { gtk_container_remove (GTK_CONTAINER (widget), silver); g_object_set_data (G_OBJECT (widget), "Silver", NULL); } if (gold) { gtk_container_remove (GTK_CONTAINER (widget), gold); g_object_set_data (G_OBJECT (widget), "Gold", NULL); } #ifdef HAVE_LIBCANBERRA if (silver || gold) ca_gtk_play_for_widget (widget, 0, "event.id", "message", NULL); #endif return; } if (gold) return; else if (silver) color = "Gold"; else color = "Silver"; row = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 20); text = g_strconcat ("<b>", color, "</b>", NULL); label = gtk_label_new (text); g_free (text); g_object_set (label, "use-markup", TRUE, "halign", GTK_ALIGN_START, "valign", GTK_ALIGN_CENTER, "margin", 6, "xalign", 0.0, NULL); gtk_box_pack_start (GTK_BOX (row), label, TRUE, TRUE, 0); gdk_rgba_parse (&rgba, color); swatch = g_object_new (g_type_from_name ("GtkColorSwatch"), "rgba", &rgba, "selectable", FALSE, "halign", GTK_ALIGN_END, "valign", GTK_ALIGN_CENTER, "margin", 6, "height-request", 24, NULL); box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0); gtk_container_add (GTK_CONTAINER (box), swatch); gtk_box_pack_start (GTK_BOX (row), box, FALSE, FALSE, 0); gtk_widget_show_all (row); gtk_list_box_insert (GTK_LIST_BOX (widget), row, -1); row = gtk_widget_get_parent (row); gtk_list_box_row_set_activatable (GTK_LIST_BOX_ROW (row), FALSE); g_object_set_data (G_OBJECT (widget), color, row); #ifdef HAVE_LIBCANBERRA ca_gtk_play_for_widget (widget, 0, "event.id", "complete", NULL); #endif }
static GtkListBoxRow * input_source_row_new (GtkWidget *chooser, const gchar *type, const gchar *id) { CcInputChooserPrivate *priv = GET_PRIVATE (chooser); GtkWidget *row = NULL; GtkWidget *widget; if (g_str_equal (type, INPUT_SOURCE_TYPE_XKB)) { const gchar *display_name; gnome_xkb_info_get_layout_info (priv->xkb_info, id, &display_name, NULL, NULL, NULL); row = gtk_list_box_row_new (); widget = padded_label_new (display_name, ROW_LABEL_POSITION_START, ROW_TRAVEL_DIRECTION_NONE, FALSE); gtk_container_add (GTK_CONTAINER (row), widget); g_object_set_data (G_OBJECT (row), "name", (gpointer) display_name); g_object_set_data_full (G_OBJECT (row), "unaccented-name", cc_util_normalize_casefold_and_unaccent (display_name), g_free); } else if (g_str_equal (type, INPUT_SOURCE_TYPE_IBUS)) { #ifdef HAVE_IBUS gchar *display_name; GtkWidget *image; display_name = engine_get_display_name (g_hash_table_lookup (priv->ibus_engines, id)); row = gtk_list_box_row_new (); widget = padded_label_new (display_name, ROW_LABEL_POSITION_START, ROW_TRAVEL_DIRECTION_NONE, FALSE); gtk_container_add (GTK_CONTAINER (row), widget); image = gtk_image_new_from_icon_name ("system-run-symbolic", GTK_ICON_SIZE_MENU); set_row_widget_margins (image); gtk_style_context_add_class (gtk_widget_get_style_context (image), "dim-label"); gtk_box_pack_start (GTK_BOX (widget), image, FALSE, TRUE, 0); g_object_set_data_full (G_OBJECT (row), "name", display_name, g_free); g_object_set_data_full (G_OBJECT (row), "unaccented-name", cc_util_normalize_casefold_and_unaccent (display_name), g_free); #else widget = NULL; #endif /* HAVE_IBUS */ } if (row) { g_object_set_data (G_OBJECT (row), "type", (gpointer) type); g_object_set_data (G_OBJECT (row), "id", (gpointer) id); return GTK_LIST_BOX_ROW (row); } return NULL; }
/* The multi-press gesture used by the flowbox to select a child * forbid us to use dnd so we need to catch it here and select yourself * the child */ static void gstyle_color_widget_multipress_gesture_pressed (GtkGestureMultiPress *gesture, guint n_press, gdouble x, gdouble y, GstyleColorWidget *self) { GtkWidget *container; GtkWidget *child; GtkWidget *popover; GtkBuilder *builder; GtkWidget *button_rename; GtkWidget *button_remove; GtkWidget *ancestor; gint button; button = gtk_gesture_single_get_current_button (GTK_GESTURE_SINGLE (gesture)); gtk_gesture_set_state (GTK_GESTURE (gesture), GTK_EVENT_SEQUENCE_CLAIMED); child = gtk_widget_get_parent (GTK_WIDGET (self)); if (child != NULL && button == GDK_BUTTON_PRIMARY) { if (GTK_IS_LIST_BOX_ROW (child)) { container = gtk_widget_get_parent (GTK_WIDGET (child)); if (container != NULL && GTK_IS_LIST_BOX (container)) { gtk_list_box_select_row (GTK_LIST_BOX (container), GTK_LIST_BOX_ROW (child)); gtk_widget_grab_focus (GTK_WIDGET (self)); if (n_press == 2) g_signal_emit_by_name (container, "row-activated", child); } } else if (GTK_IS_FLOW_BOX_CHILD (child)) { container = gtk_widget_get_parent (GTK_WIDGET (child)); if (container != NULL && GTK_IS_FLOW_BOX (container)) { gtk_flow_box_select_child (GTK_FLOW_BOX (container), GTK_FLOW_BOX_CHILD (child)); gtk_widget_grab_focus (GTK_WIDGET (self)); if (n_press == 2) g_signal_emit_by_name (container, "child-activated", child); } } } if (button == GDK_BUTTON_SECONDARY) { ancestor = gtk_widget_get_ancestor (GTK_WIDGET (self), GSTYLE_TYPE_PALETTE_WIDGET); if (ancestor != NULL) { builder = gtk_builder_new_from_resource ("/org/gnome/libgstyle/ui/gstyle-color-widget.ui"); popover = GTK_WIDGET (gtk_builder_get_object (builder, "popover")); button_rename = GTK_WIDGET (gtk_builder_get_object (builder, "button_rename")); g_signal_connect_object (button_rename, "button-release-event", G_CALLBACK (popover_button_rename_clicked_cb), self, G_CONNECT_SWAPPED); button_remove = GTK_WIDGET (gtk_builder_get_object (builder, "button_remove")); g_signal_connect_object (button_remove, "button-release-event", G_CALLBACK (popover_button_remove_clicked_cb), self, G_CONNECT_SWAPPED); gtk_popover_set_relative_to (GTK_POPOVER (popover), GTK_WIDGET (self)); g_signal_connect_swapped (popover, "closed", G_CALLBACK (contextual_popover_closed_cb), self); gtk_widget_show (popover); g_object_unref (builder); } } }