summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJabier Arraiza Cenoz <jabier.arraiza@marker.es>2016-06-18 08:34:47 +0000
committerjabiertxof <info@marker.es>2016-06-18 08:34:47 +0000
commit2a97e646577aa34a4ec595d183d0b59dd79e3349 (patch)
treec85ca26652f12505e028993459073000e6a2e78e
parentattemp to simplify doeffect code on fillet chamfer (diff)
parent[Bug #1454910] Compressed SVG with media error. (diff)
downloadinkscape-2a97e646577aa34a4ec595d183d0b59dd79e3349.tar.gz
inkscape-2a97e646577aa34a4ec595d183d0b59dd79e3349.zip
update to trunk
(bzr r13645.1.160)
-rw-r--r--configure.bat2
-rw-r--r--po/it.po303
-rwxr-xr-xshare/extensions/svg_and_media_zip_output.py2
-rw-r--r--share/keys/Makefile.am1
-rw-r--r--share/keys/corel-draw-x8.xml175
-rw-r--r--src/2geom/sbasis-geometric.cpp9
-rw-r--r--src/live_effects/lpe-powerstroke.cpp25
-rw-r--r--src/ui/tools/freehand-base.cpp40
-rw-r--r--src/ui/tools/measure-tool.cpp4
-rw-r--r--src/ui/tools/select-tool.cpp257
-rw-r--r--src/ui/tools/select-tool.h3
11 files changed, 455 insertions, 366 deletions
diff --git a/configure.bat b/configure.bat
index 503b47b84..11adb9445 100644
--- a/configure.bat
+++ b/configure.bat
@@ -1,5 +1,5 @@
REM Set the MinGW environment variables.
-if "%MINGW_BIN%"=="" mingwenv.bat
+if "%MINGW_BIN%"=="" call mingwenv.bat
REM Delete the CMake cache. Needed when changes on the CMakeLists should be applied in a consistent way.
del CMakeCache.txt
diff --git a/po/it.po b/po/it.po
index 828f7eafe..f071dbced 100644
--- a/po/it.po
+++ b/po/it.po
@@ -12,8 +12,8 @@ msgid ""
msgstr ""
"Project-Id-Version: Inkscape 0.92\n"
"Report-Msgid-Bugs-To: inkscape-devel@lists.sourceforge.net\n"
-"POT-Creation-Date: 2016-06-08 20:26+0200\n"
-"PO-Revision-Date: 2016-06-08 15:48+0100\n"
+"POT-Creation-Date: 2016-06-16 23:22+0200\n"
+"PO-Revision-Date: 2016-06-10 15:31+0100\n"
"Last-Translator: Firas Hanife <FirasHanife@gmail.com>\n"
"Language-Team: \n"
"Language: it\n"
@@ -4471,16 +4471,16 @@ msgstr "guide tipografia tipografico canvas"
msgid "3D Box"
msgstr "Solido 3D"
-#: ../src/color-profile.cpp:856
+#: ../src/color-profile.cpp:860
#, c-format
msgid "Color profiles directory (%s) is unavailable."
msgstr "La cartella dei profili colore (%s) non è disponibile."
-#: ../src/color-profile.cpp:928 ../src/color-profile.cpp:945
+#: ../src/color-profile.cpp:932 ../src/color-profile.cpp:949
msgid "(invalid UTF-8 string)"
msgstr "(stringa UTF-8 non valida)"
-#: ../src/color-profile.cpp:930
+#: ../src/color-profile.cpp:934
msgctxt "Profile name"
msgid "None"
msgstr "Nessuno"
@@ -6739,7 +6739,7 @@ msgstr "Discreto"
#: ../src/extension/internal/filter/color.h:505 ../src/filter-enums.cpp:113
#: ../src/live_effects/lpe-interpolate_points.cpp:25
-#: ../src/live_effects/lpe-powerstroke.cpp:133
+#: ../src/live_effects/lpe-powerstroke.cpp:134
msgid "Linear"
msgstr "Lineare"
@@ -8550,28 +8550,24 @@ msgstr "Colore contorno"
#. New in Compositing and Blending Level 1
#: ../src/filter-enums.cpp:58
-#, fuzzy
msgid "Overlay"
-msgstr "Sovrapposizione"
+msgstr "Sovrapponi"
#: ../src/filter-enums.cpp:59
-#, fuzzy
msgid "Color Dodge"
-msgstr "Colore delle linee guida"
+msgstr "Scherma colore"
#: ../src/filter-enums.cpp:60
-#, fuzzy
msgid "Color Burn"
-msgstr "Barra colori"
+msgstr "Brucia colore"
#: ../src/filter-enums.cpp:61
msgid "Hard Light"
-msgstr ""
+msgstr "Luce forte"
#: ../src/filter-enums.cpp:62
-#, fuzzy
msgid "Soft Light"
-msgstr "Punto luce"
+msgstr "Luce leggera"
#: ../src/filter-enums.cpp:63 ../src/splivarot.cpp:89 ../src/splivarot.cpp:95
msgid "Difference"
@@ -8591,7 +8587,7 @@ msgstr "Tonalità"
#: ../src/filter-enums.cpp:68
msgid "Luminosity"
-msgstr ""
+msgstr "Luminosità"
#: ../src/filter-enums.cpp:78
msgid "Matrix"
@@ -9541,12 +9537,12 @@ msgstr "Nessun effetto"
msgid "Please specify a parameter path for the LPE '%s' with %d mouse clicks"
msgstr "Specificare un tracciato parametro per l'effetto '%s' con %d clic"
-#: ../src/live_effects/effect.cpp:765
+#: ../src/live_effects/effect.cpp:766
#, c-format
msgid "Editing parameter <b>%s</b>."
msgstr "Modifica del parametro <b>%s</b>."
-#: ../src/live_effects/effect.cpp:770
+#: ../src/live_effects/effect.cpp:771
msgid "None of the applied path effect's parameters can be edited on-canvas."
msgstr ""
"Nessuno dei parametri dell'effetto su tracciato applicato può essere "
@@ -10132,32 +10128,32 @@ msgstr ""
"posizione dei nodi del tracciato di sostegno."
#: ../src/live_effects/lpe-interpolate_points.cpp:26
-#: ../src/live_effects/lpe-powerstroke.cpp:134
+#: ../src/live_effects/lpe-powerstroke.cpp:135
msgid "CubicBezierFit"
msgstr "CubicBezierFit"
#: ../src/live_effects/lpe-interpolate_points.cpp:27
-#: ../src/live_effects/lpe-powerstroke.cpp:135
+#: ../src/live_effects/lpe-powerstroke.cpp:136
msgid "CubicBezierJohan"
msgstr "CubicBezierJohan"
#: ../src/live_effects/lpe-interpolate_points.cpp:28
-#: ../src/live_effects/lpe-powerstroke.cpp:136
+#: ../src/live_effects/lpe-powerstroke.cpp:137
msgid "SpiroInterpolator"
msgstr "SpiroInterpolator"
#: ../src/live_effects/lpe-interpolate_points.cpp:29
-#: ../src/live_effects/lpe-powerstroke.cpp:137
+#: ../src/live_effects/lpe-powerstroke.cpp:138
msgid "Centripetal Catmull-Rom"
msgstr ""
#: ../src/live_effects/lpe-interpolate_points.cpp:37
-#: ../src/live_effects/lpe-powerstroke.cpp:179
+#: ../src/live_effects/lpe-powerstroke.cpp:180
msgid "Interpolator type:"
msgstr "Tipo interpolazione:"
#: ../src/live_effects/lpe-interpolate_points.cpp:38
-#: ../src/live_effects/lpe-powerstroke.cpp:179
+#: ../src/live_effects/lpe-powerstroke.cpp:180
msgid ""
"Determines which kind of interpolator will be used to interpolate between "
"stroke width along the path"
@@ -10166,21 +10162,21 @@ msgstr ""
"larghezza del contorno lungo il tracciato"
#: ../src/live_effects/lpe-jointype.cpp:31
-#: ../src/live_effects/lpe-powerstroke.cpp:166
+#: ../src/live_effects/lpe-powerstroke.cpp:167
#: ../src/live_effects/lpe-taperstroke.cpp:63
msgid "Beveled"
msgstr "Tagliati"
#: ../src/live_effects/lpe-jointype.cpp:32
#: ../src/live_effects/lpe-jointype.cpp:43
-#: ../src/live_effects/lpe-powerstroke.cpp:167
+#: ../src/live_effects/lpe-powerstroke.cpp:168
#: ../src/live_effects/lpe-taperstroke.cpp:64
#: ../src/widgets/star-toolbar.cpp:534
msgid "Rounded"
msgstr "Arrotondati"
#: ../src/live_effects/lpe-jointype.cpp:33
-#: ../src/live_effects/lpe-powerstroke.cpp:170
+#: ../src/live_effects/lpe-powerstroke.cpp:171
#: ../src/live_effects/lpe-taperstroke.cpp:65
msgid "Miter"
msgstr "Vivi"
@@ -10192,7 +10188,7 @@ msgstr "Spigolosità:"
#. {LINEJOIN_EXTRP_MITER, N_("Extrapolated"), "extrapolated"}, // disabled because doesn't work well
#: ../src/live_effects/lpe-jointype.cpp:35
-#: ../src/live_effects/lpe-powerstroke.cpp:169
+#: ../src/live_effects/lpe-powerstroke.cpp:170
msgid "Extrapolated arc"
msgstr "Arco estrapolato"
@@ -10212,17 +10208,17 @@ msgid "Extrapolated arc Alt3"
msgstr "Arco estrapolato"
#: ../src/live_effects/lpe-jointype.cpp:42
-#: ../src/live_effects/lpe-powerstroke.cpp:149
+#: ../src/live_effects/lpe-powerstroke.cpp:150
msgid "Butt"
msgstr "Geometrica"
#: ../src/live_effects/lpe-jointype.cpp:44
-#: ../src/live_effects/lpe-powerstroke.cpp:150
+#: ../src/live_effects/lpe-powerstroke.cpp:151
msgid "Square"
msgstr "Quadrata"
#: ../src/live_effects/lpe-jointype.cpp:45
-#: ../src/live_effects/lpe-powerstroke.cpp:152
+#: ../src/live_effects/lpe-powerstroke.cpp:153
msgid "Peak"
msgstr "Punta"
@@ -10245,20 +10241,20 @@ msgstr "Orientazione del righello"
#. TRANSLATORS: The line join style specifies the shape to be used at the
#. corners of paths. It can be "miter", "round" or "bevel".
#: ../src/live_effects/lpe-jointype.cpp:56
-#: ../src/live_effects/lpe-powerstroke.cpp:182
+#: ../src/live_effects/lpe-powerstroke.cpp:183
#: ../src/widgets/stroke-style.cpp:288
msgid "Join:"
msgstr "Spigoli:"
#: ../src/live_effects/lpe-jointype.cpp:56
-#: ../src/live_effects/lpe-powerstroke.cpp:182
+#: ../src/live_effects/lpe-powerstroke.cpp:183
msgid "Determines the shape of the path's corners"
msgstr "Determina la forma degli spigoli del tracciato"
#. start_lean(_("Start path lean"), _("Start path lean"), "start_lean", &wr, this, 0.),
#. end_lean(_("End path lean"), _("End path lean"), "end_lean", &wr, this, 0.),
#: ../src/live_effects/lpe-jointype.cpp:59
-#: ../src/live_effects/lpe-powerstroke.cpp:183
+#: ../src/live_effects/lpe-powerstroke.cpp:184
#: ../src/live_effects/lpe-taperstroke.cpp:78
msgid "Miter limit:"
msgstr "Spigolosità:"
@@ -10790,43 +10786,43 @@ msgstr ""
msgid "Handles:"
msgstr "Maniglie:"
-#: ../src/live_effects/lpe-powerstroke.cpp:132
+#: ../src/live_effects/lpe-powerstroke.cpp:133
msgid "CubicBezierSmooth"
msgstr "CubicBezierSmooth"
-#: ../src/live_effects/lpe-powerstroke.cpp:151
+#: ../src/live_effects/lpe-powerstroke.cpp:152
#: ../share/extensions/gcodetools_prepare_path_for_plasma.inx.h:13
msgid "Round"
msgstr "Arrotondata"
-#: ../src/live_effects/lpe-powerstroke.cpp:153
+#: ../src/live_effects/lpe-powerstroke.cpp:154
msgid "Zero width"
msgstr "Larghezza zero"
-#: ../src/live_effects/lpe-powerstroke.cpp:171
+#: ../src/live_effects/lpe-powerstroke.cpp:172
#: ../src/widgets/pencil-toolbar.cpp:112
msgid "Spiro"
msgstr "Spiro"
-#: ../src/live_effects/lpe-powerstroke.cpp:177
+#: ../src/live_effects/lpe-powerstroke.cpp:178
msgid "Offset points"
msgstr "Punti proiezione"
-#: ../src/live_effects/lpe-powerstroke.cpp:178
+#: ../src/live_effects/lpe-powerstroke.cpp:179
msgid "Sort points"
msgstr "Ordina punti"
-#: ../src/live_effects/lpe-powerstroke.cpp:178
+#: ../src/live_effects/lpe-powerstroke.cpp:179
msgid "Sort offset points according to their time value along the curve"
msgstr ""
"Ordina i punti della proiezione secondo la loro posizione lungo la curva"
-#: ../src/live_effects/lpe-powerstroke.cpp:180
+#: ../src/live_effects/lpe-powerstroke.cpp:181
#: ../share/extensions/fractalize.inx.h:3
msgid "Smoothness:"
msgstr "Curvatura:"
-#: ../src/live_effects/lpe-powerstroke.cpp:180
+#: ../src/live_effects/lpe-powerstroke.cpp:181
msgid ""
"Sets the smoothness for the CubicBezierJohan interpolator; 0 = linear "
"interpolation, 1 = smooth"
@@ -10834,25 +10830,25 @@ msgstr ""
"Imposta la curvatura per l'interpolazione CubicBezierJohan; 0 = lineare, 1 = "
"morbida"
-#: ../src/live_effects/lpe-powerstroke.cpp:181
+#: ../src/live_effects/lpe-powerstroke.cpp:182
msgid "Start cap:"
msgstr "Estremità iniziale:"
-#: ../src/live_effects/lpe-powerstroke.cpp:181
+#: ../src/live_effects/lpe-powerstroke.cpp:182
msgid "Determines the shape of the path's start"
msgstr "Determina la forma dell'estremità iniziale del tracciato"
-#: ../src/live_effects/lpe-powerstroke.cpp:183
+#: ../src/live_effects/lpe-powerstroke.cpp:184
#: ../src/widgets/stroke-style.cpp:335
msgid "Maximum length of the miter (in units of stroke width)"
msgstr ""
"Lunghezza massima dello spigolo (in unità della larghezza del contorno)"
-#: ../src/live_effects/lpe-powerstroke.cpp:184
+#: ../src/live_effects/lpe-powerstroke.cpp:185
msgid "End cap:"
msgstr "Estremità finale:"
-#: ../src/live_effects/lpe-powerstroke.cpp:184
+#: ../src/live_effects/lpe-powerstroke.cpp:185
msgid "Determines the shape of the path's end"
msgstr "Determina la forma dell'estremità finale del tracciato"
@@ -11179,13 +11175,13 @@ msgstr "Nessuno"
#: ../src/live_effects/lpe-ruler.cpp:33
#: ../src/live_effects/lpe-transform_2pts.cpp:37
-#: ../src/ui/tools/measure-tool.cpp:756 ../src/widgets/arc-toolbar.cpp:319
+#: ../src/ui/tools/measure-tool.cpp:755 ../src/widgets/arc-toolbar.cpp:319
msgid "Start"
msgstr "Inizio"
#: ../src/live_effects/lpe-ruler.cpp:34
#: ../src/live_effects/lpe-transform_2pts.cpp:38
-#: ../src/ui/tools/measure-tool.cpp:757 ../src/widgets/arc-toolbar.cpp:332
+#: ../src/ui/tools/measure-tool.cpp:756 ../src/widgets/arc-toolbar.cpp:332
msgid "End"
msgstr "Fine"
@@ -11756,7 +11752,7 @@ msgstr "Inverti"
#: ../src/live_effects/parameter/originalpatharray.cpp:130
#: ../src/live_effects/parameter/originalpatharray.cpp:315
-#: ../src/live_effects/parameter/path.cpp:486
+#: ../src/live_effects/parameter/path.cpp:510
msgid "Link path parameter to path"
msgstr "Lega il parametro del tracciato al parametro"
@@ -11790,23 +11786,23 @@ msgstr "Sposta in basso effetto su tracciato"
msgid "Remove path"
msgstr "Muovi motivi"
-#: ../src/live_effects/parameter/path.cpp:170
+#: ../src/live_effects/parameter/path.cpp:184
msgid "Edit on-canvas"
msgstr "Modifica sul disegno"
-#: ../src/live_effects/parameter/path.cpp:180
+#: ../src/live_effects/parameter/path.cpp:194
msgid "Copy path"
msgstr "Copia tracciato"
-#: ../src/live_effects/parameter/path.cpp:190
+#: ../src/live_effects/parameter/path.cpp:204
msgid "Paste path"
msgstr "Incolla tracciato"
-#: ../src/live_effects/parameter/path.cpp:200
+#: ../src/live_effects/parameter/path.cpp:214
msgid "Link to path on clipboard"
msgstr "Collega a tracciato negli appunti"
-#: ../src/live_effects/parameter/path.cpp:454
+#: ../src/live_effects/parameter/path.cpp:478
msgid "Paste path parameter"
msgstr "Incolla parametri tracciato"
@@ -13373,26 +13369,26 @@ msgstr "di <b>%d</b> oggetto"
msgid "of <b>%d</b> objects"
msgstr "di <b>%d</b> oggetti"
-#: ../src/sp-item.cpp:1031 ../src/verbs.cpp:213
+#: ../src/sp-item.cpp:1030 ../src/verbs.cpp:213
msgid "Object"
msgstr "Oggetto"
-#: ../src/sp-item.cpp:1043
+#: ../src/sp-item.cpp:1042
#, c-format
msgid "%s; <i>clipped</i>"
msgstr "%s; <i>con fissaggio</i>"
-#: ../src/sp-item.cpp:1049
+#: ../src/sp-item.cpp:1048
#, c-format
msgid "%s; <i>masked</i>"
msgstr "%s; <i>con maschera</i>"
-#: ../src/sp-item.cpp:1059
+#: ../src/sp-item.cpp:1058
#, c-format
msgid "%s; <i>filtered (%s)</i>"
msgstr "%s; <i>con filtro (%s)</i>"
-#: ../src/sp-item.cpp:1061
+#: ../src/sp-item.cpp:1060
#, c-format
msgid "%s; <i>filtered</i>"
msgstr "%s; <i>con filtro</i>"
@@ -15056,14 +15052,14 @@ msgid "Back_ground color:"
msgstr "Colore di sfo_ndo:"
#: ../src/ui/dialog/document-properties.cpp:123
-#, fuzzy
msgid ""
"Color of the page background. Note: transparency setting ignored while "
"editing if 'Checkerboard background' unset (but used when exporting to "
"bitmap)."
msgstr ""
"Colore di sfondo della pagina. Nota: l'impostazione della trasparenza è "
-"ignorata durante la modifica ma utilizzata nell'esportazione bitmap."
+"ignorata durante la modifica se 'Sfondo a scacchiera' non è selezionato, ma "
+"utilizzata nell'esportazione bitmap."
#: ../src/ui/dialog/document-properties.cpp:124
msgid "Border _color:"
@@ -19697,7 +19693,7 @@ msgstr "Preserva il canale K nelle trasformazioni CMYK -> CMYK"
#: ../src/ui/dialog/inkscape-preferences.cpp:1091
#: ../src/ui/widget/color-icc-selector.cpp:394
-#: ../src/ui/widget/color-icc-selector.cpp:699
+#: ../src/ui/widget/color-icc-selector.cpp:700
msgid "<none>"
msgstr "<nessuno>"
@@ -20428,6 +20424,8 @@ msgid ""
"Stroke color same as object, fill color either object fill color or marker "
"fill color"
msgstr ""
+"Colore di contorno uguale all'oggetto, colore di riempimento uguale "
+"all'oggetto o al colore di riempimento del delimitatore"
#: ../src/ui/dialog/inkscape-preferences.cpp:1413
#: ../share/extensions/hershey.inx.h:27
@@ -20654,7 +20652,6 @@ msgid "Bitmaps"
msgstr "Bitmap"
#: ../src/ui/dialog/inkscape-preferences.cpp:1549
-#, fuzzy
msgid ""
"Select a file of predefined shortcuts to use. Any customized shortcuts you "
"create will be added separately to "
@@ -22299,15 +22296,15 @@ msgid "By: "
msgstr "By: "
#: ../src/ui/dialog/text-edit.cpp:72
-#, fuzzy
msgid "_Variants"
-msgstr "Variazione"
+msgstr "_Varianti"
#: ../src/ui/dialog/text-edit.cpp:73
msgid "Set as _default"
msgstr "Imposta come _predefinito"
#: ../src/ui/dialog/text-edit.cpp:87
+#, fuzzy
msgid "AaBbCcIiPpQq12369$ےے?.;/()"
msgstr "AaBbCcIiPpQq12369$€¢?.;/()"
@@ -23996,7 +23993,7 @@ msgstr "<b>Creazione</b> di una linea calligrafica"
#: ../src/ui/tools/calligraphic-tool.cpp:966
msgid "Draw calligraphic stroke"
-msgstr "Crea linea calligrafiche"
+msgstr "Crea linea calligrafica"
#: ../src/ui/tools/connector-tool.cpp:489
msgid "Creating new connector"
@@ -24146,24 +24143,24 @@ msgstr ""
"b> per riempire al tocco"
#. We hit green anchor, closing Green-Blue-Red
-#: ../src/ui/tools/freehand-base.cpp:677
+#: ../src/ui/tools/freehand-base.cpp:657
msgid "Path is closed."
msgstr "Il tracciato è chiuso."
#. We hit bot start and end of single curve, closing paths
-#: ../src/ui/tools/freehand-base.cpp:692
+#: ../src/ui/tools/freehand-base.cpp:672
msgid "Closing path."
msgstr "Chiusura tracciato."
-#: ../src/ui/tools/freehand-base.cpp:831
+#: ../src/ui/tools/freehand-base.cpp:811
msgid "Draw path"
msgstr "Disegna tracciato"
-#: ../src/ui/tools/freehand-base.cpp:984
+#: ../src/ui/tools/freehand-base.cpp:964
msgid "Creating single dot"
msgstr "Creazione singolo punto"
-#: ../src/ui/tools/freehand-base.cpp:985
+#: ../src/ui/tools/freehand-base.cpp:965
msgid "Create single dot"
msgstr "Crea singolo punto"
@@ -24275,31 +24272,31 @@ msgid "Measure end, <b>Shift+Click</b> for position dialog"
msgstr ""
"Fine misurazione, <b>Maiusc+Clic</b> per aprire la finestra di posizionamento"
-#: ../src/ui/tools/measure-tool.cpp:747 ../share/extensions/measure.inx.h:2
+#: ../src/ui/tools/measure-tool.cpp:746 ../share/extensions/measure.inx.h:2
msgid "Measure"
msgstr "Misura"
-#: ../src/ui/tools/measure-tool.cpp:752
+#: ../src/ui/tools/measure-tool.cpp:751
msgid "Base"
msgstr ""
-#: ../src/ui/tools/measure-tool.cpp:761
+#: ../src/ui/tools/measure-tool.cpp:760
msgid "Add guides from measure tool"
msgstr "Aggiungi guide dallo strumento di misurazione"
-#: ../src/ui/tools/measure-tool.cpp:781
+#: ../src/ui/tools/measure-tool.cpp:780
msgid "Keep last measure on the canvas, for reference"
-msgstr ""
+msgstr "Mantieni ultima misura fantasma sullo spazio di lavoro"
-#: ../src/ui/tools/measure-tool.cpp:801
+#: ../src/ui/tools/measure-tool.cpp:800
msgid "Convert measure to items"
msgstr "Converti misura in oggetto"
-#: ../src/ui/tools/measure-tool.cpp:839
+#: ../src/ui/tools/measure-tool.cpp:838
msgid "Add global measure line"
-msgstr ""
+msgstr "Aggiungi misurazione complessiva"
-#: ../src/ui/tools/measure-tool.cpp:1290 ../src/ui/tools/measure-tool.cpp:1292
+#: ../src/ui/tools/measure-tool.cpp:1289 ../src/ui/tools/measure-tool.cpp:1291
#, c-format
msgid "Crossing %lu"
msgstr "Intersezione %lu"
@@ -24627,12 +24624,12 @@ msgstr ""
msgid "Create rectangle"
msgstr "Crea rettangolo"
-#: ../src/ui/tools/select-tool.cpp:156
+#: ../src/ui/tools/select-tool.cpp:155
msgid "Click selection to toggle scale/rotation handles"
msgstr ""
"Clicca la selezione per alternare le maniglie di ridimensionamento/rotazione"
-#: ../src/ui/tools/select-tool.cpp:157
+#: ../src/ui/tools/select-tool.cpp:156
msgid ""
"No objects selected. Click, Shift+click, Alt+scroll mouse on top of objects, "
"or drag around objects to select."
@@ -24640,15 +24637,15 @@ msgstr ""
"Nessun oggetto selezionato. Clicca, Maiusc+Clic, Alt+scorrimento mouse sugli "
"oggetti, o trascina attorno agli oggetti per selezionare."
-#: ../src/ui/tools/select-tool.cpp:210
+#: ../src/ui/tools/select-tool.cpp:209
msgid "Move canceled."
msgstr "Spostamento cancellato."
-#: ../src/ui/tools/select-tool.cpp:218
+#: ../src/ui/tools/select-tool.cpp:217
msgid "Selection canceled."
msgstr "Selezione cancellata."
-#: ../src/ui/tools/select-tool.cpp:638
+#: ../src/ui/tools/select-tool.cpp:645
msgid ""
"<b>Draw over</b> objects to select them; release <b>Alt</b> to switch to "
"rubberband selection"
@@ -24656,7 +24653,7 @@ msgstr ""
"<b>Disegna</b> sugli oggetti per selezionarli; rilascia <b>Alt</b> per "
"passare alla selezione ad elastico"
-#: ../src/ui/tools/select-tool.cpp:640
+#: ../src/ui/tools/select-tool.cpp:647
msgid ""
"<b>Drag around</b> objects to select them; press <b>Alt</b> to switch to "
"touch selection"
@@ -24664,19 +24661,19 @@ msgstr ""
"<b>Trascina</b> attorno agli oggetti per selezionarli; premi <b>Alt</b> per "
"passare alla selezione col tocco"
-#: ../src/ui/tools/select-tool.cpp:921
+#: ../src/ui/tools/select-tool.cpp:888
msgid "<b>Ctrl</b>: click to select in groups; drag to move hor/vert"
msgstr ""
"<b>Ctrl</b>: clicca per selezionare nei gruppi, trascina per muovere in "
"orizzontale o verticale"
-#: ../src/ui/tools/select-tool.cpp:922
+#: ../src/ui/tools/select-tool.cpp:889
msgid "<b>Shift</b>: click to toggle select; drag for rubberband selection"
msgstr ""
"<b>Maiusc</b>: clicca per commutare la selezione, trascina per usare la "
"selezione ad elastico"
-#: ../src/ui/tools/select-tool.cpp:923
+#: ../src/ui/tools/select-tool.cpp:890
msgid ""
"<b>Alt</b>: click to select under; scroll mouse-wheel to cycle-select; drag "
"to move selected or select by touch"
@@ -24684,7 +24681,7 @@ msgstr ""
"<b>Alt</b>: clicca per selezionare sotto, scorri con il mouse per "
"selezionare in ciclo, trascina per muovere la selezione o seleziona col tocco"
-#: ../src/ui/tools/select-tool.cpp:1131
+#: ../src/ui/tools/select-tool.cpp:1098
msgid "Selected object is not a group. Cannot enter."
msgstr "L'oggetto selezionato non è un gruppo, impossibile entrarvi."
@@ -24943,7 +24940,7 @@ msgstr[1] ""
msgid "Type text"
msgstr "Inserimento testo"
-#: ../src/ui/tools/tool-base.cpp:700
+#: ../src/ui/tools/tool-base.cpp:705
msgid "<b>Space+mouse move</b> to pan canvas"
msgstr "<b>Spazio+spostamento puntatore</b> per muovere la tela"
@@ -25229,7 +25226,7 @@ msgstr "Sfocatura (%)"
#: ../src/ui/widget/font-variants.cpp:38
msgctxt "Font variant"
msgid "Ligatures"
-msgstr ""
+msgstr "Legature"
#: ../src/ui/widget/font-variants.cpp:39
#, fuzzy
@@ -25256,46 +25253,41 @@ msgid "Contextual"
msgstr "Contesto"
#: ../src/ui/widget/font-variants.cpp:44
-#, fuzzy
msgctxt "Font variant"
msgid "Position"
msgstr "Posizione"
#: ../src/ui/widget/font-variants.cpp:45 ../src/ui/widget/font-variants.cpp:50
-#, fuzzy
msgctxt "Font variant"
msgid "Normal"
msgstr "Normale"
#: ../src/ui/widget/font-variants.cpp:46
-#, fuzzy
msgctxt "Font variant"
msgid "Subscript"
-msgstr "Script"
+msgstr "Pedice"
#: ../src/ui/widget/font-variants.cpp:47
-#, fuzzy
msgctxt "Font variant"
msgid "Superscript"
-msgstr "Abilita apice"
+msgstr "Apice"
#: ../src/ui/widget/font-variants.cpp:49
-#, fuzzy
msgctxt "Font variant"
msgid "Capitals"
-msgstr "Ospedale"
+msgstr "Maiuscole"
#: ../src/ui/widget/font-variants.cpp:51
#, fuzzy
msgctxt "Font variant"
msgid "Small"
-msgstr "Piccola"
+msgstr "Piccole"
#: ../src/ui/widget/font-variants.cpp:52
#, fuzzy
msgctxt "Font variant"
msgid "All small"
-msgstr "piccola"
+msgstr "Tutte piccole"
#: ../src/ui/widget/font-variants.cpp:53
msgctxt "Font variant"
@@ -25323,31 +25315,27 @@ msgstr "Vela"
#: ../src/ui/widget/font-variants.cpp:58
msgctxt "Font variant"
msgid "Numeric"
-msgstr ""
+msgstr "Numeri"
#: ../src/ui/widget/font-variants.cpp:59
-#, fuzzy
msgctxt "Font variant"
msgid "Lining"
-msgstr "Diradamento:"
+msgstr "Maiuscoli"
#: ../src/ui/widget/font-variants.cpp:60
-#, fuzzy
msgctxt "Font variant"
msgid "Old Style"
-msgstr "Stile"
+msgstr "Elzeviriani"
#: ../src/ui/widget/font-variants.cpp:61
-#, fuzzy
msgctxt "Font variant"
msgid "Default Style"
-msgstr "Titolo predefinito"
+msgstr "Stile predefinito"
#: ../src/ui/widget/font-variants.cpp:62
-#, fuzzy
msgctxt "Font variant"
msgid "Proportional"
-msgstr "Proporzione schede:"
+msgstr "Proporzionale"
#: ../src/ui/widget/font-variants.cpp:63
msgctxt "Font variant"
@@ -25355,28 +25343,24 @@ msgid "Tabular"
msgstr ""
#: ../src/ui/widget/font-variants.cpp:64
-#, fuzzy
msgctxt "Font variant"
msgid "Default Width"
-msgstr "Titolo predefinito"
+msgstr "Larghezza predefinita"
#: ../src/ui/widget/font-variants.cpp:65
-#, fuzzy
msgctxt "Font variant"
msgid "Diagonal"
-msgstr "Guide diagonali"
+msgstr "Diagonali"
#: ../src/ui/widget/font-variants.cpp:66
-#, fuzzy
msgctxt "Font variant"
msgid "Stacked"
-msgstr "Terminale"
+msgstr "Impilate"
#: ../src/ui/widget/font-variants.cpp:67
-#, fuzzy
msgctxt "Font variant"
msgid "Default Fractions"
-msgstr "Impostazioni predefinite griglia"
+msgstr "Frazioni predefinite"
#: ../src/ui/widget/font-variants.cpp:68
msgctxt "Font variant"
@@ -25386,7 +25370,7 @@ msgstr ""
#: ../src/ui/widget/font-variants.cpp:69
msgctxt "Font variant"
msgid "Slashed Zero"
-msgstr ""
+msgstr "Zero barrato"
#: ../src/ui/widget/font-variants.cpp:71
#, fuzzy
@@ -25418,33 +25402,35 @@ msgstr ""
#. Position ----------------------------------
#. Add tooltips
#: ../src/ui/widget/font-variants.cpp:112
-#, fuzzy
msgid "Normal position."
-msgstr "Posizione X"
+msgstr "Posizione normale."
#: ../src/ui/widget/font-variants.cpp:113
msgid "Subscript. OpenType table: 'subs'"
-msgstr ""
+msgstr "Apice. OpenType table: 'subs'"
#: ../src/ui/widget/font-variants.cpp:114
msgid "Superscript. OpenType table: 'sups'"
-msgstr ""
+msgstr "Pedice. OpenType table: 'sups'"
#. Caps ----------------------------------
#. Add tooltips
#: ../src/ui/widget/font-variants.cpp:138
-#, fuzzy
msgid "Normal capitalization."
-msgstr "Localizzazione"
+msgstr "Maiuscole normali."
#: ../src/ui/widget/font-variants.cpp:139
+#, fuzzy
msgid "Small-caps (lowercase). OpenType table: 'smcp'"
-msgstr ""
+msgstr "Maiuscole piccole (minuscole). OpenType table: 'smcp'"
#: ../src/ui/widget/font-variants.cpp:140
+#, fuzzy
msgid ""
"All small-caps (uppercase and lowercase). OpenType tables: 'c2sc' and 'smcp'"
msgstr ""
+"Tutte maiuscole piccole (maiuscole e minuscole). OpenType table: 'c2sc' e "
+"'smcp'"
#: ../src/ui/widget/font-variants.cpp:141
msgid "Petite-caps (lowercase). OpenType table: 'pcap'"
@@ -25470,43 +25456,40 @@ msgstr ""
#. Numeric ------------------------------
#. Add tooltips
#: ../src/ui/widget/font-variants.cpp:180
-#, fuzzy
msgid "Normal style."
-msgstr "Proiezione normale:"
+msgstr "Stile normale."
#: ../src/ui/widget/font-variants.cpp:181
msgid "Lining numerals. OpenType table: 'lnum'"
-msgstr ""
+msgstr "Numeri maiuscoli. OpenType table: 'lnum'"
#: ../src/ui/widget/font-variants.cpp:182
msgid "Old style numerals. OpenType table: 'onum'"
-msgstr ""
+msgstr "Numeri elzeviriani. OpenType table: 'onum'"
#: ../src/ui/widget/font-variants.cpp:183
-#, fuzzy
msgid "Normal widths."
-msgstr "Luce normale"
+msgstr "Larghezze normali."
#: ../src/ui/widget/font-variants.cpp:184
msgid "Proportional width numerals. OpenType table: 'pnum'"
-msgstr ""
+msgstr "Larghezza numeri proporzionale. OpenType table: 'pnum'"
#: ../src/ui/widget/font-variants.cpp:185
msgid "Same width numerals. OpenType table: 'tnum'"
-msgstr ""
+msgstr "Larghezza numeri fissa. OpenType table: 'tnum'"
#: ../src/ui/widget/font-variants.cpp:186
-#, fuzzy
msgid "Normal fractions."
-msgstr "Ignora rotazione immagini"
+msgstr "Frazioni normali."
#: ../src/ui/widget/font-variants.cpp:187
msgid "Diagonal fractions. OpenType table: 'frac'"
-msgstr ""
+msgstr "Frazioni diagonali. OpenType table: 'frac'"
#: ../src/ui/widget/font-variants.cpp:188
msgid "Stacked fractions. OpenType table: 'afrc'"
-msgstr ""
+msgstr "Frazioni impilate. OpenType table: 'afrc'"
#: ../src/ui/widget/font-variants.cpp:189
msgid "Ordinals (raised 'th', etc.). OpenType table: 'ordn'"
@@ -25514,7 +25497,7 @@ msgstr ""
#: ../src/ui/widget/font-variants.cpp:190
msgid "Slashed zeros. OpenType table: 'zero'"
-msgstr ""
+msgstr "Zeri barrati. OpenType table: 'zero'"
#. Feature settings ---------------------
#. Add tooltips
@@ -28403,18 +28386,16 @@ msgid "Object_s..."
msgstr "Ogge_tti..."
#: ../src/verbs.cpp:2949
-#, fuzzy
msgid "View Objects"
-msgstr "Oggetti"
+msgstr "Visualizza oggetti"
#: ../src/verbs.cpp:2950
msgid "Selection se_ts..."
msgstr "Set di selezione..."
#: ../src/verbs.cpp:2951
-#, fuzzy
msgid "View Tags"
-msgstr "Mostra i livelli"
+msgstr "Visualizza set di selezione"
#: ../src/verbs.cpp:2952
msgid "Path E_ffects ..."
@@ -29786,39 +29767,35 @@ msgstr "Apri finestra LPE (per la modifica dei parametri numerici)"
#: ../src/widgets/measure-toolbar.cpp:157
msgid "Start and end measures inactive."
-msgstr ""
+msgstr "Misura del primo e ultimo punto disattivata."
#: ../src/widgets/measure-toolbar.cpp:159
msgid "Start and end measures active."
-msgstr ""
+msgstr "Misura del primo e ultimo punto attivata."
#: ../src/widgets/measure-toolbar.cpp:175
-#, fuzzy
msgid "Show all crossings."
-msgstr "Mostra tutti i livelli"
+msgstr "Mostra tutte le intersezioni."
#: ../src/widgets/measure-toolbar.cpp:177
msgid "Show visible crossings."
-msgstr ""
+msgstr "Mostra le intersezioni visibili."
#: ../src/widgets/measure-toolbar.cpp:193
msgid "Use all layers in the measure."
-msgstr ""
+msgstr "Usa tutti i livelli nella misurazione."
#: ../src/widgets/measure-toolbar.cpp:195
-#, fuzzy
msgid "Use current layer in the measure."
-msgstr "Sposta il livello attuale in cima"
+msgstr "Usa il livello attuale nella misurazione."
#: ../src/widgets/measure-toolbar.cpp:211
-#, fuzzy
msgid "Compute all elements."
-msgstr "tutorial-elements.svg"
+msgstr "Calcola tutti gli oggetti."
#: ../src/widgets/measure-toolbar.cpp:213
-#, fuzzy
msgid "Compute max length."
-msgstr "Lunghezza tracciato"
+msgstr "Calcola la lunghezza massima."
#: ../src/widgets/measure-toolbar.cpp:274 ../src/widgets/text-toolbar.cpp:1609
msgid "Font Size"
@@ -29846,9 +29823,8 @@ msgid "Decimal precision of measure"
msgstr "Precisione decimale della misura"
#: ../src/widgets/measure-toolbar.cpp:315
-#, fuzzy
msgid "Scale %"
-msgstr "Ridimensionamento x"
+msgstr "Scala %"
#: ../src/widgets/measure-toolbar.cpp:315
msgid "Scale %:"
@@ -29870,9 +29846,8 @@ msgstr "Ignora primo e ultimo punto"
#: ../src/widgets/measure-toolbar.cpp:352
#: ../src/widgets/measure-toolbar.cpp:353
-#, fuzzy
msgid "Show hidden intersections"
-msgstr "intersezione guide"
+msgstr "Mostra intersezioni nascoste"
#: ../src/widgets/measure-toolbar.cpp:363
#: ../src/widgets/measure-toolbar.cpp:364
@@ -30530,7 +30505,7 @@ msgstr "Rx:"
#: ../src/widgets/rect-toolbar.cpp:351
msgid "Horizontal radius of rounded corners"
-msgstr "Raggio orizzontale di un angolo arrotondato"
+msgstr "Raggio orizzontale dell'angolo arrotondato"
#: ../src/widgets/rect-toolbar.cpp:366
msgid "Vertical radius"
@@ -30542,7 +30517,7 @@ msgstr "Ry:"
#: ../src/widgets/rect-toolbar.cpp:366
msgid "Vertical radius of rounded corners"
-msgstr "Raggio verticale di un angolo arrotondato"
+msgstr "Raggio verticale dell'angolo arrotondato"
#: ../src/widgets/rect-toolbar.cpp:385
msgid "Not rounded"
diff --git a/share/extensions/svg_and_media_zip_output.py b/share/extensions/svg_and_media_zip_output.py
index fb1ddd823..e021bfd4e 100755
--- a/share/extensions/svg_and_media_zip_output.py
+++ b/share/extensions/svg_and_media_zip_output.py
@@ -111,7 +111,7 @@ class CompressedMediaOutput(inkex.Effect):
url = urlparse.urlparse(xlink)
href = urllib.url2pathname(url.path)
- if (href != None):
+ if (href != None and os.path.isfile(href)):
absref = os.path.realpath(href)
absref = unicode(absref, "utf-8")
diff --git a/share/keys/Makefile.am b/share/keys/Makefile.am
index f4a08d595..98b720c2b 100644
--- a/share/keys/Makefile.am
+++ b/share/keys/Makefile.am
@@ -9,6 +9,7 @@ keys_DATA = \
adobe-illustrator-cs2.xml \
right-handed-illustration.xml \
corel-draw-x4.xml \
+ corel-draw-x8.xml \
zoner-draw.xml \
acd-canvas.xml
diff --git a/share/keys/corel-draw-x8.xml b/share/keys/corel-draw-x8.xml
new file mode 100644
index 000000000..cd4cf4304
--- /dev/null
+++ b/share/keys/corel-draw-x8.xml
@@ -0,0 +1,175 @@
+<?xml version="1.0"?>
+<keys name="Corel DRAW X8">
+<!--
+This file contains a profile of keyboard shortcuts for Inkscape
+in the style of Corel DRAW X8. See default.xml for more information.
+-->
+
+<!-- File -->
+<bind key="i" modifiers="Ctrl" action="FileImport" display="true"/>
+<bind key="I" modifiers="Ctrl" action="FileImport" />
+
+<bind key="n" modifiers="Ctrl" action="FileNew" display="true"/>
+<bind key="N" modifiers="Ctrl" action="FileNew" />
+
+<bind key="o" modifiers="Ctrl" action="FileOpen" display="true"/>
+<bind key="O" modifiers="Ctrl" action="FileOpen" />
+
+<bind key="p" modifiers="Ctrl" action="FilePrint" display="true"/>
+<bind key="P" modifiers="Ctrl" action="FilePrint" />
+
+<bind key="s" modifiers="Ctrl" action="FileSave" display="true"/>
+<bind key="S" modifiers="Ctrl" action="FileSave" />
+
+<bind key="s" modifiers="Ctrl,Shift" action="FileSaveAs" display="true"/>
+<bind key="S" modifiers="Ctrl,Shift" action="FileSaveAs" />
+
+<!-- Edit -->
+<bind key="c" modifiers="Ctrl" action="EditCopy" display="true"/>
+<bind key="C" modifiers="Ctrl" action="EditCopy" />
+
+<bind key="x" modifiers="Ctrl" action="EditCut" display="true"/>
+<bind key="X" modifiers="Ctrl" action="EditCut" />
+
+<bind key="Delete" action="EditDelete" display="true"/>
+
+<bind key="d" modifiers="Ctrl" action="EditDuplicate" display="true"/>
+<bind key="D" modifiers="Ctrl" action="EditDuplicate" />
+
+<bind key="v" modifiers="Ctrl" action="EditPasteInPlace" display="true" />
+<bind key="V" modifiers="Ctrl" action="EditPasteInPlace" />
+
+<bind key="z" modifiers="Ctrl,Shift" action="EditRedo" display="true"/>
+<bind key="Z" modifiers="Ctrl,Shift" action="EditRedo" />
+
+<bind key="a" modifiers="Ctrl" action="EditSelectAllInAllLayers" display="true"/>
+<bind key="A" modifiers="Ctrl" action="EditSelectAllInAllLayers" />
+
+<bind key="z" modifiers="Ctrl" action="EditUndo" display="true"/>
+<bind key="Z" modifiers="Ctrl" action="EditUndo" />
+
+<!-- Selection -->
+<bind key="k" modifiers="Ctrl" action="SelectionBreakApart" display="true"/>
+<bind key="K" modifiers="Ctrl" action="SelectionBreakApart" />
+
+<bind key="l" modifiers="Ctrl" action="SelectionCombine" display="true"/>
+<bind key="L" modifiers="Ctrl" action="SelectionCombine" />
+
+<bind key="g" modifiers="Ctrl" action="SelectionGroup" display="true"/>
+<bind key="G" modifiers="Ctrl" action="SelectionGroup" />
+
+<bind key="Page_Down" modifiers="Ctrl" action="SelectionLower" display="true" />
+
+<bind key="Page_Up" modifiers="Ctrl" action="SelectionRaise" display="true" />
+
+<bind key="End" modifiers="Ctrl" action="SelectionToBack" display="true" />
+
+<bind key="Home" modifiers="Ctrl" action="SelectionToFront" display="true" />
+
+<bind key="u" modifiers="Ctrl" action="SelectionUnGroup" display="true"/>
+<bind key="U" modifiers="Ctrl" action="SelectionUnGroup" />
+
+<bind key="q" modifiers="Ctrl,Shift" action="StrokeToPath" display="true" />
+<bind key="Q" modifiers="Ctrl,Shift" action="StrokeToPath" />
+
+<!-- Layer -->
+
+
+
+<!-- Object -->
+
+<bind key="q" modifiers="Ctrl" action="ObjectToPath" display="true"/>
+<bind key="Q" modifiers="Ctrl" action="ObjectToPath" />
+
+<!-- Context -->
+
+<bind key="c" action="AlignHorizontalCenter" display="true" />
+<bind key="C" action="AlignHorizontalCenter" />
+
+<bind key="l" action="AlignHorizontalLeft" display="true" />
+<bind key="L" action="AlignHorizontalLeft" />
+
+<bind key="r" action="AlignHorizontalRight" display="true" />
+<bind key="R" action="AlignHorizontalRight" />
+
+<bind key="b" action="AlignVerticalBottom" display="true" />
+<bind key="B" action="AlignVerticalBottom" />
+
+<bind key="e" action="AlignVerticalCenter" display="true" />
+<bind key="E" action="AlignVerticalCenter" />
+
+<bind key="t" action="AlignVerticalTop" display="true" />
+<bind key="T" action="AlignVerticalTop" />
+
+<bind key="F7" action="ToolArc" display="true"/>
+
+<bind key="x" action="ToolEraser" display="true" />
+<bind key="X" action="ToolEraser" />
+
+<bind key="m" action="ToolMesh" display="true" />
+<bind key="M" action="ToolMesh" />
+
+<bind key="F10" action="ToolNode" display="true"/>
+
+<bind key="F12" action="ToolPen" display="true"/>
+
+<bind key="F5" action="ToolPencil" display="true"/>
+
+<bind key="F6" action="ToolRect" display="true"/>
+
+<bind key="A" action="ToolSpiral" display="true"/>
+<bind key="a" action="ToolSpiral" />
+
+<bind key="F8" action="ToolText" display="true"/>
+
+<bind key="z" action="ToolZoom" display="true" />
+<bind key="Z" action="ToolZoom" />
+
+<!-- View -->
+
+<bind key="F9" action="FullScreenFocus" display="true" />
+
+<bind key="F9" modifiers="Shift" action="ViewModeToggle" display="true" />
+
+<bind key="F4" action="ZoomDrawing" display="true"/>
+
+<bind key="F2" action="ZoomIn" display="true" />
+
+<bind key="F3" action="ZoomOut" display="true"/>
+
+<bind key="F4" modifiers="Shift" action="ZoomPage" display="true"/>
+
+<bind key="F2" modifiers="Shift" action="ZoomSelection" display="true" />
+
+<!-- Dialog -->
+<bind key="Enter" modifiers="Alt" action="DialogDocumentProperties" display="true"/>
+
+<bind key="e" modifiers="Ctrl" action="DialogExport" display="true" />
+<bind key="E" modifiers="Ctrl" action="DialogExport" />
+
+<bind key="F11" action="DialogFillStroke" display="true" />
+
+<bind key="f" modifiers="Ctrl" action="DialogFind" display="true" />
+<bind key="F" modifiers="Ctrl" action="DialogFind" />
+
+<bind key="j" modifiers="Ctrl" action="DialogPreferences" display="true"/>
+<bind key="J" modifiers="Ctrl" action="DialogPreferences" />
+
+<bind key="t" modifiers="Ctrl,Shift" action="DialogText" display="true"/>
+<bind key="T" modifiers="Ctrl,Shift" action="DialogText" />
+
+<bind key="F8" modifiers="Alt" action="DialogTransform" display="true" />
+
+<!-- Help -->
+
+
+
+<!-- Extensions -->
+
+<bind key="F1" action="org.inkscape.help.manual" display="true" />
+
+<!-- Filters -->
+
+
+
+</keys>
diff --git a/src/2geom/sbasis-geometric.cpp b/src/2geom/sbasis-geometric.cpp
index 8aaa15144..19eccc451 100644
--- a/src/2geom/sbasis-geometric.cpp
+++ b/src/2geom/sbasis-geometric.cpp
@@ -101,7 +101,7 @@ static SBasis divide_by_t1k(SBasis const &a, int k) {
static D2<SBasis> RescaleForNonVanishingEnds(D2<SBasis> const &MM, double ZERO=1.e-4){
D2<SBasis> M = MM;
//TODO: divide by all the s at once!!!
- while ((M[0].size()>0||M[1].size()>0) &&
+ while ((M[0].size()>1||M[1].size()>1) &&
fabs(M[0].at0())<ZERO &&
fabs(M[1].at0())<ZERO &&
fabs(M[0].at1())<ZERO &&
@@ -109,12 +109,12 @@ static D2<SBasis> RescaleForNonVanishingEnds(D2<SBasis> const &MM, double ZERO=1
M[0] = divide_by_sk(M[0],1);
M[1] = divide_by_sk(M[1],1);
}
- while ((M[0].size()>0||M[1].size()>0) &&
+ while ((M[0].size()>1||M[1].size()>1) &&
fabs(M[0].at0())<ZERO && fabs(M[1].at0())<ZERO){
M[0] = divide_by_t0k(M[0],1);
M[1] = divide_by_t0k(M[1],1);
}
- while ((M[0].size()>0||M[1].size()>0) &&
+ while ((M[0].size()>1||M[1].size()>1) &&
fabs(M[0].at1())<ZERO && fabs(M[1].at1())<ZERO){
M[0] = divide_by_t1k(M[0],1);
M[1] = divide_by_t1k(M[1],1);
@@ -227,9 +227,9 @@ Geom::unitVector(D2<SBasis> const &V_in, double tol, unsigned order){
// -This approach is numerically bad. Find a stable way to rescale V_in to have non vanishing ends.
// -This done, unitVector will have jumps at zeros: fill the gaps with arcs of circles.
D2<SBasis> V = RescaleForNonVanishingEnds(V_in);
-
if (V[0].isZero(0) && V[1].isZero(0))
return Piecewise<D2<SBasis> >(D2<SBasis>(Linear(1),SBasis()));
+
SBasis x = V[0], y = V[1];
SBasis r_eqn1, r_eqn2;
@@ -242,7 +242,6 @@ Geom::unitVector(D2<SBasis> const &V_in, double tol, unsigned order){
r_eqn1 = -(a*x+b*y);
r_eqn2 = Linear(1.)-(a*a+b*b);
-
for (unsigned k=1; k<=order; k++){
double r0 = (k<r_eqn1.size())? r_eqn1.at(k).at0() : 0;
double r1 = (k<r_eqn1.size())? r_eqn1.at(k).at1() : 0;
diff --git a/src/live_effects/lpe-powerstroke.cpp b/src/live_effects/lpe-powerstroke.cpp
index 03102a84a..66c8776b5 100644
--- a/src/live_effects/lpe-powerstroke.cpp
+++ b/src/live_effects/lpe-powerstroke.cpp
@@ -35,6 +35,7 @@
#include <2geom/ellipse.h>
#include <2geom/circle.h>
#include <2geom/math-utils.h>
+#include "helper/geom.h"
#include <math.h>
#include "spiro.h"
@@ -205,14 +206,13 @@ LPEPowerStroke::~LPEPowerStroke()
}
-
void
LPEPowerStroke::doOnApply(SPLPEItem const* lpeitem)
{
- if (SP_IS_SHAPE(lpeitem)) {
+ if (SP_IS_SHAPE(lpeitem) && offset_points.data().empty()) {
SPLPEItem* item = const_cast<SPLPEItem*>(lpeitem);
std::vector<Geom::Point> points;
- Geom::PathVector const &pathv = SP_SHAPE(lpeitem)->_curve->get_pathvector();
+ Geom::PathVector const &pathv = pathv_to_linear_and_cubic_beziers(SP_SHAPE(lpeitem)->_curve->get_pathvector());
double width = (lpeitem && lpeitem->style) ? lpeitem->style->stroke_width.computed / 2 : 1.;
SPCSSAttr *css = sp_repr_css_attr_new ();
@@ -565,12 +565,11 @@ LPEPowerStroke::doEffect_path (Geom::PathVector const & path_in)
if (path_in.empty()) {
return path_out;
}
-
- // for now, only regard first subpath and ignore the rest
- Geom::Piecewise<Geom::D2<Geom::SBasis> > pwd2_in = path_in[0].toPwSb();
-
+ Geom::PathVector pathv = pathv_to_linear_and_cubic_beziers(path_in);
+ Geom::Piecewise<Geom::D2<Geom::SBasis> > pwd2_in = pathv[0].toPwSb();
Piecewise<D2<SBasis> > der = derivative(pwd2_in);
- Piecewise<D2<SBasis> > n = rot90(unitVector(der));
+ Piecewise<D2<SBasis> > n = unitVector(der,0.0001);
+ n = rot90(n);
offset_points.set_pwd2(pwd2_in, n);
LineCapType end_linecap = static_cast<LineCapType>(end_linecap_type.get_value());
@@ -583,7 +582,7 @@ LPEPowerStroke::doEffect_path (Geom::PathVector const & path_in)
if (sort_points) {
sort(ts.begin(), ts.end(), compare_offsets);
}
- if (path_in[0].closed()) {
+ if (pathv[0].closed()) {
// add extra points for interpolation between first and last point
Point first_point = ts.front();
Point last_point = ts.back();
@@ -605,7 +604,6 @@ LPEPowerStroke::doEffect_path (Geom::PathVector const & path_in)
for (std::size_t i = 0, e = ts.size(); i < e; ++i) {
ts[i][Geom::X] *= xcoord_scaling;
}
-
// create stroke path where points (x,y) := (t, offset)
Geom::Interpolate::Interpolator *interpolator = Geom::Interpolate::Interpolator::create(static_cast<Geom::Interpolate::InterpolatorType>(interpolator_type.get_value()));
if (Geom::Interpolate::CubicBezierJohan *johan = dynamic_cast<Geom::Interpolate::CubicBezierJohan*>(interpolator)) {
@@ -631,7 +629,6 @@ LPEPowerStroke::doEffect_path (Geom::PathVector const & path_in)
x = portion(x, rtsmin.at(0), rtsmax.at(0));
y = portion(y, rtsmin.at(0), rtsmax.at(0));
}
-
LineJoinType jointype = static_cast<LineJoinType>(linejoin_type.get_value());
Piecewise<D2<SBasis> > pwd2_out = compose(pwd2_in,x) + y*compose(n,x);
@@ -639,8 +636,7 @@ LPEPowerStroke::doEffect_path (Geom::PathVector const & path_in)
Geom::Path fixed_path = path_from_piecewise_fix_cusps( pwd2_out, y, jointype, miter_limit, LPE_CONVERSION_TOLERANCE);
Geom::Path fixed_mirrorpath = path_from_piecewise_fix_cusps( mirrorpath, reverse(y), jointype, miter_limit, LPE_CONVERSION_TOLERANCE);
-
- if (path_in[0].closed()) {
+ if (pathv[0].closed()) {
fixed_path.close(true);
path_out.push_back(fixed_path);
fixed_mirrorpath.close(true);
@@ -684,7 +680,6 @@ LPEPowerStroke::doEffect_path (Geom::PathVector const & path_in)
}
fixed_path.append(fixed_mirrorpath);
-
switch (start_linecap) {
case LINECAP_ZERO_WIDTH:
// do nothing
@@ -720,11 +715,9 @@ LPEPowerStroke::doEffect_path (Geom::PathVector const & path_in)
break;
}
}
-
fixed_path.close(true);
path_out.push_back(fixed_path);
}
-
return path_out;
}
diff --git a/src/ui/tools/freehand-base.cpp b/src/ui/tools/freehand-base.cpp
index c98ecb686..7697cd59c 100644
--- a/src/ui/tools/freehand-base.cpp
+++ b/src/ui/tools/freehand-base.cpp
@@ -236,38 +236,14 @@ static void spdc_apply_powerstroke_shape(const std::vector<Geom::Point> & points
Effect* lpe = SP_LPE_ITEM(item)->getCurrentLPE();
static_cast<LPEPowerStroke*>(lpe)->offset_points.param_set_and_write_new_value(points);
- // find out stroke width (TODO: is there an easier way??)
- SPDesktop *desktop = dc->desktop;
- Inkscape::XML::Document *xml_doc = desktop->doc()->getReprDoc();
- Inkscape::XML::Node *repr = xml_doc->createElement("svg:path");
- Inkscape::GC::release(repr);
-
- char const* tool = SP_IS_PEN_CONTEXT(dc) ? "/tools/freehand/pen" : "/tools/freehand/pencil";
-
- // apply the tool's current style
- sp_desktop_apply_style_tool(desktop, repr, tool, false);
-
- double stroke_width = 1.0;
- char const *style_str = NULL;
- style_str = repr->attribute("style");
- if (style_str) {
- SPStyle style(SP_ACTIVE_DOCUMENT);
- style.mergeString(style_str);
- stroke_width = style.stroke_width.computed;
- }
-
- std::ostringstream s;
- s.imbue(std::locale::classic());
- s << points[0][Geom::X] << "," << stroke_width / 2.;
-
// write powerstroke parameters:
lpe->getRepr()->setAttribute("start_linecap_type", "zerowidth");
lpe->getRepr()->setAttribute("end_linecap_type", "zerowidth");
- lpe->getRepr()->setAttribute("cusp_linecap_type", "round");
lpe->getRepr()->setAttribute("sort_points", "true");
lpe->getRepr()->setAttribute("interpolator_type", "CubicBezierJohan");
lpe->getRepr()->setAttribute("interpolator_beta", "0.2");
- lpe->getRepr()->setAttribute("offset_points", s.str().c_str());
+ lpe->getRepr()->setAttribute("miter_limit", "4");
+ lpe->getRepr()->setAttribute("linejoin_type", "extrp_arc");
}
static void spdc_apply_bend_shape(gchar const *svgd, FreehandBase *dc, SPItem *item)
@@ -341,12 +317,14 @@ static void spdc_check_for_and_apply_waiting_LPE(FreehandBase *dc, SPItem *item,
bool shape_applied = false;
SPCSSAttr *css_item = sp_css_attr_from_object(item, SP_STYLE_FLAG_ALWAYS);
const char *cstroke = sp_repr_css_property(css_item, "stroke", "none");
+ const char *stroke_width = sp_repr_css_property(css_item, "stroke-width", "0");
+ double swidth;
+ sp_svg_number_read_d(stroke_width, &swidth);
static SPItem *bend_item;
#define SHAPE_LENGTH 10
#define SHAPE_HEIGHT 10
-
if(shape == LAST_APPLIED){
shape = previous_shape_type;
@@ -363,7 +341,8 @@ static void spdc_check_for_and_apply_waiting_LPE(FreehandBase *dc, SPItem *item,
{
// "triangle in"
std::vector<Geom::Point> points(1);
- points[0] = Geom::Point(0., SHAPE_HEIGHT/2);
+ points[0] = Geom::Point(0., swidth/2);
+ points[0] *= i2anc_affine(static_cast<SPItem *>(item->parent), NULL).inverse();
spdc_apply_powerstroke_shape(points, dc, item);
shape_applied = true;
@@ -374,7 +353,9 @@ static void spdc_check_for_and_apply_waiting_LPE(FreehandBase *dc, SPItem *item,
// "triangle out"
guint curve_length = curve->get_segment_count();
std::vector<Geom::Point> points(1);
- points[0] = Geom::Point((double)curve_length, SHAPE_HEIGHT/2);
+ points[0] = Geom::Point(0, swidth/2);
+ points[0] *= i2anc_affine(static_cast<SPItem *>(item->parent), NULL).inverse();
+ points[0][Geom::X] = (double)curve_length;
spdc_apply_powerstroke_shape(points, dc, item);
shape_applied = true;
@@ -455,7 +436,6 @@ static void spdc_check_for_and_apply_waiting_LPE(FreehandBase *dc, SPItem *item,
if(previous_shape_type == CLIPBOARD){
if(previous_shape_pathv.size() != 0){
spdc_paste_curve_as_freehand_shape(previous_shape_pathv, dc, item);
-
shape_applied = true;
shape = CLIPBOARD;
} else{
diff --git a/src/ui/tools/measure-tool.cpp b/src/ui/tools/measure-tool.cpp
index 0977729ae..63e2460ec 100644
--- a/src/ui/tools/measure-tool.cpp
+++ b/src/ui/tools/measure-tool.cpp
@@ -346,13 +346,13 @@ MeasureTool::MeasureTool()
end_p = readMeasurePoint(false);
dimension_offset = 35;
// create the knots
- this->knot_start = new SPKnot(desktop, N_("Measure start, <b>Shift+Click</b> for position dialog"));
+ this->knot_start = new SPKnot(desktop, _("Measure start, <b>Shift+Click</b> for position dialog"));
this->knot_start->setMode(SP_KNOT_MODE_XOR);
this->knot_start->setFill(MT_KNOT_COLOR_NORMAL, MT_KNOT_COLOR_MOUSEOVER, MT_KNOT_COLOR_MOUSEOVER);
this->knot_start->setStroke(0x0000007f, 0x0000007f, 0x0000007f);
this->knot_start->setShape(SP_KNOT_SHAPE_CIRCLE);
this->knot_start->updateCtrl();
- this->knot_end = new SPKnot(desktop, N_("Measure end, <b>Shift+Click</b> for position dialog"));
+ this->knot_end = new SPKnot(desktop, _("Measure end, <b>Shift+Click</b> for position dialog"));
this->knot_end->setMode(SP_KNOT_MODE_XOR);
this->knot_end->setFill(MT_KNOT_COLOR_NORMAL, MT_KNOT_COLOR_MOUSEOVER, MT_KNOT_COLOR_MOUSEOVER);
this->knot_end->setStroke(0x0000007f, 0x0000007f, 0x0000007f);
diff --git a/src/ui/tools/select-tool.cpp b/src/ui/tools/select-tool.cpp
index 905e38f2b..b5ec3d88e 100644
--- a/src/ui/tools/select-tool.cpp
+++ b/src/ui/tools/select-tool.cpp
@@ -65,7 +65,7 @@ static gint rb_escaped = 0; // if non-zero, rubberband was canceled by esc, so t
static gint drag_escaped = 0; // if non-zero, drag was canceled by esc
const std::string& SelectTool::getPrefsPath() {
- return SelectTool::prefsPath;
+ return SelectTool::prefsPath;
}
const std::string SelectTool::prefsPath = "/tools/select";
@@ -111,7 +111,6 @@ SelectTool::SelectTool()
//static gint tolerance = 0;
//static bool within_tolerance = false;
static bool is_cycling = false;
-static bool moved_while_cycling = false;
SelectTool::~SelectTool() {
@@ -297,7 +296,7 @@ bool SelectTool::item_handler(SPItem* item, GdkEvent* event) {
} else {
GdkWindow* window = gtk_widget_get_window (GTK_WIDGET (desktop->getCanvas()));
- this->dragging = TRUE;
+ this->dragging = TRUE;
this->moved = FALSE;
gdk_window_set_cursor(window, CursorSelectDragging);
@@ -347,11 +346,11 @@ bool SelectTool::item_handler(SPItem* item, GdkEvent* event) {
break;
}
case GDK_LEAVE_NOTIFY:
- if (!desktop->isWaitingCursor() && !this->dragging) {
+ if (!desktop->isWaitingCursor() && !this->dragging) {
GdkWindow* window = gtk_widget_get_window (GTK_WIDGET (desktop->getCanvas()));
gdk_window_set_cursor(window, this->cursor);
- }
+ }
break;
case GDK_KEY_PRESS:
@@ -379,61 +378,75 @@ bool SelectTool::item_handler(SPItem* item, GdkEvent* event) {
}
if (!ret) {
- ret = ToolBase::item_handler(item, event);
+ ret = ToolBase::item_handler(item, event);
}
return ret;
}
void SelectTool::sp_select_context_cycle_through_items(Inkscape::Selection *selection, GdkEventScroll *scroll_event, bool shift_pressed) {
- if (this->cycling_cur_item == this->cycling_items.end()) {
+ if ( this->cycling_items.empty() )
return;
- }
Inkscape::DrawingItem *arenaitem;
- SPItem *item = *cycling_cur_item;
- g_assert(item != NULL);
- // Deactivate current item
- if (std::find(cycling_items_selected_before.begin(), cycling_items_selected_before.end(), item) == cycling_items_selected_before.end() && selection->includes(item)) {
- selection->remove(item);
+ if(cycling_cur_item) {
+ arenaitem = cycling_cur_item->get_arenaitem(desktop->dkey);
+ arenaitem->setOpacity(0.3);
}
- arenaitem = item->get_arenaitem(desktop->dkey);
- arenaitem->setOpacity(0.3);
-
// Find next item and activate it
- std::vector<SPItem *>::iterator next = this->cycling_cur_item;
+
+
+ std::vector<SPItem *>::iterator next = cycling_items.end();
+
if (scroll_event->direction == GDK_SCROLL_UP) {
- ++next;
- if (next == this->cycling_items.end() && this->cycling_wrap) {
- next = this->cycling_items.begin();
+ if (! cycling_cur_item) {
+ next = cycling_items.begin();
+ } else {
+ next = std::find( cycling_items.begin(), cycling_items.end(), cycling_cur_item );
+ g_assert (next != cycling_items.end());
+ next++;
+ if (next == cycling_items.end())
+ if ( cycling_wrap )
+ next = cycling_items.begin();
+ else
+ next--;
}
- } else {
- if(next == this->cycling_items.begin()) {
- next = this->cycling_items.end();
+ } else {
+ if (! cycling_cur_item) {
+ next = cycling_items.end();
+ next--;
+ } else {
+ next = std::find( cycling_items.begin(), cycling_items.end(), cycling_cur_item );
+ g_assert (next != cycling_items.end());
+ if (next == cycling_items.begin()){
+ if ( cycling_wrap ) {
+ next = cycling_items.end();
+ next--;
+ }
+ } else {
+ next--;
+ }
}
- --next;
}
- if (next!=this->cycling_items.end()) {
- this->cycling_cur_item = next;
- item = *next;
- g_assert(item != NULL);
- }
+ this->cycling_cur_item = *next;
+ g_assert(next != cycling_items.end());
+ g_assert(cycling_cur_item != NULL);
- arenaitem = item->get_arenaitem(desktop->dkey);
+ arenaitem = cycling_cur_item->get_arenaitem(desktop->dkey);
arenaitem->setOpacity(1.0);
if (shift_pressed) {
- selection->add(item);
+ selection->add(cycling_cur_item);
} else {
- selection->set(item);
+ selection->set(cycling_cur_item);
}
}
void SelectTool::sp_select_context_reset_opacities() {
- for (std::vector<SPItem *>::const_iterator l = this->cycling_items.begin(); l != this->cycling_items.end(); ++l ) {
+ for (std::vector<SPItem *>::const_iterator l = this->cycling_items_cmp.begin(); l != this->cycling_items_cmp.end(); ++l ) {
SPItem *item = *l;
if (item) {
Inkscape::DrawingItem *arenaitem = item->get_arenaitem(desktop->dkey);
@@ -443,10 +456,8 @@ void SelectTool::sp_select_context_reset_opacities() {
}
}
- this->cycling_items.clear();
- this->cycling_items_selected_before.clear();
- this->cycling_cur_item = this->cycling_items.end();
this->cycling_items_cmp.clear();
+ this->cycling_cur_item = NULL;
}
bool SelectTool::root_handler(GdkEvent* event) {
@@ -533,11 +544,7 @@ bool SelectTool::root_handler(GdkEvent* event) {
case GDK_MOTION_NOTIFY:
{
- if (is_cycling) {
- moved_while_cycling = true;
- }
-
- tolerance = prefs->getIntLimited("/options/dragtolerance/value", 0, 0, 100);
+ tolerance = prefs->getIntLimited("/options/dragtolerance/value", 0, 0, 100);
if ((event->motion.state & GDK_BUTTON1_MASK) && !this->space_panning) {
Geom::Point const motion_pt(event->motion.x, event->motion.y);
@@ -703,7 +710,7 @@ bool SelectTool::root_handler(GdkEvent* event) {
if (r->is_started() && !within_tolerance) {
// this was a rubberband drag
- std::vector<SPItem*> items;
+ std::vector<SPItem*> items;
if (r->getMode() == RUBBERBAND_MODE_RECT) {
Geom::OptRect const b = r->getRectangle();
@@ -796,107 +803,67 @@ bool SelectTool::root_handler(GdkEvent* event) {
break;
case GDK_SCROLL: {
- GdkEventScroll *scroll_event = (GdkEventScroll*) event;
-
- if (scroll_event->state & GDK_MOD1_MASK) { // alt modified pressed
- if (moved_while_cycling) {
- moved_while_cycling = false;
- this->sp_select_context_reset_opacities();
- }
-
- is_cycling = true;
-
- bool shift_pressed = scroll_event->state & GDK_SHIFT_MASK;
-
- /* Rebuild list of items underneath the mouse pointer */
- Geom::Point p = desktop->d2w(desktop->point());
- SPItem *item = desktop->getItemAtPoint(p, true, NULL);
-
- // Save pointer to current cycle-item so that we can find it again later, in the freshly built list
- SPItem *tmp_cur_item = this->cycling_cur_item!=this->cycling_items.end() ? (*(this->cycling_cur_item)) : NULL;
- this->cycling_items.clear();
- this->cycling_cur_item = this->cycling_items.end();
- while(item != NULL) {
- this->cycling_items.push_back(item);
- item = desktop->getItemAtPoint(p, true, item);
- }
-
- /* Compare current item list with item list during previous scroll ... */
- bool item_lists_differ = this->cycling_items != this->cycling_items_cmp;
- /* If list of items under mouse pointer hasn't changed ... */
- if (!item_lists_differ) {
- // ... find current item in the freshly built list and continue cycling ...
- // TODO: This wouldn't be necessary if cycling_cur_item pointed to an element of cycling_items_cmp instead
- this->cycling_cur_item = std::find(this->cycling_items.begin(), this->cycling_items.end(), tmp_cur_item);
- g_assert(this->cycling_cur_item != this->cycling_items.end() || this->cycling_items.empty());
- } else {
- // ... otherwise reset opacities for outdated items ...
- Inkscape::DrawingItem *arenaitem;
-
- for (std::vector<SPItem *>::const_iterator l = this->cycling_items_cmp.begin(); l != this->cycling_items_cmp.end(); ++l) {
- SPItem *item = *l;
- if (item) {
- arenaitem = item->get_arenaitem(desktop->dkey);
- arenaitem->setOpacity(1.0);
- //if (!shift_pressed && !g_list_find(this->cycling_items_selected_before, item) && selection->includes(item))
- if (std::find(this->cycling_items_selected_before.begin(),this->cycling_items_selected_before.end(), item)==this->cycling_items_selected_before.end() && selection->includes(item)) {
- selection->remove(item);
- }
- }
- }
+ GdkEventScroll *scroll_event = (GdkEventScroll*) event;
- // ... clear the lists ...
+ if ( ! (scroll_event->state & GDK_MOD1_MASK)) // do nothing specific if alt was not pressed
+ break;
- this->cycling_items_cmp.clear();
- this->cycling_items_selected_before.clear();
- this->cycling_cur_item = this->cycling_items.end();
+ bool shift_pressed = scroll_event->state & GDK_SHIFT_MASK;
+ is_cycling = true;
- // ... and rebuild them with the new items.
- this->cycling_items_cmp = (this->cycling_items);
+ /* Rebuild list of items underneath the mouse pointer */
+ Geom::Point p = desktop->d2w(desktop->point());
+ SPItem *item = desktop->getItemAtPoint(p, true, NULL);
+ this->cycling_items.clear();
- for(std::vector<SPItem *>::const_iterator l = this->cycling_items.begin(); l != this->cycling_items.end(); ++l) {
- SPItem *item =*l;
- if (item) {
- arenaitem = item->get_arenaitem(desktop->dkey);
- arenaitem->setOpacity(0.3);
+ SPItem *tmp = NULL;
+ while(item != NULL) {
+ this->cycling_items.push_back(item);
+ item = desktop->getItemAtPoint(p, true, item);
+ if (selection->includes(item)) tmp = item;
+ }
- if (selection->includes(item)) {
- // already selected items are stored separately, too
- this->cycling_items_selected_before.push_back(item);
- }
- } else {
- g_assert_not_reached();
- }
+ /* Compare current item list with item list during previous scroll ... */
+ bool item_lists_differ = this->cycling_items != this->cycling_items_cmp;
+
+ if(item_lists_differ) {
+ this->sp_select_context_reset_opacities();
+ for (std::vector<SPItem *>::const_iterator l = this->cycling_items_cmp.begin(); l != this->cycling_items_cmp.end(); ++l)
+ selection->remove(*l); // deselects the previous content of the cycling loop
+ this->cycling_items_cmp = (this->cycling_items);
+
+ // set opacities in new stack
+ for(std::vector<SPItem *>::const_iterator l = this->cycling_items.begin(); l != this->cycling_items.end(); ++l) {
+ SPItem *item =*l;
+ if (item) {
+ Inkscape::DrawingItem *arenaitem = item->get_arenaitem(desktop->dkey);
+ arenaitem->setOpacity(0.3);
}
-
- // set the current item to the bottommost one so that the cycling step below re-starts at the top
- this->cycling_cur_item = this->cycling_items.end();
- this->cycling_cur_item--;
}
+ }
+ if(!cycling_cur_item) cycling_cur_item = tmp;
- this->cycling_wrap = prefs->getBool("/options/selection/cycleWrap", true);
+ this->cycling_wrap = prefs->getBool("/options/selection/cycleWrap", true);
- // Cycle through the items underneath the mouse pointer, one-by-one
- this->sp_select_context_cycle_through_items(selection, scroll_event, shift_pressed);
+ // Cycle through the items underneath the mouse pointer, one-by-one
+ this->sp_select_context_cycle_through_items(selection, scroll_event, shift_pressed);
- ret = TRUE;
+ ret = TRUE;
- GtkWindow *w =GTK_WINDOW(gtk_widget_get_toplevel( GTK_WIDGET(desktop->canvas) ));
- if (w)
- {
- gtk_window_present(w);
- gtk_widget_grab_focus (GTK_WIDGET(desktop->canvas));
- }
+ GtkWindow *w =GTK_WINDOW(gtk_widget_get_toplevel( GTK_WIDGET(desktop->canvas) ));
+ if (w) {
+ gtk_window_present(w);
+ gtk_widget_grab_focus (GTK_WIDGET(desktop->canvas));
}
break;
}
case GDK_KEY_PRESS: // keybindings for select context
- {
- {
- guint keyval = get_group0_keyval(&event->key);
-
+ {
+ {
+ guint keyval = get_group0_keyval(&event->key);
+
bool alt = ( MOD__ALT(event)
|| (keyval == GDK_KEY_Alt_L)
|| (keyval == GDK_KEY_Alt_R)
@@ -924,7 +891,7 @@ bool SelectTool::root_handler(GdkEvent* event) {
// if Alt and nonempty selection, show moving cursor ("move selected"):
if (alt && !selection->isEmpty() && !desktop->isWaitingCursor()) {
- GdkWindow* window = gtk_widget_get_window (GTK_WIDGET (desktop->getCanvas()));
+ GdkWindow* window = gtk_widget_get_window (GTK_WIDGET (desktop->getCanvas()));
gdk_window_set_cursor(window, CursorSelectDragging);
}
@@ -945,15 +912,15 @@ bool SelectTool::root_handler(GdkEvent* event) {
if (MOD__ALT(event)) { // alt
if (MOD__SHIFT(event)) {
- sp_selection_move_screen(desktop->getSelection(), mul*-10, 0); // shift
+ sp_selection_move_screen(desktop->getSelection(), mul*-10, 0); // shift
} else {
- sp_selection_move_screen(desktop->getSelection(), mul*-1, 0); // no shift
+ sp_selection_move_screen(desktop->getSelection(), mul*-1, 0); // no shift
}
} else { // no alt
if (MOD__SHIFT(event)) {
- sp_selection_move(desktop->getSelection(), mul*-10*nudge, 0); // shift
+ sp_selection_move(desktop->getSelection(), mul*-10*nudge, 0); // shift
} else {
- sp_selection_move(desktop->getSelection(), mul*-nudge, 0); // no shift
+ sp_selection_move(desktop->getSelection(), mul*-nudge, 0); // no shift
}
}
@@ -968,15 +935,15 @@ bool SelectTool::root_handler(GdkEvent* event) {
if (MOD__ALT(event)) { // alt
if (MOD__SHIFT(event)) {
- sp_selection_move_screen(desktop->getSelection(), 0, mul*10); // shift
+ sp_selection_move_screen(desktop->getSelection(), 0, mul*10); // shift
} else {
- sp_selection_move_screen(desktop->getSelection(), 0, mul*1); // no shift
+ sp_selection_move_screen(desktop->getSelection(), 0, mul*1); // no shift
}
} else { // no alt
if (MOD__SHIFT(event)) {
- sp_selection_move(desktop->getSelection(), 0, mul*10*nudge); // shift
+ sp_selection_move(desktop->getSelection(), 0, mul*10*nudge); // shift
} else {
- sp_selection_move(desktop->getSelection(), 0, mul*nudge); // no shift
+ sp_selection_move(desktop->getSelection(), 0, mul*nudge); // no shift
}
}
@@ -991,15 +958,15 @@ bool SelectTool::root_handler(GdkEvent* event) {
if (MOD__ALT(event)) { // alt
if (MOD__SHIFT(event)) {
- sp_selection_move_screen(desktop->getSelection(), mul*10, 0); // shift
+ sp_selection_move_screen(desktop->getSelection(), mul*10, 0); // shift
} else {
- sp_selection_move_screen(desktop->getSelection(), mul*1, 0); // no shift
+ sp_selection_move_screen(desktop->getSelection(), mul*1, 0); // no shift
}
} else { // no alt
if (MOD__SHIFT(event)) {
- sp_selection_move(desktop->getSelection(), mul*10*nudge, 0); // shift
+ sp_selection_move(desktop->getSelection(), mul*10*nudge, 0); // shift
} else {
- sp_selection_move(desktop->getSelection(), mul*nudge, 0); // no shift
+ sp_selection_move(desktop->getSelection(), mul*nudge, 0); // no shift
}
}
@@ -1014,15 +981,15 @@ bool SelectTool::root_handler(GdkEvent* event) {
if (MOD__ALT(event)) { // alt
if (MOD__SHIFT(event)) {
- sp_selection_move_screen(desktop->getSelection(), 0, mul*-10); // shift
+ sp_selection_move_screen(desktop->getSelection(), 0, mul*-10); // shift
} else {
- sp_selection_move_screen(desktop->getSelection(), 0, mul*-1); // no shift
+ sp_selection_move_screen(desktop->getSelection(), 0, mul*-1); // no shift
}
} else { // no alt
if (MOD__SHIFT(event)) {
- sp_selection_move(desktop->getSelection(), 0, mul*-10*nudge); // shift
+ sp_selection_move(desktop->getSelection(), 0, mul*-10*nudge); // shift
} else {
- sp_selection_move(desktop->getSelection(), 0, mul*-nudge); // no shift
+ sp_selection_move(desktop->getSelection(), 0, mul*-nudge); // no shift
}
}
@@ -1166,7 +1133,7 @@ bool SelectTool::root_handler(GdkEvent* event) {
break;
}
break;
- }
+ }
case GDK_KEY_RELEASE: {
guint keyval = get_group0_keyval(&event->key);
if (key_is_a_modifier (keyval)) {
@@ -1207,7 +1174,7 @@ bool SelectTool::root_handler(GdkEvent* event) {
}
if (!ret) {
- ret = ToolBase::root_handler(event);
+ ret = ToolBase::root_handler(event);
}
return ret;
diff --git a/src/ui/tools/select-tool.h b/src/ui/tools/select-tool.h
index af183b1ca..420374661 100644
--- a/src/ui/tools/select-tool.h
+++ b/src/ui/tools/select-tool.h
@@ -42,8 +42,7 @@ public:
std::vector<SPItem *> cycling_items;
std::vector<SPItem *> cycling_items_cmp;
- std::vector<SPItem *> cycling_items_selected_before;
- std::vector<SPItem *>::iterator cycling_cur_item;
+ SPItem *cycling_cur_item;
bool cycling_wrap;
SPItem *item;