summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorShlomi Fish <shlomif@shlomifish.org>2016-10-02 09:35:51 +0000
committerShlomi Fish <shlomif@shlomifish.org>2016-10-02 09:35:51 +0000
commit55145e1d2c1ce12fda60879c577bb97d10e90c81 (patch)
treedc50bed81752bca6bf9d3fcd493bc9751b20fcf3 /src
parentExtract a method instead of assigning a temp bool var. (diff)
parentAdjust dock size to minimum width during canvas table size allocation signal. (diff)
downloadinkscape-55145e1d2c1ce12fda60879c577bb97d10e90c81.tar.gz
inkscape-55145e1d2c1ce12fda60879c577bb97d10e90c81.zip
Merged.
(bzr r15100.1.28)
Diffstat (limited to 'src')
-rw-r--r--src/extension/internal/svg.cpp26
-rw-r--r--src/widgets/desktop-widget.cpp13
2 files changed, 36 insertions, 3 deletions
diff --git a/src/extension/internal/svg.cpp b/src/extension/internal/svg.cpp
index a94bc2141..9cde90519 100644
--- a/src/extension/internal/svg.cpp
+++ b/src/extension/internal/svg.cpp
@@ -78,6 +78,28 @@ static void pruneExtendedNamespaces( Inkscape::XML::Node *repr )
}
}
+/*
+ * Similar to the above sodipodi and inkscape prune, but used on all documents
+ * to remove problematic elements (for example Adobe's i:pgf tag) only removes
+ * known garbage tags.
+ */
+static void pruneProprietaryGarbage( Inkscape::XML::Node *repr )
+{
+ if (repr) {
+ std::vector<Inkscape::XML::Node *> nodesRemoved;
+ for ( Node *child = repr->firstChild(); child; child = child->next() ) {
+ if((strncmp("i:pgf", child->name(), 5) == 0)) {
+ nodesRemoved.push_back(child);
+ g_warning( "An Adobe proprietary tag was found which is known to cause issues. It was removed before saving.");
+ } else {
+ pruneProprietaryGarbage(child);
+ }
+ }
+ for ( std::vector<Inkscape::XML::Node *>::iterator it = nodesRemoved.begin(); it != nodesRemoved.end(); ++it ) {
+ repr->removeChild(*it);
+ }
+ }
+}
/**
\return None
@@ -246,6 +268,10 @@ Svg::save(Inkscape::Extension::Output *mod, SPDocument *doc, gchar const *filena
|| !strcmp (mod->get_id(), SP_MODULE_KEY_OUTPUT_SVG_INKSCAPE)
|| !strcmp (mod->get_id(), SP_MODULE_KEY_OUTPUT_SVGZ_INKSCAPE));
+ // We prune the in-use document and deliberately loose data, because there
+ // is no known use for this data at the present time.
+ pruneProprietaryGarbage(rdoc->root());
+
if (!exportExtensions) {
// We make a duplicate document so we don't prune the in-use document
// and loose data. Perhaps the user intends to save as inkscape-svg next.
diff --git a/src/widgets/desktop-widget.cpp b/src/widgets/desktop-widget.cpp
index bd72560c6..55dc82dc0 100644
--- a/src/widgets/desktop-widget.cpp
+++ b/src/widgets/desktop-widget.cpp
@@ -307,12 +307,19 @@ sp_desktop_widget_class_init (SPDesktopWidgetClass *klass)
* This adjusts the range of the rulers when the dock container is adjusted
* (fixes lp:950552)
*/
-static void canvas_tbl_size_allocate(GtkWidget * /*widget*/,
+static void canvas_tbl_size_allocate(GtkWidget * widget,
GdkRectangle * /*allocation*/,
gpointer data)
{
SPDesktopWidget *dtw = SP_DESKTOP_WIDGET(data);
sp_desktop_widget_update_rulers(dtw);
+
+ GtkWidget* parent = gtk_widget_get_parent(widget);
+ if(GTK_IS_PANED(parent)) {
+ GtkPaned *paned = GTK_PANED(parent);
+ // Could use gtk paned property 'max-position' here
+ gtk_paned_set_position(paned, 10000);
+ }
}
/**
@@ -527,8 +534,8 @@ void SPDesktopWidget::init( SPDesktopWidget *dtw )
paned_class->cycle_handle_focus = NULL;
}
- gtk_widget_set_hexpand(GTK_WIDGET(paned->gobj()), TRUE);
- gtk_widget_set_vexpand(GTK_WIDGET(paned->gobj()), TRUE);
+ paned->set_hexpand(true);
+ paned->set_vexpand(true);
gtk_grid_attach(GTK_GRID(tbl_wrapper), GTK_WIDGET (paned->gobj()), 1, 1, 1, 1);
} else {
gtk_widget_set_hexpand(GTK_WIDGET(dtw->canvas_tbl), TRUE);