summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarc Jeanmougin <marc@jeanmougin.fr>2017-09-30 00:25:47 +0000
committerMarc Jeanmougin <marc@jeanmougin.fr>2017-09-30 00:25:47 +0000
commit4ced018164553d115a24947ec74dace836e99732 (patch)
treecb77b1f59c161da5c1dcde9edaaff9e046865696
parentremove helper/gnome-utils.* (diff)
downloadinkscape-4ced018164553d115a24947ec74dace836e99732.tar.gz
inkscape-4ced018164553d115a24947ec74dace836e99732.zip
Hunted every GList to the last (except in libnrtype and libcroco)
-rw-r--r--src/live_effects/parameter/togglebutton.cpp16
-rw-r--r--src/ui/dialog/clonetiler.cpp7
-rw-r--r--src/ui/dialog/inkscape-preferences.cpp18
-rw-r--r--src/ui/interface.cpp10
-rw-r--r--src/ui/widget/page-sizer.cpp14
-rw-r--r--src/ui/widget/page-sizer.h2
-rw-r--r--src/widgets/desktop-widget.cpp41
-rw-r--r--src/widgets/ege-adjustment-action.cpp114
-rw-r--r--src/widgets/ege-output-action.cpp23
-rw-r--r--src/widgets/ege-select-one-action.cpp29
-rw-r--r--src/widgets/pencil-toolbar.cpp34
-rw-r--r--src/widgets/spw-utilities.cpp12
-rw-r--r--src/widgets/toolbox.cpp27
13 files changed, 164 insertions, 183 deletions
diff --git a/src/live_effects/parameter/togglebutton.cpp b/src/live_effects/parameter/togglebutton.cpp
index 16b8f9067..e26884d6a 100644
--- a/src/live_effects/parameter/togglebutton.cpp
+++ b/src/live_effects/parameter/togglebutton.cpp
@@ -147,21 +147,25 @@ ToggleButtonParam::refresh_button()
if(!box_button){
return;
}
- GList * childs = gtk_container_get_children(GTK_CONTAINER(box_button->gobj()));
- guint total_widgets = g_list_length (childs);
+ std::vector<Gtk::Widget*> children = Glib::wrap(GTK_CONTAINER(box_button))->get_children();
if (!param_label.empty()) {
+ Gtk::Label *lab = dynamic_cast<Gtk::Label*>(children[children.size()-1]);
+ if (!lab) return;
if(value || inactive_label.empty()){
- gtk_label_set_text(GTK_LABEL(g_list_nth_data(childs, total_widgets-1)), param_label.c_str());
+ lab->set_text(param_label.c_str());
}else{
- gtk_label_set_text(GTK_LABEL(g_list_nth_data(childs, total_widgets-1)), inactive_label.c_str());
+ lab->set_text(inactive_label.c_str());
}
}
if ( _icon_active ) {
GdkPixbuf * icon_pixbuf = NULL;
+ Gtk::Image *im = dynamic_cast<Gtk::Image*>(children[0]);
+ Gtk::IconSize is(_icon_size);
+ if (!im) return;
if(!value){
- gtk_image_set_from_icon_name (GTK_IMAGE(g_list_nth_data(childs, 0)), _icon_inactive, _icon_size);
+ im->set_from_icon_name(_icon_inactive, is);
} else {
- gtk_image_set_from_icon_name (GTK_IMAGE(g_list_nth_data(childs, 0)), _icon_active, _icon_size);
+ im->set_from_icon_name(_icon_active, is);
}
}
}
diff --git a/src/ui/dialog/clonetiler.cpp b/src/ui/dialog/clonetiler.cpp
index ad13ed8c4..5c9b31fb1 100644
--- a/src/ui/dialog/clonetiler.cpp
+++ b/src/ui/dialog/clonetiler.cpp
@@ -2639,11 +2639,10 @@ void CloneTiler::reset_recursive(GtkWidget *w)
}
if (GTK_IS_CONTAINER(w)) {
- GList *ch = gtk_container_get_children (GTK_CONTAINER(w));
- for (GList *i = ch; i != NULL; i = i->next) {
- reset_recursive (GTK_WIDGET(i->data));
+ std::vector<Gtk::Widget*> c = Glib::wrap(GTK_CONTAINER(w))->get_children();
+ for ( auto i : c ) {
+ reset_recursive(i->gobj());
}
- g_list_free (ch);
}
}
diff --git a/src/ui/dialog/inkscape-preferences.cpp b/src/ui/dialog/inkscape-preferences.cpp
index 13729cf0f..d87a3d94a 100644
--- a/src/ui/dialog/inkscape-preferences.cpp
+++ b/src/ui/dialog/inkscape-preferences.cpp
@@ -22,6 +22,8 @@
#include <glibmm/miscutils.h>
#include <glibmm/markup.h>
#include <gtkmm/main.h>
+#include <gtkmm/recentmanager.h>
+#include <gtkmm/recentinfo.h>
#include "preferences.h"
#include "verbs.h"
@@ -2057,21 +2059,15 @@ bool InkscapePreferences::PresentPage(const Gtk::TreeModel::iterator& iter)
void InkscapePreferences::on_reset_open_recent_clicked()
{
- GtkRecentManager* manager = gtk_recent_manager_get_default();
- GList* recent_list = gtk_recent_manager_get_items(manager);
- GList* element;
- GError* error;
+ Glib::RefPtr<Gtk::RecentManager> manager = Gtk::RecentManager::get_default();
+ std::vector< Glib::RefPtr< Gtk::RecentInfo > > recent_list = manager->get_items();
//Remove only elements that were added by Inkscape
- for (element = g_list_first(recent_list); element; element = g_list_next(element)){
- error = NULL;
- GtkRecentInfo* info = (GtkRecentInfo*) element->data;
- if (gtk_recent_info_has_application(info, g_get_prgname())){
- gtk_recent_manager_remove_item(manager, gtk_recent_info_get_uri(info), &error);
+ for (auto e : recent_list) {
+ if (e->has_application(g_get_prgname())) {
+ manager->remove_item(e->get_uri());
}
- gtk_recent_info_unref (info);
}
- g_list_free(recent_list);
}
void InkscapePreferences::on_pagelist_selection_changed()
diff --git a/src/ui/interface.cpp b/src/ui/interface.cpp
index 93e91b8f8..7a9b92378 100644
--- a/src/ui/interface.cpp
+++ b/src/ui/interface.cpp
@@ -1436,14 +1436,12 @@ sp_ui_menu_item_set_name(GtkWidget *data, Glib::ustring const &name)
if (GTK_IS_LABEL(child)) {
gtk_label_set_markup_with_mnemonic(GTK_LABEL (child), name.c_str());
} else if (GTK_IS_BOX(child)) {
- GList *children = gtk_container_get_children(GTK_CONTAINER(child));
+ std::vector<Gtk::Widget*> children = Glib::wrap(GTK_CONTAINER(child))->get_children();
// Label is second child in list
- GtkWidget *label = GTK_WIDGET(children->next->data);
-
- gtk_label_set_markup_with_mnemonic(
- GTK_LABEL (label),
- name.c_str());
+ Gtk::Label *label = dynamic_cast<Gtk::Label*>(children[1]);
+ if(!label) return;
+ label->set_markup_with_mnemonic(name);
}//else sp_ui_menu_append_item_from_verb has been modified and can set
//a menu item in yet another way...
}
diff --git a/src/ui/widget/page-sizer.cpp b/src/ui/widget/page-sizer.cpp
index eb0e45f14..7427ad4e2 100644
--- a/src/ui/widget/page-sizer.cpp
+++ b/src/ui/widget/page-sizer.cpp
@@ -355,13 +355,12 @@ PageSizer::PageSizer(Registry & _wr)
_fitPageMarginExpander.set_vexpand();
_customDimTable.attach(_fitPageMarginExpander, 0, 2, 2, 1);
- _dimTabOrderGList = NULL;
- _dimTabOrderGList = g_list_append(_dimTabOrderGList, _dimensionWidth.gobj());
- _dimTabOrderGList = g_list_append(_dimTabOrderGList, _dimensionHeight.gobj());
- _dimTabOrderGList = g_list_append(_dimTabOrderGList, _dimensionUnits.gobj());
- _dimTabOrderGList = g_list_append(_dimTabOrderGList, _fitPageMarginExpander.gobj());
- Glib::ListHandle<Widget *> dimFocusChain(_dimTabOrderGList, Glib::OWNERSHIP_NONE);
- _customDimTable.set_focus_chain(dimFocusChain);
+ _dimTabOrderList.clear();
+ _dimTabOrderList.push_back(&_dimensionWidth);
+ _dimTabOrderList.push_back(&_dimensionHeight);
+ _dimTabOrderList.push_back(&_dimensionUnits);
+ _dimTabOrderList.push_back(&_fitPageMarginExpander);
+ _customDimTable.set_focus_chain(_dimTabOrderList);
//## Set up fit page expander
_fitPageMarginExpander.set_use_underline();
@@ -454,7 +453,6 @@ PageSizer::PageSizer(Registry & _wr)
*/
PageSizer::~PageSizer()
{
- g_list_free(_dimTabOrderGList);
}
diff --git a/src/ui/widget/page-sizer.h b/src/ui/widget/page-sizer.h
index f84f96782..329ecfc6d 100644
--- a/src/ui/widget/page-sizer.h
+++ b/src/ui/widget/page-sizer.h
@@ -220,7 +220,7 @@ protected:
RegisteredUnitMenu _dimensionUnits;
RegisteredScalarUnit _dimensionWidth;
RegisteredScalarUnit _dimensionHeight;
- GList * _dimTabOrderGList;
+ std::vector<Widget*> _dimTabOrderList;
//### Fit Page options
Gtk::Expander _fitPageMarginExpander;
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<Gtk::Widget*> 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<Gtk::Widget*> 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<Gtk::Widget*> ch = Glib::wrap(GTK_CONTAINER(aux_toolbox))->get_children();
+ for (auto i:ch) {
+ if (GTK_IS_CONTAINER(i->gobj())) {
+ std::vector<Gtk::Widget*> grch = dynamic_cast<Gtk::Container*>(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<Gtk::Widget*> 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<SPDesktopWidget*>(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<Gtk::Widget*> 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 <cmath>
#include <string.h>
+#include <vector>
+#include <algorithm>
+#include <gtkmm/container.h>
#include <gdk/gdkkeysyms.h>
#include "icon-size.h"
@@ -111,7 +114,7 @@ struct _EgeAdjustmentActionPrivate
gdouble page;
gint appearanceMode;
gboolean transferFocus;
- GList* descriptions;
+ std::vector<EgeAdjustmentDescr*> 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<EgeAdjustmentDescr*> 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<EgeAdjustmentDescr*> 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 && pos<descriptions.size() && descr && (descr->value >= 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<EgeAdjustmentDescr*> 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<Gtk::Widget*> 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<Gtk::Widget*>::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<Gtk::Widget*> 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 <string.h>
#include <gtk/gtk.h>
+#include <gtkmm/container.h>
+#include <gtkmm/label.h>
#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<Gtk::Widget*> children = Glib::wrap(GTK_CONTAINER(proxies->data))->get_children();
+ if ( !children.empty() ) {
+ if ( GTK_IS_BOX(children[0]->gobj()) ) {
+ children = dynamic_cast<Gtk::Container *>(children[0])->get_children();
+ if ( children.size()>1 ) {
+ Gtk::Widget *child = children[1];
+ if ( GTK_IS_LABEL(child->gobj()) ) {
+ Gtk::Label* lbl = dynamic_cast<Gtk::Label *>(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 <string.h>
+#include <vector>
+#include <gtkmm/checkmenuitem.h>
#include <gtk/gtk.h>
@@ -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<Gtk::Widget*> 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<Gtk::Widget*> children = Glib::wrap(GTK_CONTAINER(subMenu))->get_children();
+ if ( children.size() > (guint)active ) {
+ dynamic_cast<Gtk::CheckMenuItem*>(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<Gtk::Widget*> 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<gchar *>(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<gchar*> freehand_shape_dropdown_items_list = {
+ const_cast<gchar *>(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<gchar*>(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<Gtk::Widget*> 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<Gtk::Widget*> 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<SPDesktop*>(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<Gtk::Widget*> 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<Gtk::Widget*> 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<Gtk::Widget*> 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));