From 4ced018164553d115a24947ec74dace836e99732 Mon Sep 17 00:00:00 2001 From: Marc Jeanmougin Date: Sat, 30 Sep 2017 02:25:47 +0200 Subject: Hunted every GList to the last (except in libnrtype and libcroco) --- src/widgets/desktop-widget.cpp | 41 ++++++------ src/widgets/ege-adjustment-action.cpp | 114 +++++++++++++++++----------------- src/widgets/ege-output-action.cpp | 23 ++++--- src/widgets/ege-select-one-action.cpp | 29 ++++----- src/widgets/pencil-toolbar.cpp | 34 ++++------ src/widgets/spw-utilities.cpp | 12 ++-- src/widgets/toolbox.cpp | 27 ++++---- 7 files changed, 133 insertions(+), 147 deletions(-) (limited to 'src/widgets') diff --git a/src/widgets/desktop-widget.cpp b/src/widgets/desktop-widget.cpp index 1d0b31a6e..571f920bf 100644 --- a/src/widgets/desktop-widget.cpp +++ b/src/widgets/desktop-widget.cpp @@ -1077,8 +1077,8 @@ SPDesktopWidget::shutdown() doc->getName()); // fix for bug lp:168809 GtkWidget *ma = gtk_message_dialog_get_message_area(GTK_MESSAGE_DIALOG(dialog)); - GList *ma_labels = gtk_container_get_children(GTK_CONTAINER(ma)); - GtkWidget *label = GTK_WIDGET(g_list_first(ma_labels)->data); + std::vector ma_labels = Glib::wrap(GTK_CONTAINER(ma))->get_children(); + GtkWidget *label = GTK_WIDGET(ma_labels[0]->gobj()); gtk_widget_set_can_focus(label, FALSE); GtkWidget *close_button; @@ -1136,8 +1136,8 @@ SPDesktopWidget::shutdown() doc->getName() ? doc->getName() : "Unnamed"); // fix for bug lp:168809 GtkWidget *ma = gtk_message_dialog_get_message_area(GTK_MESSAGE_DIALOG(dialog)); - GList *ma_labels = gtk_container_get_children(GTK_CONTAINER(ma)); - GtkWidget *label = GTK_WIDGET(g_list_first(ma_labels)->data); + std::vector ma_labels = Glib::wrap(GTK_CONTAINER(ma))->get_children(); + GtkWidget *label = GTK_WIDGET(ma_labels[0]->gobj()); gtk_widget_set_can_focus(label, FALSE); GtkWidget *close_button; @@ -1734,22 +1734,22 @@ void SPDesktopWidget::namedviewModified(SPObject *obj, guint flags) * This should solve: https://bugs.launchpad.net/inkscape/+bug/362995 */ if (GTK_IS_CONTAINER(aux_toolbox)) { - GList *ch = gtk_container_get_children (GTK_CONTAINER(aux_toolbox)); - for (GList *i = ch; i != NULL; i = i->next) { - if (GTK_IS_CONTAINER(i->data)) { - GList *grch = gtk_container_get_children (GTK_CONTAINER(i->data)); - for (GList *j = grch; j != NULL; j = j->next) { + std::vector ch = Glib::wrap(GTK_CONTAINER(aux_toolbox))->get_children(); + for (auto i:ch) { + if (GTK_IS_CONTAINER(i->gobj())) { + std::vector grch = dynamic_cast(i)->get_children(); + for (auto j:grch) { - if (!GTK_IS_WIDGET(j->data)) // wasn't a widget + if (!GTK_IS_WIDGET(j->gobj())) // wasn't a widget continue; // Don't apply to text toolbar. We want to be able to // use different units for text. (Bug 1562217) - const gchar* name = gtk_widget_get_name( (GTK_WIDGET(j->data)) ); - if (strcmp( name, "TextToolbar") == 0) + const Glib::ustring name = j->get_name(); + if ( name == "TextToolbar") continue; - gpointer t = sp_search_by_data_recursive(GTK_WIDGET(j->data), (gpointer) "tracker"); + gpointer t = sp_search_by_data_recursive(GTK_WIDGET(j->gobj()), (gpointer) "tracker"); if (t == NULL) // didn't find any tracker data continue; @@ -1941,12 +1941,10 @@ static void sp_dtw_zoom_populate_popup (GtkEntry */*entry*/, GtkMenu *menu, gpointer data) { SPDesktop *dt = SP_DESKTOP_WIDGET (data)->desktop; - - GList* children = gtk_container_get_children (GTK_CONTAINER (menu)); - for ( auto iter = children ; iter ; iter = g_list_next (iter)) { - gtk_container_remove (GTK_CONTAINER (menu), GTK_WIDGET (iter->data)); + std::vector children = Glib::wrap(GTK_CONTAINER(menu))->get_children(); + for ( auto iter : children) { + Glib::wrap(GTK_CONTAINER(menu))->remove(*iter); } - g_list_free (children); GtkWidget *item; @@ -2129,11 +2127,10 @@ sp_dtw_rotation_populate_popup (GtkEntry */*entry*/, GtkMenu *menu, gpointer dat { SPDesktopWidget *dtw = static_cast(data); - GList* children = gtk_container_get_children (GTK_CONTAINER (menu)); - for ( auto iter = children ; iter ; iter = g_list_next (iter)) { - gtk_container_remove (GTK_CONTAINER (menu), GTK_WIDGET (iter->data)); + std::vector children = Glib::wrap(GTK_CONTAINER(menu))->get_children(); + for ( auto iter : children) { + Glib::wrap(GTK_CONTAINER(menu))->remove(*iter); } - g_list_free (children); GtkWidget *item; diff --git a/src/widgets/ege-adjustment-action.cpp b/src/widgets/ege-adjustment-action.cpp index e4f041bd1..09a4a542b 100644 --- a/src/widgets/ege-adjustment-action.cpp +++ b/src/widgets/ege-adjustment-action.cpp @@ -41,7 +41,10 @@ #include #include +#include +#include +#include #include #include "icon-size.h" @@ -111,7 +114,7 @@ struct _EgeAdjustmentActionPrivate gdouble page; gint appearanceMode; gboolean transferFocus; - GList* descriptions; + std::vector descriptions; gchar* appearance; gchar* iconId; GtkIconSize iconSize; @@ -268,7 +271,7 @@ static void ege_adjustment_action_init( EgeAdjustmentAction* action ) action->private_data->page = 0.0; action->private_data->appearanceMode = APPEARANCE_NONE; action->private_data->transferFocus = FALSE; - action->private_data->descriptions = 0; + //action->private_data->descriptions = 0; action->private_data->appearance = 0; action->private_data->iconId = 0; action->private_data->iconSize = GTK_ICON_SIZE_SMALL_TOOLBAR; @@ -514,11 +517,13 @@ static void egeAct_free_description( gpointer data, gpointer user_data ) { static void egeAct_free_all_descriptions( EgeAdjustmentAction* action ) { - if ( action->private_data->descriptions ) { - g_list_foreach( action->private_data->descriptions, egeAct_free_description, 0 ); - g_list_free( action->private_data->descriptions ); - action->private_data->descriptions = 0; + for(auto i:action->private_data->descriptions) { + egeAct_free_description(i,0); } + for(auto i:action->private_data->descriptions) { + g_free(i); + } + action->private_data->descriptions.clear(); } static gint egeAct_compare_descriptions( gconstpointer a, gconstpointer b ) @@ -551,7 +556,8 @@ void ege_adjustment_action_set_descriptions( EgeAdjustmentAction* action, gchar EgeAdjustmentDescr* descr = g_new0( EgeAdjustmentDescr, 1 ); descr->descr = descriptions[i] ? g_strdup( descriptions[i] ) : 0; descr->value = values[i]; - action->private_data->descriptions = g_list_insert_sorted( action->private_data->descriptions, (gpointer)descr, egeAct_compare_descriptions ); + action->private_data->descriptions.push_back(descr); + std::sort(action->private_data->descriptions.begin(),action->private_data->descriptions.end()); } } } @@ -609,8 +615,8 @@ static void process_menu_action( GtkWidget* obj, gpointer data ) default: if ( what >= BUMP_CUSTOM ) { guint index = what - BUMP_CUSTOM; - if ( index < g_list_length( act->private_data->descriptions ) ) { - EgeAdjustmentDescr* descr = (EgeAdjustmentDescr*)g_list_nth_data( act->private_data->descriptions, index ); + if ( index < act->private_data->descriptions.size() ) { + EgeAdjustmentDescr* descr = act->private_data->descriptions[index]; if ( descr ) { gtk_adjustment_set_value( act->private_data->adj, descr->value ); } @@ -624,10 +630,9 @@ static void create_single_menu_item( GCallback toggleCb, int val, GtkWidget* men { char* str = 0; EgeAdjustmentDescr* marker = 0; - GList* cur = act->private_data->descriptions; + std::vector cur = act->private_data->descriptions; - while ( cur ) { - EgeAdjustmentDescr* descr = (EgeAdjustmentDescr*)cur->data; + for (auto descr:cur) { gdouble delta = num - descr->value; if ( delta < 0.0 ) { delta = -delta; @@ -636,7 +641,6 @@ static void create_single_menu_item( GCallback toggleCb, int val, GtkWidget* men marker = descr; break; } - cur = g_list_next( cur ); } str = g_strdup_printf( act->private_data->format, num, @@ -658,7 +662,8 @@ static void create_single_menu_item( GCallback toggleCb, int val, GtkWidget* men g_free(str); } -static GList* flush_explicit_items( GList* descriptions, +static int flush_explicit_items( std::vector descriptions, + int pos, GCallback toggleCb, int val, GtkWidget* menu, @@ -667,25 +672,21 @@ static GList* flush_explicit_items( GList* descriptions, GSList** group, gdouble num ) { - GList* cur = descriptions; - - if ( cur ) { - gdouble valUpper = num + act->private_data->epsilon; - gdouble valLower = num - act->private_data->epsilon; + if(pos >= descriptions.size() || pos < 0) return pos; + EgeAdjustmentDescr* descr = descriptions[pos]; - EgeAdjustmentDescr* descr = (EgeAdjustmentDescr*)cur->data; - - while ( cur && descr && (descr->value >= valLower) ) { - if ( descr->value > valUpper ) { - create_single_menu_item( toggleCb, val + g_list_position(act->private_data->descriptions, cur), menu, act, dst, group, descr->value, FALSE ); - } + gdouble valUpper = num + act->private_data->epsilon; + gdouble valLower = num - act->private_data->epsilon; - cur = g_list_previous( cur ); - descr = cur ? (EgeAdjustmentDescr*)cur->data : 0; + while ( pos>=0 && posvalue >= valLower) ) { + if ( descr->value > valUpper ) { + create_single_menu_item( toggleCb, val + ( std::find(act->private_data->descriptions.begin(),act->private_data->descriptions.end(),descr) - act->private_data->descriptions.begin() ) , menu, act, dst, group, descr->value, FALSE ); } + pos--; + descr = (pos<0) ? descriptions[pos] : NULL; } - return cur; + return pos; } static GtkWidget* create_popup_number_menu( EgeAdjustmentAction* act ) @@ -694,8 +695,8 @@ static GtkWidget* create_popup_number_menu( EgeAdjustmentAction* act ) GSList* group = 0; GtkWidget* single = 0; - - GList* addOns = g_list_last( act->private_data->descriptions ); + std::vector list = act->private_data->descriptions; + int addOns = list.size() - 1; gdouble base = gtk_adjustment_get_value( act->private_data->adj ); gdouble lower = 0.0; @@ -711,37 +712,37 @@ static GtkWidget* create_popup_number_menu( EgeAdjustmentAction* act ) if ( base < upper ) { - addOns = flush_explicit_items( addOns, G_CALLBACK(process_menu_action), BUMP_CUSTOM, menu, act, &single, &group, upper ); + addOns = flush_explicit_items( list, addOns, G_CALLBACK(process_menu_action), BUMP_CUSTOM, menu, act, &single, &group, upper ); create_single_menu_item( G_CALLBACK(process_menu_action), BUMP_TOP, menu, act, &single, &group, upper, FALSE ); if ( (base + page) < upper ) { - addOns = flush_explicit_items( addOns, G_CALLBACK(process_menu_action), BUMP_CUSTOM, menu, act, &single, &group, base + page ); + addOns = flush_explicit_items( list, addOns, G_CALLBACK(process_menu_action), BUMP_CUSTOM, menu, act, &single, &group, base + page ); create_single_menu_item( G_CALLBACK(process_menu_action), BUMP_PAGE_UP, menu, act, &single, &group, base + page, FALSE ); } if ( (base + step) < upper ) { - addOns = flush_explicit_items( addOns, G_CALLBACK(process_menu_action), BUMP_CUSTOM, menu, act, &single, &group, base + step ); + addOns = flush_explicit_items( list, addOns, G_CALLBACK(process_menu_action), BUMP_CUSTOM, menu, act, &single, &group, base + step ); create_single_menu_item( G_CALLBACK(process_menu_action), BUMP_UP, menu, act, &single, &group, base + step, FALSE ); } } - addOns = flush_explicit_items( addOns, G_CALLBACK(process_menu_action), BUMP_CUSTOM, menu, act, &single, &group, base ); + addOns = flush_explicit_items( list, addOns, G_CALLBACK(process_menu_action), BUMP_CUSTOM, menu, act, &single, &group, base ); create_single_menu_item( G_CALLBACK(process_menu_action), BUMP_NONE, menu, act, &single, &group, base, TRUE ); if ( base > lower ) { if ( (base - step) > lower ) { - addOns = flush_explicit_items( addOns, G_CALLBACK(process_menu_action), BUMP_CUSTOM, menu, act, &single, &group, base - step ); + addOns = flush_explicit_items( list, addOns, G_CALLBACK(process_menu_action), BUMP_CUSTOM, menu, act, &single, &group, base - step ); create_single_menu_item( G_CALLBACK(process_menu_action), BUMP_DOWN, menu, act, &single, &group, base - step, FALSE ); } if ( (base - page) > lower ) { - addOns = flush_explicit_items( addOns, G_CALLBACK(process_menu_action), BUMP_CUSTOM, menu, act, &single, &group, base - page ); + addOns = flush_explicit_items( list, addOns, G_CALLBACK(process_menu_action), BUMP_CUSTOM, menu, act, &single, &group, base - page ); create_single_menu_item( G_CALLBACK(process_menu_action), BUMP_PAGE_DOWN, menu, act, &single, &group, base - page, FALSE ); } - addOns = flush_explicit_items( addOns, G_CALLBACK(process_menu_action), BUMP_CUSTOM, menu, act, &single, &group, lower ); + addOns = flush_explicit_items( list, addOns, G_CALLBACK(process_menu_action), BUMP_CUSTOM, menu, act, &single, &group, lower ); create_single_menu_item( G_CALLBACK(process_menu_action), BUMP_BOTTOM, menu, act, &single, &group, lower, FALSE ); } - if ( act->private_data->descriptions ) { - gdouble value = ((EgeAdjustmentDescr*)act->private_data->descriptions->data)->value; - flush_explicit_items( addOns, G_CALLBACK(process_menu_action), BUMP_CUSTOM, menu, act, &single, &group, value ); + if ( !act->private_data->descriptions.empty() ) { + gdouble value = ((EgeAdjustmentDescr*)act->private_data->descriptions[0])->value; + flush_explicit_items( list, addOns, G_CALLBACK(process_menu_action), BUMP_CUSTOM, menu, act, &single, &group, value ); } return menu; @@ -965,36 +966,37 @@ static gboolean process_tab( GtkWidget* widget, int direction ) GtkWidget* ggp = gp ? gtk_widget_get_parent(gp) : 0; if ( ggp && GTK_IS_TOOLBAR(ggp) ) { - GList* kids = gtk_container_get_children( GTK_CONTAINER(ggp) ); - if ( kids ) { + std::vector kids = Glib::wrap(GTK_CONTAINER(ggp))->get_children(); + if ( !kids.empty() ) { GtkWidget* curr = widget; while ( curr && (gtk_widget_get_parent(curr) != ggp) ) { curr = gtk_widget_get_parent( curr ); } if ( curr ) { - GList* mid = g_list_find( kids, curr ); - while ( mid ) { - mid = ( direction < 0 ) ? g_list_previous(mid) : g_list_next(mid); - if ( mid && GTK_IS_TOOL_ITEM(mid->data) ) { + std::vector::iterator mid=kids.end(); + for(auto i = kids.begin(); i!= kids.end(); ++i){ + if(curr == (*i)->gobj()) + mid = i; + } + while ( mid != kids.end() && !(mid==kids.begin() && direction<0 ) ) { + mid = ( direction < 0 ) ? std::prev(mid) : ++mid; + if ( mid!=kids.end() && GTK_IS_TOOL_ITEM((*mid)->gobj()) ) { /* potential target */ - GtkWidget* child = gtk_bin_get_child( GTK_BIN(mid->data) ); + GtkWidget* child = gtk_bin_get_child( GTK_BIN((*mid)->gobj()) ); if ( child && GTK_IS_BOX(child) ) { /* could be ours */ - GList* subChildren = gtk_container_get_children( GTK_CONTAINER(child) ); - if ( subChildren ) { - GList* last = g_list_last(subChildren); - if ( last && GTK_IS_SPIN_BUTTON(last->data) && gtk_widget_is_sensitive( GTK_WIDGET(last->data) ) ) { - gtk_widget_grab_focus( GTK_WIDGET(last->data) ); + std::vector subChildren = Glib::wrap(GTK_CONTAINER(child))->get_children(); + if ( ! subChildren.empty() ) { + Gtk::Widget *last = subChildren[subChildren.size()-1]; + if ( GTK_IS_SPIN_BUTTON(last->gobj()) && gtk_widget_is_sensitive( GTK_WIDGET(last->gobj()) ) ) { + gtk_widget_grab_focus( GTK_WIDGET(last->gobj()) ); handled = TRUE; - mid = 0; /* to stop loop */ + mid = kids.end(); /* to stop loop */ } - - g_list_free(subChildren); } } } } } - g_list_free( kids ); } } diff --git a/src/widgets/ege-output-action.cpp b/src/widgets/ege-output-action.cpp index da29524a5..e7d74a25f 100644 --- a/src/widgets/ege-output-action.cpp +++ b/src/widgets/ege-output-action.cpp @@ -42,6 +42,8 @@ #include #include +#include +#include #include "widgets/ege-output-action.h" @@ -211,22 +213,23 @@ void fixup_labels( GObject *gobject, GParamSpec *arg1, gpointer user_data ) GSList* proxies = gtk_action_get_proxies( GTK_ACTION(gobject) ); gchar* str = 0; g_object_get( gobject, "label", &str, NULL ); + Glib::ustring str2(str); (void)user_data; while ( proxies ) { if ( GTK_IS_TOOL_ITEM(proxies->data) ) { /* Search for the things we built up in create_tool_item() */ - GList* children = gtk_container_get_children( GTK_CONTAINER(proxies->data) ); - if ( children && children->data ) { - if ( GTK_IS_BOX(children->data) ) { - children = gtk_container_get_children( GTK_CONTAINER(children->data) ); - if ( children && g_list_next(children) ) { - GtkWidget* child = GTK_WIDGET( g_list_next(children)->data ); - if ( GTK_IS_LABEL(child) ) { - GtkLabel* lbl = GTK_LABEL(child); + std::vector children = Glib::wrap(GTK_CONTAINER(proxies->data))->get_children(); + if ( !children.empty() ) { + if ( GTK_IS_BOX(children[0]->gobj()) ) { + children = dynamic_cast(children[0])->get_children(); + if ( children.size()>1 ) { + Gtk::Widget *child = children[1]; + if ( GTK_IS_LABEL(child->gobj()) ) { + Gtk::Label* lbl = dynamic_cast(child); if ( EGE_OUTPUT_ACTION(gobject)->private_data->useMarkup ) { - gtk_label_set_markup( lbl, str ); + lbl->set_markup(str2); } else { - gtk_label_set_text( lbl, str ); + lbl->set_text(str2); } } } diff --git a/src/widgets/ege-select-one-action.cpp b/src/widgets/ege-select-one-action.cpp index 5555663e4..f51e48a8c 100644 --- a/src/widgets/ege-select-one-action.cpp +++ b/src/widgets/ege-select-one-action.cpp @@ -40,6 +40,8 @@ /* Note: this file should be kept compilable as both .cpp and .c */ #include +#include +#include #include @@ -843,9 +845,9 @@ void resync_active( EgeSelectOneAction* act, gint active, gboolean override ) while ( proxies ) { if ( GTK_IS_TOOL_ITEM(proxies->data) ) { /* Search for the things we built up in create_tool_item() */ - GList* children = gtk_container_get_children( GTK_CONTAINER(proxies->data) ); - if ( children && children->data ) { - gpointer combodata = g_object_get_data( G_OBJECT(children->data), "ege-combo-box" ); + std::vector children = Glib::wrap(GTK_CONTAINER(proxies->data))->get_children(); + if ( !children.empty() ) { + gpointer combodata = g_object_get_data( G_OBJECT(children[0]->gobj()), "ege-combo-box" ); if ( GTK_IS_COMBO_BOX(combodata) ) { GtkComboBox* combo = GTK_COMBO_BOX(combodata); @@ -854,8 +856,8 @@ void resync_active( EgeSelectOneAction* act, gint active, gboolean override ) } else if ( gtk_combo_box_get_active(combo) != active ) { gtk_combo_box_set_active( combo, active ); } - } else if ( GTK_IS_BOX(children->data) ) { - gpointer data = g_object_get_data( G_OBJECT(children->data), "ege-proxy_action-group" ); + } else if ( GTK_IS_BOX(children[0]->gobj()) ) { + gpointer data = g_object_get_data( G_OBJECT(children[0]->gobj()), "ege-proxy_action-group" ); if ( data ) { GSList* group = (GSList*)data; GtkRadioAction* oneAction = GTK_RADIO_ACTION(group->data); @@ -880,10 +882,9 @@ void resync_active( EgeSelectOneAction* act, gint active, gboolean override ) } } else if ( GTK_IS_MENU_ITEM(proxies->data) ) { GtkWidget* subMenu = gtk_menu_item_get_submenu( GTK_MENU_ITEM(proxies->data) ); - GList* children = gtk_container_get_children( GTK_CONTAINER(subMenu) ); - if ( children && (g_list_length(children) > (guint)active) ) { - gpointer data = g_list_nth_data( children, active ); - gtk_check_menu_item_set_active( GTK_CHECK_MENU_ITEM(data), TRUE ); + std::vector children = Glib::wrap(GTK_CONTAINER(subMenu))->get_children(); + if ( children.size() > (guint)active ) { + dynamic_cast(children[active])->set_active(true); } } @@ -900,14 +901,14 @@ void resync_sensitive( EgeSelectOneAction* act ) while ( proxies ) { if ( GTK_IS_TOOL_ITEM(proxies->data) ) { /* Search for the things we built up in create_tool_item() */ - GList* children = gtk_container_get_children( GTK_CONTAINER(proxies->data) ); - if ( children && children->data ) { - gpointer combodata = g_object_get_data( G_OBJECT(children->data), "ege-combo-box" ); + std::vector children = Glib::wrap(GTK_CONTAINER(proxies->data))->get_children(); + if ( !children.empty() ) { + gpointer combodata = g_object_get_data( G_OBJECT(children[0]->gobj()), "ege-combo-box" ); if ( GTK_IS_COMBO_BOX(combodata) ) { /* Not implemented */ - } else if ( GTK_IS_BOX(children->data) ) { - gpointer data = g_object_get_data( G_OBJECT(children->data), "ege-proxy_action-group" ); + } else if ( GTK_IS_BOX(children[0]->gobj()) ) { + gpointer data = g_object_get_data( G_OBJECT(children[0]->gobj()), "ege-proxy_action-group" ); if ( data ) { GSList* group = (GSList*)data; // List is backwards in group as compared to GtkTreeModel, we better do matching. diff --git a/src/widgets/pencil-toolbar.cpp b/src/widgets/pencil-toolbar.cpp index d1b6a43bb..ac186f224 100644 --- a/src/widgets/pencil-toolbar.cpp +++ b/src/widgets/pencil-toolbar.cpp @@ -197,41 +197,29 @@ static void freehand_simplify_lpe(InkToggleAction* itact, GObject *dataKludge) { } } -/** - * Generate the list of freehand advanced shape option entries. - */ -static GList * freehand_shape_dropdown_items_list() { - GList *glist = NULL; - - glist = g_list_append (glist, const_cast(C_("Freehand shape", "None"))); - glist = g_list_append (glist, _("Triangle in")); - glist = g_list_append (glist, _("Triangle out")); - glist = g_list_append (glist, _("Ellipse")); - glist = g_list_append (glist, _("From clipboard")); - glist = g_list_append (glist, _("Bend from clipboard")); - glist = g_list_append (glist, _("Last applied")); - - return glist; -} - static void freehand_add_advanced_shape_options(GtkActionGroup* mainActions, GObject* holder, bool tool_is_pencil) { /*advanced shape options */ { Inkscape::Preferences *prefs = Inkscape::Preferences::get(); GtkListStore* model = gtk_list_store_new( 2, G_TYPE_STRING, G_TYPE_INT ); - - GList* items = 0; gint count = 0; - for ( items = freehand_shape_dropdown_items_list(); items ; items = g_list_next(items) ) + std::vector freehand_shape_dropdown_items_list = { + const_cast(C_("Freehand shape", "None")), + _("Triangle in"), + _("Triangle out"), + _("Ellipse"), + _("From clipboard"), + _("Bend from clipboard"), + _("Last applied") }; + + for (auto item:freehand_shape_dropdown_items_list) { GtkTreeIter iter; gtk_list_store_append( model, &iter ); - gtk_list_store_set( model, &iter, 0, reinterpret_cast(items->data), 1, count, -1 ); + gtk_list_store_set( model, &iter, 0, item, 1, count, -1 ); count++; } - g_list_free( items ); - items = 0; EgeSelectOneAction* act1 = ege_select_one_action_new( tool_is_pencil ? "SetPencilShapeAction" : "SetPenShapeAction", _("Shape:"), (_("Shape of new paths drawn by this tool")), NULL, GTK_TREE_MODEL(model)); diff --git a/src/widgets/spw-utilities.cpp b/src/widgets/spw-utilities.cpp index 68fb78327..29e86b885 100644 --- a/src/widgets/spw-utilities.cpp +++ b/src/widgets/spw-utilities.cpp @@ -249,9 +249,9 @@ gpointer sp_search_by_data_recursive(GtkWidget *w, gpointer key) if (r) return r; if (GTK_IS_CONTAINER(w)) { - GList *ch = gtk_container_get_children (GTK_CONTAINER(w)); - for (GList *i = ch; i != NULL; i = i->next) { - r = sp_search_by_data_recursive(GTK_WIDGET(i->data), key); + std::vector children = Glib::wrap(GTK_CONTAINER(w))->get_children(); + for (auto i:children) { + r = sp_search_by_data_recursive(GTK_WIDGET(i->gobj()), key); if (r) return r; } } @@ -272,9 +272,9 @@ GtkWidget *sp_search_by_value_recursive(GtkWidget *w, gchar *key, gchar *value) if (r && !strcmp (r, value)) return w; if (GTK_IS_CONTAINER(w)) { - GList *ch = gtk_container_get_children (GTK_CONTAINER(w)); - for (GList *i = ch; i != NULL; i = i->next) { - GtkWidget *child = sp_search_by_value_recursive(GTK_WIDGET(i->data), key, value); + std::vector children = Glib::wrap(GTK_CONTAINER(w))->get_children(); + for (auto i:children) { + GtkWidget *child = sp_search_by_value_recursive(GTK_WIDGET(i->gobj()), key, value); if (child) return child; } } diff --git a/src/widgets/toolbox.cpp b/src/widgets/toolbox.cpp index 68e38e8ed..447af9c71 100644 --- a/src/widgets/toolbox.cpp +++ b/src/widgets/toolbox.cpp @@ -795,13 +795,10 @@ void ToolboxFactory::setToolboxDesktop(GtkWidget *toolbox, SPDesktop *desktop) SPDesktop *old_desktop = static_cast(ptr); if (old_desktop) { - GList *children, *iter; - - children = gtk_container_get_children(GTK_CONTAINER(toolbox)); - for ( iter = children ; iter ; iter = iter->next ) { - gtk_container_remove( GTK_CONTAINER(toolbox), GTK_WIDGET(iter->data) ); + std::vector children = Glib::wrap(GTK_CONTAINER(toolbox))->get_children(); + for ( auto i:children ) { + gtk_container_remove( GTK_CONTAINER(toolbox), i->gobj() ); } - g_list_free(children); } g_object_set_data(G_OBJECT(toolbox), "desktop", (gpointer)desktop); @@ -894,20 +891,20 @@ void ToolboxFactory::setOrientation(GtkWidget* toolbox, GtkOrientation orientati g_message(" is a BOX"); #endif // DUMP_DETAILS - GList* children = gtk_container_get_children(GTK_CONTAINER(child)); - if (children) { - for (GList* curr = children; curr; curr = g_list_next(curr)) { - GtkWidget* child2 = GTK_WIDGET(curr->data); + std::vector children = Glib::wrap(GTK_CONTAINER(child))->get_children(); + if (!children.empty()) { + for (auto curr:children) { + GtkWidget* child2 = curr->gobj(); #if DUMP_DETAILS GType type3 = G_OBJECT_TYPE(child2); g_message(" child2 [%s]", g_type_name(type3)); #endif // DUMP_DETAILS if (GTK_IS_CONTAINER(child2)) { - GList* children2 = gtk_container_get_children(GTK_CONTAINER(child2)); - if (children2) { - for (GList* curr2 = children2; curr2; curr2 = g_list_next(curr2)) { - GtkWidget* child3 = GTK_WIDGET(curr2->data); + std::vector children2 = Glib::wrap(GTK_CONTAINER(child2))->get_children(); + if (!children2.empty()) { + for (auto curr2:children2) { + GtkWidget* child3 = curr2->gobj(); #if DUMP_DETAILS GType type4 = G_OBJECT_TYPE(child3); g_message(" child3 [%s]", g_type_name(type4)); @@ -917,7 +914,6 @@ void ToolboxFactory::setOrientation(GtkWidget* toolbox, GtkOrientation orientati gtk_orientable_set_orientation(GTK_ORIENTABLE(childBar), orientation); } } - g_list_free(children2); } } @@ -929,7 +925,6 @@ void ToolboxFactory::setOrientation(GtkWidget* toolbox, GtkOrientation orientati g_message("need to add dynamic switch"); } } - g_list_free(children); } else { // The call is being made before the toolbox proper has been setup. g_object_set_data(G_OBJECT(toolbox), HANDLE_POS_MARK, GINT_TO_POINTER(pos)); -- cgit v1.2.3 From e0957537cd0938313803c290a2f3922a3889e6f1 Mon Sep 17 00:00:00 2001 From: Marc Jeanmougin Date: Sun, 1 Oct 2017 17:49:26 +0200 Subject: Removed all GSList occurences in .h files --- src/widgets/stroke-marker-selector.cpp | 43 +++++++++++----------------------- src/widgets/stroke-marker-selector.h | 7 +++--- 2 files changed, 18 insertions(+), 32 deletions(-) (limited to 'src/widgets') diff --git a/src/widgets/stroke-marker-selector.cpp b/src/widgets/stroke-marker-selector.cpp index 96994741c..9ddcf993d 100644 --- a/src/widgets/stroke-marker-selector.cpp +++ b/src/widgets/stroke-marker-selector.cpp @@ -111,22 +111,20 @@ MarkerComboBox::refreshHistory() updating = true; - GSList *ml = get_marker_list(doc); + std::vector ml = get_marker_list(doc); /* * Seems to be no way to get notified of changes just to markers, * so listen to changes in all defs and check if the number of markers has changed here * to avoid unnecessary refreshes when things like gradients change */ - if (markerCount != g_slist_length(ml)) { + if (markerCount != ml.size()) { const char *active = get_active()->get_value(marker_columns.marker); sp_marker_list_from_doc(doc, true); set_selected(active); - markerCount = g_slist_length(ml); + markerCount = ml.size(); } - g_slist_free (ml); - updating = false; } @@ -295,45 +293,32 @@ void MarkerComboBox::set_selected(const gchar *name, gboolean retry/*=true*/) { */ void MarkerComboBox::sp_marker_list_from_doc(SPDocument *source, gboolean history) { - GSList *ml = get_marker_list(source); - GSList *clean_ml = NULL; - - for (; ml != NULL; ml = ml->next) { - if (!SP_IS_MARKER(ml->data)) - continue; - - // Add to the list of markers we really do wish to show - clean_ml = g_slist_prepend (clean_ml, ml->data); - } + std::vector ml = get_marker_list(source); remove_markers(history); // Seem to need to remove 2x remove_markers(history); - add_markers(clean_ml, source, history); - - g_slist_free (ml); - g_slist_free (clean_ml); - + add_markers(ml, source, history); } /** - * Returns a list of markers in the defs of the given source document as a GSList object + * Returns a list of markers in the defs of the given source document as a vector * Returns NULL if there are no markers in the document. */ -GSList *MarkerComboBox::get_marker_list (SPDocument *source) +std::vector MarkerComboBox::get_marker_list (SPDocument *source) { + std::vector ml; if (source == NULL) - return NULL; + return ml; - GSList *ml = NULL; SPDefs *defs = source->getDefs(); if (!defs) { - return NULL; + return ml; } for (auto& child: defs->children) { if (SP_IS_MARKER(&child)) { - ml = g_slist_prepend (ml, &child); + ml.push_back(SP_MARKER(&child)); } } return ml; @@ -361,7 +346,7 @@ void MarkerComboBox::remove_markers (gboolean history) /** * Adds markers in marker_list to the combo */ -void MarkerComboBox::add_markers (GSList *marker_list, SPDocument *source, gboolean history) +void MarkerComboBox::add_markers (std::vector const& marker_list, SPDocument *source, gboolean history) { // Do this here, outside of loop, to speed up preview generation: Inkscape::Drawing drawing; @@ -388,9 +373,9 @@ void MarkerComboBox::add_markers (GSList *marker_list, SPDocument *source, gbool row[marker_columns.separator] = false; } - for (; marker_list != NULL; marker_list = marker_list->next) { + for (auto i:marker_list) { - Inkscape::XML::Node *repr = reinterpret_cast(marker_list->data)->getRepr(); + Inkscape::XML::Node *repr = i->getRepr(); gchar const *markid = repr->attribute("inkscape:stockid") ? repr->attribute("inkscape:stockid") : repr->attribute("id"); // generate preview diff --git a/src/widgets/stroke-marker-selector.h b/src/widgets/stroke-marker-selector.h index a7ee788b8..24389526c 100644 --- a/src/widgets/stroke-marker-selector.h +++ b/src/widgets/stroke-marker-selector.h @@ -9,7 +9,7 @@ * * Released under GNU GPL, read the file 'COPYING' for more information */ - +#include #include #include #include @@ -20,6 +20,7 @@ #include "document.h" #include "inkscape.h" #include "display/drawing.h" +#include "sp-marker.h" namespace Gtk { class Container; @@ -80,8 +81,8 @@ private: void init_combo(); void set_history(Gtk::TreeModel::Row match_row); void sp_marker_list_from_doc(SPDocument *source, gboolean history); - GSList *get_marker_list (SPDocument *source); - void add_markers (GSList *marker_list, SPDocument *source, gboolean history); + std::vector get_marker_list (SPDocument *source); + void add_markers (std::vector const& marker_list, SPDocument *source, gboolean history); void remove_markers (gboolean history); SPDocument *ink_markers_preview_doc (); Gtk::Image * create_marker_image(unsigned psize, gchar const *mname, -- cgit v1.2.3 From c20891fabc8c3ee2251e0545878e06545b6f0cdd Mon Sep 17 00:00:00 2001 From: Marc Jeanmougin Date: Sun, 1 Oct 2017 23:57:52 +0200 Subject: First batch --- src/widgets/ege-adjustment-action.cpp | 13 +++--- src/widgets/gradient-vector.cpp | 61 ++++++++++------------------- src/widgets/paint-selector.cpp | 74 +++++++++++------------------------ 3 files changed, 48 insertions(+), 100 deletions(-) (limited to 'src/widgets') diff --git a/src/widgets/ege-adjustment-action.cpp b/src/widgets/ege-adjustment-action.cpp index 09a4a542b..fc72f00c7 100644 --- a/src/widgets/ege-adjustment-action.cpp +++ b/src/widgets/ege-adjustment-action.cpp @@ -45,6 +45,7 @@ #include #include +#include #include #include "icon-size.h" @@ -626,7 +627,7 @@ static void process_menu_action( GtkWidget* obj, gpointer data ) } } -static void create_single_menu_item( GCallback toggleCb, int val, GtkWidget* menu, EgeAdjustmentAction* act, GtkWidget** dst, GSList** group, gdouble num, gboolean active ) +static void create_single_menu_item( GCallback toggleCb, int val, GtkWidget* menu, EgeAdjustmentAction* act, GtkWidget** dst, Gtk::RadioMenuItem::Group *group, gdouble num, gboolean active ) { char* str = 0; EgeAdjustmentDescr* marker = 0; @@ -647,10 +648,8 @@ static void create_single_menu_item( GCallback toggleCb, int val, GtkWidget* men ((marker && marker->descr) ? ": " : ""), ((marker && marker->descr) ? marker->descr : "")); - *dst = gtk_radio_menu_item_new_with_label( *group, str ); - if ( !*group) { - *group = gtk_radio_menu_item_get_group( GTK_RADIO_MENU_ITEM(*dst) ); - } + auto rmi = new Gtk::RadioMenuItem(*group,Glib::ustring(str)); + *dst = GTK_WIDGET(rmi->gobj()); if ( active ) { gtk_check_menu_item_set_active( GTK_CHECK_MENU_ITEM(*dst), TRUE ); } @@ -669,7 +668,7 @@ static int flush_explicit_items( std::vector descriptions, GtkWidget* menu, EgeAdjustmentAction* act, GtkWidget** dst, - GSList** group, + Gtk::RadioMenuItem::Group *group, gdouble num ) { if(pos >= descriptions.size() || pos < 0) return pos; @@ -693,7 +692,7 @@ static GtkWidget* create_popup_number_menu( EgeAdjustmentAction* act ) { GtkWidget* menu = gtk_menu_new(); - GSList* group = 0; + Gtk::RadioMenuItem::Group group; GtkWidget* single = 0; std::vector list = act->private_data->descriptions; int addOns = list.size() - 1; diff --git a/src/widgets/gradient-vector.cpp b/src/widgets/gradient-vector.cpp index 0c5f3cf47..fdba2b56d 100644 --- a/src/widgets/gradient-vector.cpp +++ b/src/widgets/gradient-vector.cpp @@ -268,17 +268,16 @@ static void sp_gvs_rebuild_gui_full(SPGradientVectorSelector *gvs) gvs->store->clear(); /* Pick up all gradients with vectors */ - GSList *gl = NULL; + std::vector gl; if (gvs->gr) { std::vector gradients = gvs->gr->document->getResourceList("gradient"); for (std::vector::const_iterator it = gradients.begin(); it != gradients.end(); ++it) { SPGradient* grad = SP_GRADIENT(*it); if ( grad->hasStops() && (grad->isSwatch() == gvs->swatched) ) { - gl = g_slist_prepend(gl, *it); + gl.push_back(SP_GRADIENT(*it)); } } } - gl = g_slist_reverse(gl); /* Get usage count of all the gradients */ std::map usageCount; @@ -288,7 +287,7 @@ static void sp_gvs_rebuild_gui_full(SPGradientVectorSelector *gvs) Gtk::TreeModel::Row row = *(gvs->store->append()); row[gvs->columns->name] = _("No document selected"); - } else if (!gl) { + } else if (gl.empty()) { Gtk::TreeModel::Row row = *(gvs->store->append()); row[gvs->columns->name] = _("No gradients in document"); @@ -297,11 +296,7 @@ static void sp_gvs_rebuild_gui_full(SPGradientVectorSelector *gvs) row[gvs->columns->name] = _("No gradient selected"); } else { - while (gl) { - SPGradient *gr; - gr = SP_GRADIENT(gl->data); - gl = g_slist_remove(gl, gr); - + for (auto gr:gl) { unsigned long hhssll = sp_gradient_to_hhssll(gr); GdkPixbuf *pixb = sp_gradient_to_pixbuf (gr, 64, 18); Glib::ustring label = gr_prepare_label(gr); @@ -312,7 +307,6 @@ static void sp_gvs_rebuild_gui_full(SPGradientVectorSelector *gvs) row[gvs->columns->refcount] = usageCount[gr]; row[gvs->columns->data] = gr; row[gvs->columns->pixbuf] = Glib::wrap(pixb); - } } @@ -333,19 +327,14 @@ unsigned long sp_gradient_to_hhssll(SPGradient *gr) return ((int)(hsl[0]*100 * 10000)) + ((int)(hsl[1]*100 * 100)) + ((int)(hsl[2]*100 * 1)); } -static GSList *get_all_doc_items(GSList *list, SPObject *from, bool onlyvisible, bool onlysensitive, bool ingroups, GSList const *exclude) +static void get_all_doc_items(std::vector &list, SPObject *from) { for (auto& child: from->children) { if (SP_IS_ITEM(&child)) { - list = g_slist_prepend(list, SP_ITEM(&child)); - } - - if (ingroups || SP_IS_ITEM(&child)) { - list = get_all_doc_items(list, &child, onlyvisible, onlysensitive, ingroups, exclude); + list.push_back(SP_ITEM(&child)); } + get_all_doc_items(list, &child); } - - return list; } /* @@ -377,15 +366,10 @@ void gr_get_usage_counts(SPDocument *doc, std::map *mapUsage if (!doc) return; - Inkscape::Preferences *prefs = Inkscape::Preferences::get(); - bool onlyvisible = prefs->getBool("/options/kbselection/onlyvisible", true); - bool onlysensitive = prefs->getBool("/options/kbselection/onlysensitive", true); - bool ingroups = TRUE; - - GSList *all_list = get_all_doc_items(NULL, doc->getRoot(), onlyvisible, onlysensitive, ingroups, NULL); + std::vector all_list; + get_all_doc_items(all_list, doc->getRoot()); - for (GSList *i = all_list; i != NULL; i = i->next) { - SPItem *item = SP_ITEM(i->data); + for (auto item:all_list) { if (!item->getId()) continue; SPGradient *gr = NULL; @@ -565,34 +549,29 @@ static void update_stop_list( GtkWidget *vb, SPGradient *gradient, SPStop *new_s GtkTreeIter iter; /* Populate the combobox store */ - GSList *sl = NULL; + std::vector sl; if ( gradient->hasStops() ) { for (auto& ochild: gradient->children) { if (SP_IS_STOP(&ochild)) { - sl = g_slist_append(sl, &ochild); + sl.push_back(SP_STOP(&ochild)); } } } - if (!sl) { + if (sl.empty()) { gtk_list_store_append (store, &iter); gtk_list_store_set (store, &iter, 0, NULL, 1, _("No stops in gradient"), 2, NULL, -1); gtk_widget_set_sensitive (combo_box, FALSE); } else { - for (; sl != NULL; sl = sl->next){ - if (SP_IS_STOP(sl->data)){ - SPStop *stop = SP_STOP(sl->data); - Inkscape::XML::Node *repr = reinterpret_cast(sl->data)->getRepr(); - Inkscape::UI::Widget::ColorPreview *cpv = Gtk::manage(new Inkscape::UI::Widget::ColorPreview(stop->get_rgba32())); - GdkPixbuf *pb = cpv->toPixbuf(64, 16); - - gtk_list_store_append (store, &iter); - gtk_list_store_set (store, &iter, 0, pb, 1, repr->attribute("id"), 2, stop, -1); - gtk_widget_set_sensitive (combo_box, FALSE); - } + for (auto stop:sl) { + Inkscape::XML::Node *repr = stop->getRepr(); + Inkscape::UI::Widget::ColorPreview *cpv = Gtk::manage(new Inkscape::UI::Widget::ColorPreview(stop->get_rgba32())); + GdkPixbuf *pb = cpv->toPixbuf(64, 16); + gtk_list_store_append (store, &iter); + gtk_list_store_set (store, &iter, 0, pb, 1, repr->attribute("id"), 2, stop, -1); + gtk_widget_set_sensitive (combo_box, FALSE); } - gtk_widget_set_sensitive(combo_box, TRUE); } diff --git a/src/widgets/paint-selector.cpp b/src/widgets/paint-selector.cpp index 27fe4b63a..4457b712d 100644 --- a/src/widgets/paint-selector.cpp +++ b/src/widgets/paint-selector.cpp @@ -23,6 +23,7 @@ #include #include +#include #include "widgets/swatch-selector.h" #include "sp-pattern.h" @@ -789,25 +790,23 @@ static void sp_psel_mesh_change(GtkWidget * /*widget*/, SPPaintSelector *psel) /** - * Returns a list of meshes in the defs of the given source document as a GSList object - * Returns NULL if there are no meshes in the document. + * Returns a list of meshes in the defs of the given source document as a vector */ -static GSList * +static std::vector ink_mesh_list_get (SPDocument *source) { + std::vector pl; if (source == NULL) - return NULL; + return pl; + - GSList *pl = NULL; std::vector meshes = source->getResourceList("gradient"); for (std::vector::const_iterator it = meshes.begin(); it != meshes.end(); ++it) { if (SP_IS_MESHGRADIENT(*it) && SP_GRADIENT(*it) == SP_GRADIENT(*it)->getArray()) { // only if this is a root mesh - pl = g_slist_prepend(pl, *it); + pl.push_back(SP_MESHGRADIENT(*it)); } } - - pl = g_slist_reverse(pl); return pl; } @@ -815,14 +814,14 @@ ink_mesh_list_get (SPDocument *source) * Adds menu items for mesh list. */ static void -sp_mesh_menu_build (GtkWidget *combo, GSList *mesh_list, SPDocument */*source*/) +sp_mesh_menu_build (GtkWidget *combo, std::vector &mesh_list, SPDocument */*source*/) { GtkListStore *store = GTK_LIST_STORE(gtk_combo_box_get_model(GTK_COMBO_BOX(combo))); GtkTreeIter iter; - for (; mesh_list != NULL; mesh_list = mesh_list->next) { + for (auto i:mesh_list) { - Inkscape::XML::Node *repr = reinterpret_cast(mesh_list->data)->getRepr(); + Inkscape::XML::Node *repr = i->getRepr(); gchar const *meshid = repr->attribute("id"); gchar const *label = meshid; @@ -847,21 +846,8 @@ sp_mesh_menu_build (GtkWidget *combo, GSList *mesh_list, SPDocument */*source*/) */ static void sp_mesh_list_from_doc(GtkWidget *combo, SPDocument * /*current_doc*/, SPDocument *source, SPDocument * /*mesh_doc*/) { - GSList *pl = ink_mesh_list_get(source); - GSList *clean_pl = NULL; - - for (; pl != NULL; pl = pl->next) { - if (!SP_IS_MESHGRADIENT(pl->data)) { - continue; - } - // Add to the list of meshes we really do wish to show - clean_pl = g_slist_prepend (clean_pl, pl->data); - } - - sp_mesh_menu_build (combo, clean_pl, source); - - g_slist_free (pl); - g_slist_free (clean_pl); + std::vector pl = ink_mesh_list_get(source); + sp_mesh_menu_build (combo, pl, source); } @@ -1138,24 +1124,22 @@ static void sp_psel_pattern_change(GtkWidget * /*widget*/, SPPaintSelector *psel /** - * Returns a list of patterns in the defs of the given source document as a GSList object - * Returns NULL if there are no patterns in the document. + * Returns a list of patterns in the defs of the given source document as a vector */ -static GSList * +static std::vector ink_pattern_list_get (SPDocument *source) { + std::vector pl; if (source == NULL) - return NULL; + return pl; - GSList *pl = NULL; std::vector patterns = source->getResourceList("pattern"); for (std::vector::const_iterator it = patterns.begin(); it != patterns.end(); ++it) { if (SP_PATTERN(*it) == SP_PATTERN(*it)->rootPattern()) { // only if this is a root pattern - pl = g_slist_prepend(pl, *it); + pl.push_back(SP_PATTERN(*it)); } } - pl = g_slist_reverse(pl); return pl; } @@ -1163,14 +1147,14 @@ ink_pattern_list_get (SPDocument *source) * Adds menu items for pattern list - derived from marker code, left hb etc in to make addition of previews easier at some point. */ static void -sp_pattern_menu_build (GtkWidget *combo, GSList *pattern_list, SPDocument */*source*/) +sp_pattern_menu_build (GtkWidget *combo, std::vector &pl, SPDocument */*source*/) { GtkListStore *store = GTK_LIST_STORE(gtk_combo_box_get_model(GTK_COMBO_BOX(combo))); GtkTreeIter iter; - for (; pattern_list != NULL; pattern_list = pattern_list->next) { + for (auto i=pl.rbegin(); i!=pl.rend(); ++i) { - Inkscape::XML::Node *repr = reinterpret_cast(pattern_list->data)->getRepr(); + Inkscape::XML::Node *repr = (*i)->getRepr(); // label for combobox gchar const *label; @@ -1200,22 +1184,8 @@ sp_pattern_menu_build (GtkWidget *combo, GSList *pattern_list, SPDocument */*sou */ static void sp_pattern_list_from_doc(GtkWidget *combo, SPDocument * /*current_doc*/, SPDocument *source, SPDocument * /*pattern_doc*/) { - GSList *pl = ink_pattern_list_get(source); - GSList *clean_pl = NULL; - - for (; pl != NULL; pl = pl->next) { - if (!SP_IS_PATTERN(pl->data)) { - continue; - } - - // Add to the list of patterns we really do wish to show - clean_pl = g_slist_prepend (clean_pl, pl->data); - } - - sp_pattern_menu_build (combo, clean_pl, source); - - g_slist_free (pl); - g_slist_free (clean_pl); + std::vector pl = ink_pattern_list_get(source); + sp_pattern_menu_build (combo, pl, source); } -- cgit v1.2.3 From 53fe02a3864476ac87a7ca3b6dca27407dbc5a2d Mon Sep 17 00:00:00 2001 From: Marc Jeanmougin Date: Tue, 3 Oct 2017 02:12:53 +0200 Subject: removed GList in ruler.cpp --- src/widgets/gimp/ruler.cpp | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) (limited to 'src/widgets') diff --git a/src/widgets/gimp/ruler.cpp b/src/widgets/gimp/ruler.cpp index 6a1f7f903..8d73ada3b 100644 --- a/src/widgets/gimp/ruler.cpp +++ b/src/widgets/gimp/ruler.cpp @@ -32,6 +32,7 @@ #include #include #include +#include #include "ruler.h" #include @@ -61,8 +62,9 @@ enum { /* All distances below are in 1/72nd's of an inch. (According to * Adobe, that's a point, but points are really 1/72.27 in.) */ -typedef struct +class SPRulerPrivate { +public: GtkOrientation orientation; Inkscape::Util::Unit const *unit; gdouble lower; @@ -78,8 +80,8 @@ typedef struct PangoLayout *layout; gdouble font_scale; - GList *track_widgets; -} SPRulerPrivate; + std::set *track_widgets; +}; #define SP_RULER_GET_PRIVATE(ruler) \ G_TYPE_INSTANCE_GET_PRIVATE (ruler, SP_TYPE_RULER, SPRulerPrivate) @@ -178,6 +180,7 @@ sp_ruler_class_init (SPRulerClass *klass) g_type_class_add_private (object_class, sizeof (SPRulerPrivate)); + g_object_class_install_property (object_class, PROP_ORIENTATION, g_param_spec_enum ("orientation", @@ -269,6 +272,7 @@ sp_ruler_init (SPRuler *ruler) priv->pos_redraw_idle_id = 0; priv->font_scale = DEFAULT_RULER_FONT_SCALE; + priv->track_widgets = new std::set; } static void @@ -277,14 +281,15 @@ sp_ruler_dispose (GObject *object) SPRuler *ruler = SP_RULER (object); SPRulerPrivate *priv = SP_RULER_GET_PRIVATE (ruler); - while (priv->track_widgets) - sp_ruler_remove_track_widget (ruler, GTK_WIDGET(priv->track_widgets->data)); + for (auto i:*(priv->track_widgets)) + sp_ruler_remove_track_widget (ruler, i); if (priv->pos_redraw_idle_id) { g_source_remove (priv->pos_redraw_idle_id); priv->pos_redraw_idle_id = 0; } + delete priv->track_widgets; G_OBJECT_CLASS (parent_class)->dispose (object); } @@ -889,9 +894,10 @@ sp_ruler_add_track_widget (SPRuler *ruler, priv = SP_RULER_GET_PRIVATE (ruler); - g_return_if_fail (g_list_find (priv->track_widgets, widget) == NULL); + g_return_if_fail (priv->track_widgets->find(widget)==priv->track_widgets->end()); + - priv->track_widgets = g_list_prepend (priv->track_widgets, widget); + priv->track_widgets->insert(widget); g_signal_connect (widget, "motion-notify-event", G_CALLBACK (sp_ruler_track_widget_motion_notify), @@ -920,9 +926,9 @@ sp_ruler_remove_track_widget (SPRuler *ruler, priv = SP_RULER_GET_PRIVATE (ruler); - g_return_if_fail (g_list_find (priv->track_widgets, widget) != NULL); + g_return_if_fail (priv->track_widgets->find(widget)!=priv->track_widgets->end()); - priv->track_widgets = g_list_remove (priv->track_widgets, widget); + priv->track_widgets->erase(widget); g_signal_handlers_disconnect_by_func (widget, (gpointer) G_CALLBACK (sp_ruler_track_widget_motion_notify), -- cgit v1.2.3 From 525c6c0c7ea39c6bdb0013c546d08b6e94e51e61 Mon Sep 17 00:00:00 2001 From: Andrey Mozzhuhin Date: Fri, 6 Oct 2017 00:46:14 +0300 Subject: Rename get_group0_keyval to get_latin_keyval --- src/widgets/spinbutton-events.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/widgets') diff --git a/src/widgets/spinbutton-events.cpp b/src/widgets/spinbutton-events.cpp index fdf88ec85..9666fc636 100644 --- a/src/widgets/spinbutton-events.cpp +++ b/src/widgets/spinbutton-events.cpp @@ -66,7 +66,7 @@ gboolean spinbutton_keypress(GtkWidget *w, GdkEventKey *event, gpointer /*data*/ { gboolean result = FALSE; // I didn't consume the event - switch (Inkscape::UI::Tools::get_group0_keyval(event)) { + switch (Inkscape::UI::Tools::get_latin_keyval(event)) { case GDK_KEY_Escape: // defocus spinbutton_undo(w); spinbutton_defocus(w); -- cgit v1.2.3 From 347e5f3b12400d94812eefc275e1197ed224470b Mon Sep 17 00:00:00 2001 From: Stefano Facchini Date: Tue, 17 Oct 2017 22:22:10 +0200 Subject: Remove unused icon-size.h --- src/widgets/button.h | 1 - src/widgets/ege-adjustment-action.cpp | 1 - src/widgets/ink-action.h | 1 - src/widgets/ink-toggle-action.cpp | 4 ++-- src/widgets/ink-toggle-action.h | 1 - src/widgets/toolbox.h | 1 - 6 files changed, 2 insertions(+), 7 deletions(-) (limited to 'src/widgets') diff --git a/src/widgets/button.h b/src/widgets/button.h index 94a956de3..680ccb79d 100644 --- a/src/widgets/button.h +++ b/src/widgets/button.h @@ -18,7 +18,6 @@ #include #include -#include "icon-size.h" struct SPAction; diff --git a/src/widgets/ege-adjustment-action.cpp b/src/widgets/ege-adjustment-action.cpp index fc72f00c7..597c697cb 100644 --- a/src/widgets/ege-adjustment-action.cpp +++ b/src/widgets/ege-adjustment-action.cpp @@ -48,7 +48,6 @@ #include #include -#include "icon-size.h" #include "widgets/ege-adjustment-action.h" #include "gimp/gimpspinscale.h" #include "ui/icon-names.h" diff --git a/src/widgets/ink-action.h b/src/widgets/ink-action.h index 99786c878..396e4838b 100644 --- a/src/widgets/ink-action.h +++ b/src/widgets/ink-action.h @@ -2,7 +2,6 @@ #define SEEN_INK_ACTION #include -#include "icon-size.h" #include "attributes.h" /* Equivalent to GTK Actions of the same type, but can support Inkscape SVG icons */ diff --git a/src/widgets/ink-toggle-action.cpp b/src/widgets/ink-toggle-action.cpp index c091a2e0d..200d0d558 100644 --- a/src/widgets/ink-toggle-action.cpp +++ b/src/widgets/ink-toggle-action.cpp @@ -51,9 +51,9 @@ static void ink_toggle_action_class_init( InkToggleActionClass* klass ) g_param_spec_int( "iconSize", "Icon Size", "The size the icon", - (int)Inkscape::ICON_SIZE_MENU, + GTK_ICON_SIZE_MENU, (int)99, - (int)Inkscape::ICON_SIZE_SMALL_TOOLBAR, + GTK_ICON_SIZE_SMALL_TOOLBAR, (GParamFlags)(G_PARAM_READABLE | G_PARAM_WRITABLE | G_PARAM_CONSTRUCT) ) ); g_type_class_add_private( klass, sizeof(InkToggleActionClass) ); diff --git a/src/widgets/ink-toggle-action.h b/src/widgets/ink-toggle-action.h index 9130b9f9f..f329f57a6 100644 --- a/src/widgets/ink-toggle-action.h +++ b/src/widgets/ink-toggle-action.h @@ -4,7 +4,6 @@ #include #include "attributes.h" -#include "icon-size.h" G_BEGIN_DECLS #define INK_TOGGLE_ACTION_TYPE ( ink_toggle_action_get_type() ) diff --git a/src/widgets/toolbox.h b/src/widgets/toolbox.h index 09178ec2f..afa382e5b 100644 --- a/src/widgets/toolbox.h +++ b/src/widgets/toolbox.h @@ -15,7 +15,6 @@ #include -#include "icon-size.h" #include "preferences.h" #define TOOLBAR_SLIDER_HINT "full" -- cgit v1.2.3 From 935c7b7808cb7c0e2d9952fda8962359d63781a2 Mon Sep 17 00:00:00 2001 From: Stefano Facchini Date: Tue, 17 Oct 2017 22:27:43 +0200 Subject: Remove all unused makefile.in --- src/widgets/makefile.in | 17 ----------------- 1 file changed, 17 deletions(-) delete mode 100644 src/widgets/makefile.in (limited to 'src/widgets') diff --git a/src/widgets/makefile.in b/src/widgets/makefile.in deleted file mode 100644 index 5b756ebf3..000000000 --- a/src/widgets/makefile.in +++ /dev/null @@ -1,17 +0,0 @@ -# Convenience stub makefile to call the real Makefile. - -@SET_MAKE@ - -OBJEXT = @OBJEXT@ - -# Explicit so that it's the default rule. -all: - cd .. && $(MAKE) widgets/all - -clean %.a %.$(OBJEXT): - cd .. && $(MAKE) widgets/$@ - -.PHONY: all clean - -.SUFFIXES: -.SUFFIXES: .a .$(OBJEXT) -- cgit v1.2.3 From 4dc6e12d293df00624384d525e8b3bdc3d824152 Mon Sep 17 00:00:00 2001 From: Tavmjong Bah Date: Thu, 26 Oct 2017 09:42:58 +0200 Subject: Remove unused functions. --- src/widgets/spw-utilities.cpp | 113 ------------------------------------------ src/widgets/spw-utilities.h | 16 ------ 2 files changed, 129 deletions(-) (limited to 'src/widgets') diff --git a/src/widgets/spw-utilities.cpp b/src/widgets/spw-utilities.cpp index 29e86b885..992f1f6b7 100644 --- a/src/widgets/spw-utilities.cpp +++ b/src/widgets/spw-utilities.cpp @@ -61,31 +61,6 @@ Gtk::Label * spw_label(Gtk::Grid *table, const gchar *label_text, int col, int r return label_widget; } -GtkWidget * -spw_label_old(GtkWidget *table, const gchar *label_text, int col, int row) -{ - GtkWidget *label_widget; - - label_widget = gtk_label_new (label_text); - g_assert(label_widget != NULL); - gtk_widget_set_halign(label_widget, GTK_ALIGN_END); - gtk_widget_show (label_widget); - -#if GTK_CHECK_VERSION(3,12,0) - gtk_widget_set_margin_start(label_widget, 4); - gtk_widget_set_margin_end(label_widget, 4); -#else - gtk_widget_set_margin_left(label_widget, 4); - gtk_widget_set_margin_right(label_widget, 4); -#endif - gtk_widget_set_hexpand(label_widget, TRUE); - gtk_widget_set_halign(label_widget, GTK_ALIGN_FILL); - gtk_widget_set_valign(label_widget, GTK_ALIGN_CENTER); - gtk_grid_attach(GTK_GRID(table), label_widget, col, row, 1, 1); - - return label_widget; -} - /** * Creates a horizontal layout manager with 4-pixel spacing between children * and space for 'width' columns. @@ -104,94 +79,6 @@ Gtk::HBox * spw_hbox(Gtk::Grid * table, int width, int col, int row) return hb; } -/** - * Creates a checkbutton widget and adds it to a vbox. - * This is a compound widget that includes a label. - */ -GtkWidget *spw_vbox_checkbutton(GtkWidget *dialog, GtkWidget *vbox, - const gchar *label, const gchar *tip, gchar *key, GCallback cb) -{ - g_assert (dialog != NULL); - g_assert (vbox != NULL); - - GtkWidget *b = gtk_check_button_new_with_label (label); - gtk_widget_set_tooltip_text(b, tip); - g_assert (b != NULL); - gtk_widget_show (b); - gtk_box_pack_start (GTK_BOX (vbox), b, FALSE, FALSE, 0); - g_object_set_data (G_OBJECT (b), "key", key); - g_object_set_data (G_OBJECT (dialog), key, b); - g_signal_connect (G_OBJECT (b), "toggled", cb, dialog); - return b; -} - - -/** - * Creates a checkbutton widget and adds it to a table. - * This is a compound widget that includes a label. - */ -GtkWidget * -spw_checkbutton(GtkWidget * dialog, GtkWidget * table, - const gchar * label, gchar * key, int /*col*/, int row, - int insensitive, GCallback cb) -{ - GtkWidget *b; - - g_assert(dialog != NULL); - g_assert(table != NULL); - - GtkWidget *l = gtk_label_new (label); - gtk_widget_set_halign(l, GTK_ALIGN_END); - gtk_widget_show (l); - - gtk_widget_set_halign(l, GTK_ALIGN_FILL); - gtk_widget_set_hexpand(l, TRUE); - gtk_widget_set_valign(l, GTK_ALIGN_CENTER); - gtk_grid_attach(GTK_GRID(table), l, 0, row, 1, 1); - - b = gtk_check_button_new (); - gtk_widget_show (b); - - gtk_widget_set_halign(b, GTK_ALIGN_FILL); - gtk_widget_set_hexpand(b, TRUE); - gtk_widget_set_valign(b, GTK_ALIGN_CENTER); - gtk_grid_attach(GTK_GRID(table), b, 1, row, 1, 1); - - g_object_set_data (G_OBJECT (b), "key", key); - g_object_set_data (G_OBJECT (dialog), key, b); - g_signal_connect (G_OBJECT (b), "toggled", cb, dialog); - if (insensitive == 1) { - gtk_widget_set_sensitive (b, FALSE); - } - return b; -} - -/** - * Creates a dropdown widget. This is a compound widget that includes - * a label as well as the dropdown. - */ -GtkWidget * -spw_dropdown(GtkWidget * dialog, GtkWidget * table, - const gchar * label_text, gchar * key, int row, - GtkWidget * selector - ) -{ - g_assert(dialog != NULL); - g_assert(table != NULL); - g_assert(selector != NULL); - - spw_label_old(table, label_text, 0, row); - - gtk_widget_show (selector); - gtk_widget_set_halign(selector, GTK_ALIGN_FILL); - gtk_widget_set_hexpand(selector, TRUE); - gtk_widget_set_valign(selector, GTK_ALIGN_CENTER); - gtk_grid_attach(GTK_GRID(table), selector, 1, row, 1, 1); - - g_object_set_data (G_OBJECT (dialog), key, selector); - return selector; -} - static void sp_set_font_size_recursive (GtkWidget *w, gpointer font) { diff --git a/src/widgets/spw-utilities.h b/src/widgets/spw-utilities.h index 71b451631..ea0d55279 100644 --- a/src/widgets/spw-utilities.h +++ b/src/widgets/spw-utilities.h @@ -27,22 +27,6 @@ namespace Gtk { Gtk::Label * spw_label(Gtk::Grid *table, gchar const *label_text, int col, int row, Gtk::Widget *target); Gtk::HBox * spw_hbox(Gtk::Grid *table, int width, int col, int row); -GtkWidget * spw_label_old(GtkWidget *table, gchar const *label_text, int col, int row); - -GtkWidget * -spw_vbox_checkbutton(GtkWidget *dialog, GtkWidget *table, - const gchar *label, const gchar *tip, gchar *key, GCallback cb); - -GtkWidget * -spw_checkbutton(GtkWidget *dialog, GtkWidget *table, - gchar const *label, gchar *key, int col, int row, - int sensitive, GCallback cb); - -GtkWidget * -spw_dropdown(GtkWidget *dialog, GtkWidget *table, - gchar const *label, gchar *key, int row, - GtkWidget *selector - ); void sp_set_font_size (GtkWidget *w, guint font); void sp_set_font_size_smaller (GtkWidget *w); -- cgit v1.2.3