Merge lp:~chr0x07/inkscape/0.92.fixes.2 into lp:inkscape/0.92.x
- 0.92.fixes.2
- Merge into 0.92.x-bzr
Status: | Merged | ||||
---|---|---|---|---|---|
Merged at revision: | 15430 | ||||
Proposed branch: | lp:~chr0x07/inkscape/0.92.fixes.2 | ||||
Merge into: | lp:inkscape/0.92.x | ||||
Diff against target: |
732 lines (+225/-73) 17 files modified
share/icons/icons.svg (+24/-0) src/live_effects/lpe-bspline.cpp (+1/-0) src/live_effects/parameter/path.cpp (+2/-1) src/path-chemistry.cpp (+2/-1) src/selection-chemistry.cpp (+62/-2) src/selection-chemistry.h (+2/-0) src/sp-item-group.cpp (+1/-0) src/sp-item.cpp (+6/-2) src/sp-item.h (+2/-2) src/sp-pattern.cpp (+4/-2) src/ui/dialog/objects.cpp (+75/-44) src/ui/dialog/objects.h (+4/-1) src/ui/widget/clipmaskicon.cpp (+12/-12) src/ui/widget/clipmaskicon.h (+2/-2) src/verbs.cpp (+14/-0) src/verbs.h (+2/-0) src/widgets/stroke-marker-selector.cpp (+10/-4) |
||||
To merge this branch: | bzr merge lp:~chr0x07/inkscape/0.92.fixes.2 | ||||
Related bugs: |
|
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Mc | Approve | ||
Review via email: mp+324218@code.launchpad.net |
Commit message
Description of the change
Support Raise and Lower (z-order) for non-overlapping objects
To generate CNC data with inkscape we want to order objects by z-order
bugfixes object manager panel:
- It uses raise/lower which is clearly a bug
- polish behavior regarding collapsing/
- disable search function which eats many keystrokes: use ctrl+f to use it
- fix some memory leaks
- fix: speed up inkscape startup time
(due to missing icons / non cached icons)
(~2 seconds left: stroke-panel/arrow marker ....)
Note: this no more modifies default key strokes, you can assign the keystrokes you like to the new functions.
chr[] (chr0x07) wrote : | # |
Patrick Storz (ede123) wrote : | # |
Could you maybe just "bzr revert CMakeScripts/
I guess this has to do with Bazaar storing something like an inode number for each file, so even if a file has the same content it will show as a conflict (stupid, but that's just the way bzr is ;-) )
I recently had to explicitly delete and recreate that file as it was impossible to merge changes from trunk otherwise (bzr insisted it were different files, even when the content was identical, because they were created "individually" after branching 0.92.x)
chr[] (chr0x07) wrote : | # |
so, the diff looks all right now
Mc (mc...) : | # |
Preview Diff
1 | === modified file 'share/icons/icons.svg' |
2 | --- share/icons/icons.svg 2016-12-15 13:03:33 +0000 |
3 | +++ share/icons/icons.svg 2017-05-17 23:30:53 +0000 |
4 | @@ -4323,4 +4323,28 @@ |
5 | </g> |
6 | </g> |
7 | </g> |
8 | +<g id="object-clipped" transform="translate(238.8904,209.8666)"> |
9 | +<rect transform="rotate(90)" style="opacity:1;vector-effect:none;fill:#9ab8d5;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.99999988;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:1.5;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal" id="rect5272" width="16.00001" height="15.99999" x="159.1449" y="-92.158638" /> |
10 | +<path d="m -98.444747,-168.45699 a 12.6149,12.6149 0 0 1 13.078074,12.08243 l -12.60403,0.52356 z" sodipodi:end="6.24167" sodipodi:start="4.674802" sodipodi:ry="12.6149" sodipodi:rx="12.6149" sodipodi:cy="-155.851" sodipodi:cx="-97.970703" sodipodi:type="arc" id="path5274" style="display:inline;opacity:1;vector-effect:none;fill:#ffffff;fill-opacity:0.99335549;fill-rule:nonzero;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:1.20000005;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal" transform="rotate(-177.7077)" /> |
11 | +<rect y="-91.658653" x="159.6449" height="15" width="15" id="rect5276" style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#c80000;stroke-width:1.00000012;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:1.5;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal" transform="rotate(90)" /> |
12 | +</g> |
13 | +<g transform="matrix(1.034469,0,0,1.034469,199.9323,-218.0428)" id="object-masked" style="stroke-width:0.96667951"> |
14 | +<g style="stroke-width:0.96667659" transform="matrix(1.000013,0,0,0.9999918,121.4104,415.3122)" id="g5284"> |
15 | +<path style="opacity:1;vector-effect:none;fill:#9ab8d5;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.45001554;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:1.5;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal" d="m 13.55417,167.1658 v -14.5 h 14.5 z" id="path5280" inkscape:connector-curvature="0" sodipodi:nodetypes="cccc" /> |
16 | +<path style="opacity:1;vector-effect:none;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.45001554;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:1.5;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal" d="m 28.05417,152.6658 v 14.5 h -14.5 z" id="path5282" inkscape:connector-curvature="0" sodipodi:nodetypes="cccc" /> |
17 | +</g> |
18 | +<g style="stroke-width:2.00240207" id="g5290" transform="matrix(-0.4827649,0,0,-0.4827546,152.2584,652.4268)"> |
19 | +<path sodipodi:nodetypes="cccc" inkscape:connector-curvature="0" id="path5286" d="m 13.55417,167.1658 v -14.5 h 14.5 z" style="opacity:1;vector-effect:none;fill:#9ab8d5;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3.00360346;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:1.5;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal" /> |
20 | +<path sodipodi:nodetypes="cccc" inkscape:connector-curvature="0" id="path5288" d="m 28.05417,152.6658 v 14.5 h -14.5 z" style="opacity:1;vector-effect:none;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:3.00360346;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:1.5;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal" /> |
21 | +</g> |
22 | +<rect y="-149.465" x="567.97681" height="14.50019" width="14.49988" id="rect5292" style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.96667951;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:1.5;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal" transform="rotate(90)" /> |
23 | +</g> |
24 | +<g style="opacity:1;stroke-width:0.96774209" transform="matrix(1.033333,0,0,1.033333,166.9413,-217.5105)" id="object-clip-mask"> |
25 | +<path style="opacity:1;vector-effect:none;fill:#9ab8d5;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.45161366;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:1.5;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal" d="m 190.0319,582.7473 v -15 h 15 z" id="path5296" inkscape:connector-curvature="0" sodipodi:nodetypes="cccc" /> |
26 | +<path style="opacity:1;vector-effect:none;fill:#ffffff;fill-opacity:0.98349819;fill-rule:nonzero;stroke:none;stroke-width:1.45161366;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:1.5;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal" d="m 205.0318,567.7474 v 15 h -15 z" id="path5298" inkscape:connector-curvature="0" sodipodi:nodetypes="cccc" /> |
27 | +<path transform="rotate(-177.7077)" style="display:inline;opacity:1;vector-effect:none;fill:none;fill-opacity:0.99335549;fill-rule:nonzero;stroke:#000000;stroke-width:0.96774209;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:1.20000005;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal" id="path5300" sodipodi:type="arc" sodipodi:cx="-227.3363" sodipodi:cy="-559.35199" sodipodi:rx="12.6149" sodipodi:ry="12.6149" sodipodi:start="4.674802" sodipodi:end="6.24167" d="m -227.81035,-571.95798 a 12.6149,12.6149 0 0 1 13.07808,12.08243 l -12.60403,0.52356 z" /> |
28 | +<path sodipodi:nodetypes="cccc" inkscape:connector-curvature="0" id="path5302" d="m 194.0319,578.7472 v -6.9999 h 7 z" style="opacity:1;vector-effect:none;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.45161378;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:1.5;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal" /> |
29 | +<rect transform="rotate(90)" style="opacity:1;vector-effect:none;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#c80000;stroke-width:0.96774209;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:1.5;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal" id="rect5304" width="14.5" height="14.5" x="567.99731" y="-204.78191" /> |
30 | +<path sodipodi:nodetypes="cccc" inkscape:connector-curvature="0" id="path5306" d="m 201.0319,571.7473 v 6.9999 h -7 z" style="opacity:1;vector-effect:none;fill:#9ab8d5;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.45161378;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:1.5;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;paint-order:normal" /> |
31 | +</g> |
32 | </svg> |
33 | |
34 | === modified file 'src/live_effects/lpe-bspline.cpp' |
35 | --- src/live_effects/lpe-bspline.cpp 2016-01-05 15:30:09 +0000 |
36 | +++ src/live_effects/lpe-bspline.cpp 2017-05-17 23:30:53 +0000 |
37 | @@ -168,6 +168,7 @@ |
38 | doBSplineFromWidget(curve, weight_ammount/100.0); |
39 | gchar *str = sp_svg_write_path(curve->get_pathvector()); |
40 | path->getRepr()->setAttribute("inkscape:original-d", str); |
41 | + g_free(str); |
42 | } |
43 | } |
44 | |
45 | |
46 | === modified file 'src/live_effects/parameter/path.cpp' |
47 | --- src/live_effects/parameter/path.cpp 2016-07-02 00:27:56 +0000 |
48 | +++ src/live_effects/parameter/path.cpp 2017-05-17 23:30:53 +0000 |
49 | @@ -242,8 +242,9 @@ |
50 | r.lpe_key = param_key; |
51 | Geom::PathVector stored_pv = _pathvector; |
52 | param_write_to_repr("M0,0 L1,0"); |
53 | - const char *svgd = sp_svg_write_path(stored_pv); |
54 | + gchar *svgd = sp_svg_write_path(stored_pv); |
55 | param_write_to_repr(svgd); |
56 | + g_free(svgd); |
57 | } else { |
58 | r.item = ref.getObject(); |
59 | } |
60 | |
61 | === modified file 'src/path-chemistry.cpp' |
62 | --- src/path-chemistry.cpp 2016-04-08 13:26:55 +0000 |
63 | +++ src/path-chemistry.cpp 2017-05-17 23:30:53 +0000 |
64 | @@ -250,8 +250,9 @@ |
65 | repr->setAttribute("inkscape:original-d", str); |
66 | else |
67 | repr->setAttribute("d", str); |
68 | + str = sp_svg_transform_write(transform); |
69 | + repr->setAttribute("transform", str); |
70 | g_free(str); |
71 | - repr->setAttribute("transform", sp_svg_transform_write(transform)); |
72 | |
73 | // add the new repr to the parent |
74 | parent->appendChild(repr); |
75 | |
76 | === modified file 'src/selection-chemistry.cpp' |
77 | --- src/selection-chemistry.cpp 2017-02-22 13:10:40 +0000 |
78 | +++ src/selection-chemistry.cpp 2017-05-17 23:30:53 +0000 |
79 | @@ -1115,6 +1115,63 @@ |
80 | C_("Undo action", "Lower")); |
81 | } |
82 | |
83 | +void sp_selection_stack_down(Inkscape::Selection *selection, SPDesktop *desktop) |
84 | +{ |
85 | + SPDocument *document = selection->layers()->getDocument(); |
86 | + std::vector<SPItem*> selected = selection->itemList(); |
87 | + |
88 | + if (selected.empty()) { |
89 | + selection_display_message(desktop, Inkscape::WARNING_MESSAGE, _("Select <b>object(s)</b> to stack down.")); |
90 | + return; |
91 | + } |
92 | + |
93 | + /* Construct direct-ordered list of selected children. */ |
94 | + std::vector<SPItem*> items(selected); |
95 | + sort(items.begin(),items.end(),sp_item_repr_compare_position_bool); |
96 | + |
97 | + for (std::vector<SPItem*>::const_iterator item=items.begin();item!=items.end();++item) { |
98 | + SPItem *item_obj = *item; |
99 | + if(!item_obj->lowerOne()) { |
100 | + DocumentUndo::cancel(document); |
101 | + selection_display_message(desktop, Inkscape::WARNING_MESSAGE, _("We hit bottom.")); |
102 | + return; |
103 | + } |
104 | + } |
105 | + |
106 | + DocumentUndo::done(document, SP_VERB_SELECTION_STACK_DOWN, |
107 | + //TRANSLATORS: "Lower" means "to lower an object" in the undo history |
108 | + C_("Undo action", "stack down")); |
109 | +} |
110 | + |
111 | +void sp_selection_stack_up(Inkscape::Selection *selection, SPDesktop *desktop) |
112 | +{ |
113 | + SPDocument *document = selection->layers()->getDocument(); |
114 | + std::vector<SPItem*> selected = selection->itemList(); |
115 | + |
116 | + if (selected.empty()) { |
117 | + selection_display_message(desktop, Inkscape::WARNING_MESSAGE, _("Select <b>object(s)</b> to stack up.")); |
118 | + return; |
119 | + } |
120 | + |
121 | + /* Construct direct-ordered list of selected children. */ |
122 | + std::vector<SPItem*> items(selected); |
123 | + sort(items.begin(),items.end(),sp_item_repr_compare_position_bool); |
124 | + bool cancel = false; |
125 | + |
126 | + for (std::vector<SPItem*>::const_reverse_iterator item=items.rbegin();item!=items.rend();++item) { |
127 | + SPItem *item_obj = *item; |
128 | + if (!item_obj->raiseOne()) { |
129 | + DocumentUndo::cancel(document); |
130 | + selection_display_message(desktop, Inkscape::WARNING_MESSAGE, _("We hit top.")); |
131 | + return; |
132 | + } |
133 | + } |
134 | + |
135 | + DocumentUndo::done(document, SP_VERB_SELECTION_STACK_UP, |
136 | + //TRANSLATORS: "Lower" means "to lower an object" in the undo history |
137 | + C_("Undo action", "stack up")); |
138 | +} |
139 | + |
140 | void sp_selection_lower_to_bottom(Inkscape::Selection *selection, SPDesktop *desktop) |
141 | { |
142 | SPDocument *document = selection->layers()->getDocument(); |
143 | @@ -3175,8 +3232,11 @@ |
144 | the_parent_repr->appendChild(clone); |
145 | |
146 | if( single_group && transform.isTranslation() ) { |
147 | - if( !transform.isIdentity() ) |
148 | - clone->setAttribute("transform", sp_svg_transform_write( transform )); |
149 | + if( !transform.isIdentity() ) { |
150 | + gchar *c = sp_svg_transform_write( transform ); |
151 | + clone->setAttribute("transform", c); |
152 | + g_free(c); |
153 | + } |
154 | } |
155 | |
156 | // Change selection to new <use> element. |
157 | |
158 | === modified file 'src/selection-chemistry.h' |
159 | --- src/selection-chemistry.h 2016-04-14 18:19:03 +0000 |
160 | +++ src/selection-chemistry.h 2017-05-17 23:30:53 +0000 |
161 | @@ -79,8 +79,10 @@ |
162 | void sp_selection_ungroup_pop_selection(Inkscape::Selection *selection, SPDesktop *desktop); |
163 | |
164 | void sp_selection_raise(Inkscape::Selection *selection, SPDesktop *desktop); |
165 | +void sp_selection_stack_up(Inkscape::Selection *selection, SPDesktop *desktop); |
166 | void sp_selection_raise_to_top(Inkscape::Selection *selection, SPDesktop *desktop); |
167 | void sp_selection_lower(Inkscape::Selection *selection, SPDesktop *desktop); |
168 | +void sp_selection_stack_down(Inkscape::Selection *selection, SPDesktop *desktop); |
169 | void sp_selection_lower_to_bottom(Inkscape::Selection *selection, SPDesktop *desktop); |
170 | |
171 | SPCSSAttr *take_style_from_item (SPObject *object); |
172 | |
173 | === modified file 'src/sp-item-group.cpp' |
174 | --- src/sp-item-group.cpp 2016-08-29 06:01:18 +0000 |
175 | +++ src/sp-item-group.cpp 2017-05-17 23:30:53 +0000 |
176 | @@ -598,6 +598,7 @@ |
177 | Geom::Affine ttrans = ctrans.inverse() * SP_ITEM(text)->transform * ctrans; |
178 | gchar *affinestr = sp_svg_transform_write(ttrans); |
179 | nrepr->setAttribute("transform", affinestr); |
180 | + g_free(affinestr); |
181 | } |
182 | } else { |
183 | nrepr->setAttribute("transform", affinestr); |
184 | |
185 | === modified file 'src/sp-item.cpp' |
186 | --- src/sp-item.cpp 2017-01-17 10:28:55 +0000 |
187 | +++ src/sp-item.cpp 2017-05-17 23:30:53 +0000 |
188 | @@ -318,17 +318,19 @@ |
189 | } |
190 | } |
191 | |
192 | -void SPItem::raiseOne() { |
193 | +bool SPItem::raiseOne() { |
194 | SPObject *next_higher=std::find_if<SPObject::SiblingIterator>( |
195 | next, NULL, &is_item |
196 | ); |
197 | if (next_higher) { |
198 | Inkscape::XML::Node *ref = next_higher->getRepr(); |
199 | getRepr()->parent()->changeOrder(getRepr(), ref); |
200 | + return true; |
201 | } |
202 | + return false; |
203 | } |
204 | |
205 | -void SPItem::lowerOne() { |
206 | +bool SPItem::lowerOne() { |
207 | using Inkscape::Util::MutableList; |
208 | using Inkscape::Util::reverse_list; |
209 | |
210 | @@ -343,7 +345,9 @@ |
211 | ++next_lower; |
212 | Inkscape::XML::Node *ref = ( next_lower ? next_lower->getRepr() : NULL ); |
213 | getRepr()->parent()->changeOrder(getRepr(), ref); |
214 | + return true; |
215 | } |
216 | + return false; |
217 | } |
218 | |
219 | void SPItem::lowerToBottom() { |
220 | |
221 | === modified file 'src/sp-item.h' |
222 | --- src/sp-item.h 2015-03-16 20:22:36 +0000 |
223 | +++ src/sp-item.h 2017-05-17 23:30:53 +0000 |
224 | @@ -212,8 +212,8 @@ |
225 | |
226 | Geom::Affine getRelativeTransform(SPObject const *obj) const; |
227 | |
228 | - void raiseOne(); |
229 | - void lowerOne(); |
230 | + bool raiseOne(); |
231 | + bool lowerOne(); |
232 | void raiseToTop(); |
233 | void lowerToBottom(); |
234 | |
235 | |
236 | === modified file 'src/sp-pattern.cpp' |
237 | --- src/sp-pattern.cpp 2016-09-06 10:44:16 +0000 |
238 | +++ src/sp-pattern.cpp 2017-05-17 23:30:53 +0000 |
239 | @@ -374,8 +374,9 @@ |
240 | } |
241 | _pattern_transform_set = true; |
242 | |
243 | - Glib::ustring c = sp_svg_transform_write(_pattern_transform); |
244 | + gchar *c = sp_svg_transform_write(_pattern_transform); |
245 | getRepr()->setAttribute("patternTransform", c); |
246 | + g_free(c); |
247 | } |
248 | |
249 | const gchar *SPPattern::produce(const std::vector<Inkscape::XML::Node *> &reprs, Geom::Rect bounds, |
250 | @@ -392,8 +393,9 @@ |
251 | sp_repr_set_svg_double(repr, "height", bounds.dimensions()[Geom::Y]); |
252 | //TODO: Maybe is better handle it in sp_svg_transform_write |
253 | if(transform != Geom::Affine()){ |
254 | - Glib::ustring t = sp_svg_transform_write(transform); |
255 | + gchar *t = sp_svg_transform_write(transform); |
256 | repr->setAttribute("patternTransform", t); |
257 | + g_free(t); |
258 | } |
259 | defsrepr->appendChild(repr); |
260 | const gchar *pat_id = repr->attribute("id"); |
261 | |
262 | === modified file 'src/ui/dialog/objects.cpp' |
263 | --- src/ui/dialog/objects.cpp 2016-11-07 16:26:09 +0000 |
264 | +++ src/ui/dialog/objects.cpp 2017-05-17 23:30:53 +0000 |
265 | @@ -34,6 +34,7 @@ |
266 | #include "helper/action.h" |
267 | #include "inkscape.h" |
268 | #include "layer-manager.h" |
269 | +#include "shortcuts.h" |
270 | #include "preferences.h" |
271 | #include "selection.h" |
272 | #include "sp-clippath.h" |
273 | @@ -319,11 +320,13 @@ |
274 | SPRoot* root = document->getRoot(); |
275 | if ( root ) { |
276 | _selectedConnection.block(); |
277 | + _documentChangedCurrentLayer.block(); |
278 | //Clear the tree store |
279 | _store->clear(); |
280 | //Add all items recursively |
281 | _addObject( root, 0 ); |
282 | _selectedConnection.unblock(); |
283 | + _documentChangedCurrentLayer.unblock(); |
284 | //Set the tree selection |
285 | _objectsSelected(_desktop->selection); |
286 | //Handle button sensitivity |
287 | @@ -362,13 +365,17 @@ |
288 | row[_model->_colLocked] = !item->isSensitive(); |
289 | row[_model->_colType] = group ? (group->layerMode() == SPGroup::LAYER ? 2 : 1) : 0; |
290 | row[_model->_colHighlight] = item->isHighlightSet() ? item->highlight_color() : item->highlight_color() & 0xffffff00; |
291 | - row[_model->_colClipMask] = item->clip_ref && item->clip_ref->getObject() ? 1 : (item->mask_ref && item->mask_ref->getObject() ? 2 : 0); |
292 | + row[_model->_colClipMask] = item ? ( |
293 | + (item->clip_ref && item->clip_ref->getObject() ? 1 : 0) | |
294 | + (item->mask_ref && item->mask_ref->getObject() ? 2 : 0) |
295 | + ) : 0; |
296 | //row[_model->_colInsertOrder] = group ? (group->insertBottom() ? 2 : 1) : 0; |
297 | |
298 | //If our parent object is a group and it's expanded, expand the tree |
299 | if (SP_IS_GROUP(obj) && SP_GROUP(obj)->expanded()) |
300 | { |
301 | _tree.expand_to_path( _store->get_path(iter) ); |
302 | + _tree.collapse_row( _store->get_path(iter) ); |
303 | } |
304 | |
305 | //Add an object watcher to the item |
306 | @@ -426,7 +433,10 @@ |
307 | row[_model->_colLocked] = item ? !item->isSensitive() : false; |
308 | row[_model->_colType] = group ? (group->layerMode() == SPGroup::LAYER ? 2 : 1) : 0; |
309 | row[_model->_colHighlight] = item ? (item->isHighlightSet() ? item->highlight_color() : item->highlight_color() & 0xffffff00) : 0; |
310 | - row[_model->_colClipMask] = item ? (item->clip_ref && item->clip_ref->getObject() ? 1 : (item->mask_ref && item->mask_ref->getObject() ? 2 : 0)) : 0; |
311 | + row[_model->_colClipMask] = item ? ( |
312 | + (item->clip_ref && item->clip_ref->getObject() ? 1 : 0) | |
313 | + (item->mask_ref && item->mask_ref->getObject() ? 2 : 0) |
314 | + ) : 0; |
315 | //row[_model->_colInsertOrder] = group ? (group->insertBottom() ? 2 : 1) : 0; |
316 | |
317 | return true; |
318 | @@ -486,13 +496,13 @@ |
319 | _setCompositingValues(item); |
320 | setOpacity = false; |
321 | } |
322 | - _store->foreach(sigc::bind<SPItem *, bool>( sigc::mem_fun(*this, &ObjectsPanel::_checkForSelected), item, (*i)==items.back())); |
323 | + _store->foreach(sigc::bind<SPItem *, bool>( sigc::mem_fun(*this, &ObjectsPanel::_checkForSelected), item, (*i)==items.back(), false)); |
324 | } |
325 | if (!item) { |
326 | if (_desktop->currentLayer() && SP_IS_ITEM(_desktop->currentLayer())) { |
327 | item = SP_ITEM(_desktop->currentLayer()); |
328 | _setCompositingValues(item); |
329 | - _store->foreach(sigc::bind<SPItem *, bool>( sigc::mem_fun(*this, &ObjectsPanel::_checkForSelected), item, true)); |
330 | + _store->foreach(sigc::bind<SPItem *, bool>( sigc::mem_fun(*this, &ObjectsPanel::_checkForSelected), item, false, true)); |
331 | } |
332 | } |
333 | _selectedConnection.unblock(); |
334 | @@ -559,7 +569,7 @@ |
335 | * @param scrollto Whether to scroll to the item |
336 | * @return Whether to continue searching the tree |
337 | */ |
338 | -bool ObjectsPanel::_checkForSelected(const Gtk::TreePath &path, const Gtk::TreeIter& iter, SPItem* item, bool scrollto) |
339 | +bool ObjectsPanel::_checkForSelected(const Gtk::TreePath &path, const Gtk::TreeIter& iter, SPItem* item, bool scrollto, bool expand) |
340 | { |
341 | bool stopGoing = false; |
342 | |
343 | @@ -568,13 +578,16 @@ |
344 | { |
345 | //We found the item! Expand to the path and select it in the tree. |
346 | _tree.expand_to_path( path ); |
347 | + if (!expand) |
348 | + // but don't expand itself, just the path |
349 | + _tree.collapse_row(path); |
350 | |
351 | Glib::RefPtr<Gtk::TreeSelection> select = _tree.get_selection(); |
352 | |
353 | select->select(iter); |
354 | if (scrollto) { |
355 | //Scroll to the item in the tree |
356 | - _tree.scroll_to_row(path); |
357 | + _tree.scroll_to_row(path, 0.5); |
358 | } |
359 | |
360 | stopGoing = true; |
361 | @@ -591,6 +604,7 @@ |
362 | if ( _desktop && _desktop->currentRoot() ) { |
363 | //block connections for selection and compositing values to prevent interference |
364 | _selectionChangedConnection.block(); |
365 | + _documentChangedCurrentLayer.block(); |
366 | |
367 | //Clear the selection and then iterate over the tree selection, pushing each item to the desktop |
368 | _desktop->selection->clear(); |
369 | @@ -598,6 +612,7 @@ |
370 | _tree.get_selection()->selected_foreach_iter( sigc::bind<bool *>(sigc::mem_fun(*this, &ObjectsPanel::_selected_row_callback), &setOpacity)); |
371 | //unblock connections |
372 | _selectionChangedConnection.unblock(); |
373 | + _documentChangedCurrentLayer.unblock(); |
374 | |
375 | _checkTreeSelection(); |
376 | } |
377 | @@ -696,53 +711,63 @@ |
378 | */ |
379 | bool ObjectsPanel::_handleKeyEvent(GdkEventKey *event) |
380 | { |
381 | - |
382 | + if (!_desktop) |
383 | + return false; |
384 | + |
385 | + unsigned int shortcut; |
386 | + shortcut = Inkscape::UI::Tools::get_group0_keyval(event) | |
387 | + ( event->state & GDK_SHIFT_MASK ? |
388 | + SP_SHORTCUT_SHIFT_MASK : 0 ) | |
389 | + ( event->state & GDK_CONTROL_MASK ? |
390 | + SP_SHORTCUT_CONTROL_MASK : 0 ) | |
391 | + ( event->state & GDK_MOD1_MASK ? |
392 | + SP_SHORTCUT_ALT_MASK : 0 ); |
393 | + |
394 | + switch (shortcut) { |
395 | + // how to get users key binding for the action “start-interactive-search” ?? |
396 | + // ctrl+f is just the default |
397 | + case GDK_KEY_f | SP_SHORTCUT_CONTROL_MASK: |
398 | + return false; |
399 | + break; |
400 | + // shall we slurp ctrl+w to close panel? |
401 | + |
402 | + // defocus: |
403 | + case GDK_KEY_Escape: |
404 | + if (_desktop->canvas) { |
405 | + gtk_widget_grab_focus (GTK_WIDGET(_desktop->canvas)); |
406 | + return true; |
407 | + } |
408 | + break; |
409 | + } |
410 | + |
411 | + // invoke user defined shortcuts first |
412 | + bool done = sp_shortcut_invoke(shortcut, _desktop); |
413 | + if (done) |
414 | + return true; |
415 | + |
416 | + // handle events for the treeview |
417 | bool empty = _desktop->selection->isEmpty(); |
418 | |
419 | switch (Inkscape::UI::Tools::get_group0_keyval(event)) { |
420 | case GDK_KEY_Return: |
421 | case GDK_KEY_KP_Enter: |
422 | - case GDK_KEY_F2: |
423 | { |
424 | - Gtk::TreeModel::iterator iter = _tree.get_selection()->get_selected(); |
425 | - if (iter && !_text_renderer->property_editable()) { |
426 | + Gtk::TreeModel::Path path; |
427 | + Gtk::TreeViewColumn *focus_column = 0; |
428 | + |
429 | + _tree.get_cursor(path, focus_column); |
430 | + if (focus_column == _name_column && !_text_renderer->property_editable()) { |
431 | //Rename item |
432 | - Gtk::TreeModel::Path *path = new Gtk::TreeModel::Path(iter); |
433 | _text_renderer->property_editable() = true; |
434 | - _tree.set_cursor(*path, *_name_column, true); |
435 | + _tree.set_cursor(path, *_name_column, true); |
436 | grab_focus(); |
437 | return true; |
438 | } |
439 | - } |
440 | - break; |
441 | - case GDK_KEY_Home: |
442 | - //Move item(s) to top of containing group/layer |
443 | - _fireAction( empty ? SP_VERB_LAYER_TO_TOP : SP_VERB_SELECTION_TO_FRONT ); |
444 | - break; |
445 | - case GDK_KEY_End: |
446 | - //Move item(s) to bottom of containing group/layer |
447 | - _fireAction( empty ? SP_VERB_LAYER_TO_BOTTOM : SP_VERB_SELECTION_TO_BACK ); |
448 | - break; |
449 | - case GDK_KEY_Page_Up: |
450 | - { |
451 | - //Move item(s) up in containing group/layer |
452 | - int ch = event->state & GDK_SHIFT_MASK ? SP_VERB_LAYER_MOVE_TO_NEXT : SP_VERB_SELECTION_RAISE; |
453 | - _fireAction( empty ? SP_VERB_LAYER_RAISE : ch ); |
454 | - break; |
455 | - } |
456 | - case GDK_KEY_Page_Down: |
457 | - { |
458 | - //Move item(s) down in containing group/layer |
459 | - int ch = event->state & GDK_SHIFT_MASK ? SP_VERB_LAYER_MOVE_TO_PREV : SP_VERB_SELECTION_LOWER; |
460 | - _fireAction( empty ? SP_VERB_LAYER_LOWER : ch ); |
461 | - break; |
462 | - } |
463 | - |
464 | - //TODO: Handle Ctrl-A, etc. |
465 | - default: |
466 | return false; |
467 | + break; |
468 | + } |
469 | } |
470 | - return true; |
471 | + return false; |
472 | } |
473 | |
474 | /** |
475 | @@ -1186,7 +1211,7 @@ |
476 | } |
477 | else |
478 | { |
479 | - _fireAction( SP_VERB_SELECTION_RAISE ); |
480 | + _fireAction( SP_VERB_SELECTION_STACK_UP ); |
481 | } |
482 | } |
483 | break; |
484 | @@ -1198,7 +1223,7 @@ |
485 | } |
486 | else |
487 | { |
488 | - _fireAction( SP_VERB_SELECTION_LOWER ); |
489 | + _fireAction( SP_VERB_SELECTION_STACK_DOWN ); |
490 | } |
491 | } |
492 | break; |
493 | @@ -1746,6 +1771,8 @@ |
494 | //Set the expander and search columns |
495 | _tree.set_expander_column( *_tree.get_column(nameColNum) ); |
496 | _tree.set_search_column(_model->_colLabel); |
497 | + // use ctrl+f to start search |
498 | + _tree.set_enable_search(false); |
499 | |
500 | //Set up the tree selection |
501 | _tree.get_selection()->set_mode(Gtk::SELECTION_MULTIPLE); |
502 | @@ -1914,8 +1941,8 @@ |
503 | |
504 | _popupMenu.append(*Gtk::manage(new Gtk::SeparatorMenuItem())); |
505 | |
506 | - _watchingNonTop.push_back( &_addPopupItem( targetDesktop, SP_VERB_SELECTION_RAISE, "gtk-go-up", _("Up"), (int)BUTTON_UP ) ); |
507 | - _watchingNonBottom.push_back( &_addPopupItem( targetDesktop, SP_VERB_SELECTION_LOWER, "gtk-go-down", _("Down"), (int)BUTTON_DOWN ) ); |
508 | + _watchingNonTop.push_back( &_addPopupItem( targetDesktop, SP_VERB_SELECTION_STACK_UP, "gtk-go-up", _("Up"), (int)BUTTON_UP ) ); |
509 | + _watchingNonBottom.push_back( &_addPopupItem( targetDesktop, SP_VERB_SELECTION_STACK_DOWN, "gtk-go-down", _("Down"), (int)BUTTON_DOWN ) ); |
510 | |
511 | _popupMenu.append(*Gtk::manage(new Gtk::SeparatorMenuItem())); |
512 | |
513 | @@ -2054,6 +2081,7 @@ |
514 | |
515 | if ( desktop != _desktop ) { |
516 | _documentChangedConnection.disconnect(); |
517 | + _documentChangedCurrentLayer.disconnect(); |
518 | _selectionChangedConnection.disconnect(); |
519 | if ( _desktop ) { |
520 | _desktop = 0; |
521 | @@ -2063,6 +2091,9 @@ |
522 | if ( _desktop ) { |
523 | //Connect desktop signals |
524 | _documentChangedConnection = _desktop->connectDocumentReplaced( sigc::mem_fun(*this, &ObjectsPanel::setDocument)); |
525 | + |
526 | + _documentChangedCurrentLayer = _desktop->connectCurrentLayerChanged( sigc::mem_fun(*this, &ObjectsPanel::_objectsChanged)); |
527 | + |
528 | _selectionChangedConnection = _desktop->selection->connectChanged( sigc::mem_fun(*this, &ObjectsPanel::_objectsSelected)); |
529 | |
530 | setDocument(_desktop, _desktop->doc()); |
531 | |
532 | === modified file 'src/ui/dialog/objects.h' |
533 | --- src/ui/dialog/objects.h 2015-06-18 09:36:24 +0000 |
534 | +++ src/ui/dialog/objects.h 2017-05-17 23:30:53 +0000 |
535 | @@ -77,6 +77,9 @@ |
536 | //Connection for when the document changes |
537 | sigc::connection _documentChangedConnection; |
538 | |
539 | + //Connection for when the active layer changes |
540 | + sigc::connection _documentChangedCurrentLayer; |
541 | + |
542 | //Connection for when the active selection in the document changes |
543 | sigc::connection _selectionChangedConnection; |
544 | |
545 | @@ -226,7 +229,7 @@ |
546 | bool _checkForUpdated(const Gtk::TreeIter& iter, SPObject* obj); |
547 | |
548 | void _objectsSelected(Selection *sel); |
549 | - bool _checkForSelected(const Gtk::TreePath& path, const Gtk::TreeIter& iter, SPItem* item, bool scrollto); |
550 | + bool _checkForSelected(const Gtk::TreePath& path, const Gtk::TreeIter& iter, SPItem* item, bool scrollto, bool expand); |
551 | |
552 | void _objectsChanged(SPObject *obj); |
553 | void _addObject( SPObject* obj, Gtk::TreeModel::Row* parentRow ); |
554 | |
555 | === modified file 'src/ui/widget/clipmaskicon.cpp' |
556 | --- src/ui/widget/clipmaskicon.cpp 2015-04-27 23:38:31 +0000 |
557 | +++ src/ui/widget/clipmaskicon.cpp 2017-05-17 23:30:53 +0000 |
558 | @@ -27,13 +27,13 @@ |
559 | ClipMaskIcon::ClipMaskIcon() : |
560 | Glib::ObjectBase(typeid(ClipMaskIcon)), |
561 | Gtk::CellRendererPixbuf(), |
562 | - _pixClipName(INKSCAPE_ICON("path-intersection")), |
563 | - _pixInverseName(INKSCAPE_ICON("path-difference")), |
564 | - _pixMaskName(INKSCAPE_ICON("mask-intersection")), |
565 | + _pixClipName(INKSCAPE_ICON("object-clipped")), |
566 | + _pixMaskName(INKSCAPE_ICON("object-masked")), |
567 | + _pixBothName(INKSCAPE_ICON("object-clip-mask")), |
568 | _property_active(*this, "active", 0), |
569 | _property_pixbuf_clip(*this, "pixbuf_on", Glib::RefPtr<Gdk::Pixbuf>(0)), |
570 | - _property_pixbuf_inverse(*this, "pixbuf_on", Glib::RefPtr<Gdk::Pixbuf>(0)), |
571 | - _property_pixbuf_mask(*this, "pixbuf_off", Glib::RefPtr<Gdk::Pixbuf>(0)) |
572 | + _property_pixbuf_mask(*this, "pixbuf_off", Glib::RefPtr<Gdk::Pixbuf>(0)), |
573 | + _property_pixbuf_both(*this, "pixbuf_on", Glib::RefPtr<Gdk::Pixbuf>(0)) |
574 | { |
575 | |
576 | property_mode() = Gtk::CELL_RENDERER_MODE_ACTIVATABLE; |
577 | @@ -43,22 +43,22 @@ |
578 | if (!icon_theme->has_icon(_pixClipName)) { |
579 | Inkscape::queueIconPrerender( INKSCAPE_ICON(_pixClipName.data()), Inkscape::ICON_SIZE_DECORATION ); |
580 | } |
581 | - if (!icon_theme->has_icon(_pixInverseName)) { |
582 | - Inkscape::queueIconPrerender( INKSCAPE_ICON(_pixInverseName.data()), Inkscape::ICON_SIZE_DECORATION ); |
583 | - } |
584 | if (!icon_theme->has_icon(_pixMaskName)) { |
585 | Inkscape::queueIconPrerender( INKSCAPE_ICON(_pixMaskName.data()), Inkscape::ICON_SIZE_DECORATION ); |
586 | } |
587 | + if (!icon_theme->has_icon(_pixBothName)) { |
588 | + Inkscape::queueIconPrerender( INKSCAPE_ICON(_pixBothName.data()), Inkscape::ICON_SIZE_DECORATION ); |
589 | + } |
590 | |
591 | if (icon_theme->has_icon(_pixClipName)) { |
592 | _property_pixbuf_clip = icon_theme->load_icon(_pixClipName, phys, (Gtk::IconLookupFlags)0); |
593 | } |
594 | - if (icon_theme->has_icon(_pixInverseName)) { |
595 | - _property_pixbuf_inverse = icon_theme->load_icon(_pixInverseName, phys, (Gtk::IconLookupFlags)0); |
596 | - } |
597 | if (icon_theme->has_icon(_pixMaskName)) { |
598 | _property_pixbuf_mask = icon_theme->load_icon(_pixMaskName, phys, (Gtk::IconLookupFlags)0); |
599 | } |
600 | + if (icon_theme->has_icon(_pixBothName)) { |
601 | + _property_pixbuf_both = icon_theme->load_icon(_pixBothName, phys, (Gtk::IconLookupFlags)0); |
602 | + } |
603 | |
604 | property_pixbuf() = Glib::RefPtr<Gdk::Pixbuf>(0); |
605 | } |
606 | @@ -137,7 +137,7 @@ |
607 | property_pixbuf() = _property_pixbuf_mask; |
608 | break; |
609 | case 3: |
610 | - property_pixbuf() = _property_pixbuf_inverse; |
611 | + property_pixbuf() = _property_pixbuf_both; |
612 | break; |
613 | default: |
614 | property_pixbuf() = Glib::RefPtr<Gdk::Pixbuf>(0); |
615 | |
616 | === modified file 'src/ui/widget/clipmaskicon.h' |
617 | --- src/ui/widget/clipmaskicon.h 2014-10-08 02:22:03 +0000 |
618 | +++ src/ui/widget/clipmaskicon.h 2017-05-17 23:30:53 +0000 |
619 | @@ -71,13 +71,13 @@ |
620 | int phys; |
621 | |
622 | Glib::ustring _pixClipName; |
623 | - Glib::ustring _pixInverseName; |
624 | Glib::ustring _pixMaskName; |
625 | + Glib::ustring _pixBothName; |
626 | |
627 | Glib::Property<int> _property_active; |
628 | Glib::Property< Glib::RefPtr<Gdk::Pixbuf> > _property_pixbuf_clip; |
629 | - Glib::Property< Glib::RefPtr<Gdk::Pixbuf> > _property_pixbuf_inverse; |
630 | Glib::Property< Glib::RefPtr<Gdk::Pixbuf> > _property_pixbuf_mask; |
631 | + Glib::Property< Glib::RefPtr<Gdk::Pixbuf> > _property_pixbuf_both; |
632 | |
633 | }; |
634 | |
635 | |
636 | === modified file 'src/verbs.cpp' |
637 | --- src/verbs.cpp 2016-11-02 22:44:54 +0000 |
638 | +++ src/verbs.cpp 2017-05-17 23:30:53 +0000 |
639 | @@ -1144,6 +1144,12 @@ |
640 | case SP_VERB_SELECTION_LOWER: |
641 | sp_selection_lower(selection, dt); |
642 | break; |
643 | + case SP_VERB_SELECTION_STACK_UP: |
644 | + sp_selection_stack_up(selection, dt); |
645 | + break; |
646 | + case SP_VERB_SELECTION_STACK_DOWN: |
647 | + sp_selection_stack_down(selection, dt); |
648 | + break; |
649 | case SP_VERB_SELECTION_GROUP: |
650 | sp_selection_group(selection, dt); |
651 | break; |
652 | @@ -2558,6 +2564,14 @@ |
653 | N_("Raise selection one step"), INKSCAPE_ICON("selection-raise")), |
654 | new SelectionVerb(SP_VERB_SELECTION_LOWER, "SelectionLower", N_("_Lower"), |
655 | N_("Lower selection one step"), INKSCAPE_ICON("selection-lower")), |
656 | + |
657 | + |
658 | + new SelectionVerb(SP_VERB_SELECTION_STACK_UP, "SelectionStackUp", N_("_Stack up"), |
659 | + N_("Stack selection one step up"), INKSCAPE_ICON("layer-lower")), |
660 | + new SelectionVerb(SP_VERB_SELECTION_STACK_DOWN, "SelectionStackDown", N_("_Stack down"), |
661 | + N_("Stack selection one step down"), INKSCAPE_ICON("layer-raise")), |
662 | + |
663 | + |
664 | new SelectionVerb(SP_VERB_SELECTION_GROUP, "SelectionGroup", N_("_Group"), |
665 | N_("Group selected objects"), INKSCAPE_ICON("object-group")), |
666 | new SelectionVerb(SP_VERB_SELECTION_UNGROUP, "SelectionUnGroup", N_("_Ungroup"), |
667 | |
668 | === modified file 'src/verbs.h' |
669 | --- src/verbs.h 2016-04-14 18:19:03 +0000 |
670 | +++ src/verbs.h 2017-05-17 23:30:53 +0000 |
671 | @@ -114,6 +114,8 @@ |
672 | SP_VERB_SELECTION_TO_BACK, |
673 | SP_VERB_SELECTION_RAISE, |
674 | SP_VERB_SELECTION_LOWER, |
675 | + SP_VERB_SELECTION_STACK_UP, |
676 | + SP_VERB_SELECTION_STACK_DOWN, |
677 | SP_VERB_SELECTION_GROUP, |
678 | SP_VERB_SELECTION_UNGROUP, |
679 | SP_VERB_SELECTION_UNGROUP_POP_SELECTION, |
680 | |
681 | === modified file 'src/widgets/stroke-marker-selector.cpp' |
682 | --- src/widgets/stroke-marker-selector.cpp 2014-12-23 09:25:08 +0000 |
683 | +++ src/widgets/stroke-marker-selector.cpp 2017-05-17 23:30:53 +0000 |
684 | @@ -60,8 +60,13 @@ |
685 | set_cell_data_func(image_renderer, sigc::mem_fun(*this, &MarkerComboBox::prepareImageRenderer)); |
686 | gtk_combo_box_set_row_separator_func(GTK_COMBO_BOX(gobj()), MarkerComboBox::separator_cb, NULL, NULL); |
687 | |
688 | + Glib::ustring no_marker("no-marker"); |
689 | + Glib::RefPtr<Gtk::IconTheme> iconTheme = Gtk::IconTheme::get_default(); |
690 | + if (!iconTheme->has_icon(no_marker)) { |
691 | + Inkscape::queueIconPrerender( INKSCAPE_ICON(no_marker.data()), Inkscape::ICON_SIZE_SMALL_TOOLBAR ); |
692 | + } |
693 | empty_image = new Gtk::Image( Glib::wrap( |
694 | - sp_pixbuf_new( Inkscape::ICON_SIZE_SMALL_TOOLBAR, INKSCAPE_ICON("no-marker") ) ) ); |
695 | + sp_pixbuf_new( Inkscape::ICON_SIZE_SMALL_TOOLBAR, INKSCAPE_ICON(no_marker.data()) ) ) ); |
696 | |
697 | sandbox = ink_markers_preview_doc (); |
698 | desktop = SP_ACTIVE_DESKTOP; |
699 | @@ -77,6 +82,7 @@ |
700 | MarkerComboBox::~MarkerComboBox() { |
701 | delete combo_id; |
702 | delete sandbox; |
703 | + delete empty_image; |
704 | |
705 | if (doc) { |
706 | modified_connection.disconnect(); |
707 | @@ -399,7 +405,7 @@ |
708 | gchar const *markid = repr->attribute("inkscape:stockid") ? repr->attribute("inkscape:stockid") : repr->attribute("id"); |
709 | |
710 | // generate preview |
711 | - Gtk::Image *prv = create_marker_image (22, repr->attribute("id"), source, drawing, visionkey); |
712 | + Gtk::Image *prv = create_marker_image (24, repr->attribute("id"), source, drawing, visionkey); |
713 | prv->show(); |
714 | |
715 | // Add history before separator, others after |
716 | @@ -430,14 +436,14 @@ |
717 | MarkerComboBox::update_marker_image(gchar const *mname) |
718 | { |
719 | gchar *cache_name = g_strconcat(combo_id, mname, NULL); |
720 | - Glib::ustring key = svg_preview_cache.cache_key(doc->getURI(), cache_name, 22); |
721 | + Glib::ustring key = svg_preview_cache.cache_key(doc->getURI(), cache_name, 24); |
722 | g_free (cache_name); |
723 | svg_preview_cache.remove_preview_from_cache(key); |
724 | |
725 | Inkscape::Drawing drawing; |
726 | unsigned const visionkey = SPItem::display_key_new(1); |
727 | drawing.setRoot(sandbox->getRoot()->invoke_show(drawing, visionkey, SP_ITEM_SHOW_DISPLAY)); |
728 | - Gtk::Image *prv = create_marker_image(22, mname, doc, drawing, visionkey); |
729 | + Gtk::Image *prv = create_marker_image(24, mname, doc, drawing, visionkey); |
730 | if (prv) { |
731 | prv->show(); |
732 | } |
I have no idea why CMakeScripts/ InstallMSYS2. cmake made it into the diff