diff options
| author | Jabier Arraiza <jabier.arraiza@marker.es> | 2019-09-16 21:11:01 +0000 |
|---|---|---|
| committer | Jabier Arraiza <jabier.arraiza@marker.es> | 2019-09-16 21:11:01 +0000 |
| commit | 8456986cea7b4a4cce5135e9b4170d39630a50ac (patch) | |
| tree | 20464cca95bf3f70bb5e89d69bdb1b832b3e02e5 | |
| parent | Fix operands in LPE bool (diff) | |
| download | inkscape-8456986cea7b4a4cce5135e9b4170d39630a50ac.tar.gz inkscape-8456986cea7b4a4cce5135e9b4170d39630a50ac.zip | |
Improve casts from voids and fix a issue when fill/stroke is unset set desktop styles with it
| -rw-r--r-- | src/desktop-style.cpp | 5 | ||||
| -rw-r--r-- | src/path-chemistry.cpp | 4 | ||||
| -rw-r--r-- | src/text-editing.cpp | 22 | ||||
| -rw-r--r-- | src/ui/dialog/spellcheck.cpp | 4 | ||||
| -rw-r--r-- | src/ui/tools/text-tool.cpp | 2 |
5 files changed, 20 insertions, 17 deletions
diff --git a/src/desktop-style.cpp b/src/desktop-style.cpp index dfcc0eead..427ca31fe 100644 --- a/src/desktop-style.cpp +++ b/src/desktop-style.cpp @@ -515,7 +515,7 @@ objects_query_fillstroke (const std::vector<SPItem*> &objects, SPStyle *style_re prev[0] = prev[1] = prev[2] = 0.0; bool same_color = true; - for (auto obj : objects) { + for (auto obj : objects) { if (!obj) { continue; } @@ -525,6 +525,9 @@ objects_query_fillstroke (const std::vector<SPItem*> &objects, SPStyle *style_re } SPIPaint *paint = isfill? &style->fill : &style->stroke; + if (!paint) { + continue; + } // We consider paint "effectively set" for anything within text hierarchy SPObject *parent = obj->parent; diff --git a/src/path-chemistry.cpp b/src/path-chemistry.cpp index d4e1809f7..4ff6d6420 100644 --- a/src/path-chemistry.cpp +++ b/src/path-chemistry.cpp @@ -507,8 +507,8 @@ sp_selected_item_to_curved_repr(SPItem *item, guint32 /*text_grouping_policy*/) void *rawptr = nullptr; te_get_layout(item)->getSourceOfCharacter(iter, &rawptr); if (!rawptr || !SP_IS_OBJECT(rawptr)) // no source for glyph, abort - break; - pos_obj = SP_OBJECT(rawptr); + break; + pos_obj = reinterpret_cast<SPObject *>(rawptr); while (dynamic_cast<SPString const *>(pos_obj) && pos_obj->parent) { pos_obj = pos_obj->parent; // SPStrings don't have style } diff --git a/src/text-editing.cpp b/src/text-editing.cpp index db3d78ac5..ab2ddd25d 100644 --- a/src/text-editing.cpp +++ b/src/text-editing.cpp @@ -147,7 +147,7 @@ SPObject const * sp_te_object_at_position(SPItem const *text, Inkscape::Text::La SPObject const *pos_obj = nullptr; void *rawptr = nullptr; layout->getSourceOfCharacter(position, &rawptr); - pos_obj = SP_OBJECT(rawptr); + pos_obj = reinterpret_cast<SPObject *>(rawptr); if (pos_obj == nullptr) { pos_obj = text; } @@ -413,7 +413,7 @@ Inkscape::Text::Layout::iterator sp_te_insert_line (SPItem *item, Inkscape::Text if (position != layout->end()) { void *rawptr = nullptr; layout->getSourceOfCharacter(position, &rawptr, &split_text_iter); - split_obj = SP_OBJECT(rawptr); + split_obj = reinterpret_cast<SPObject *>(rawptr); } if (split_obj == nullptr || is_line_break_object(split_obj)) { @@ -534,7 +534,7 @@ sp_te_insert(SPItem *item, Inkscape::Text::Layout::iterator const &position, gch bool cursor_at_start = !it_prev_char.prevCharacter(); bool cursor_at_end = position == layout->end(); layout->getSourceOfCharacter(it_prev_char, &rawptr, &iter_text); - source_obj = SP_OBJECT(rawptr); + source_obj = reinterpret_cast<SPObject *>(rawptr); if (SP_IS_STRING(source_obj)) { // If the parent is a tref, editing on this particular string is disallowed. if (SP_IS_TREF(source_obj->parent)) { @@ -778,9 +778,9 @@ sp_te_delete (SPItem *item, Inkscape::Text::Layout::iterator const &start, void *rawptr = nullptr; Glib::ustring::iterator start_text_iter, end_text_iter; layout->getSourceOfCharacter(iter_pair.first, &rawptr, &start_text_iter); - start_item = SP_OBJECT(rawptr); + start_item = reinterpret_cast<SPObject *>(rawptr); layout->getSourceOfCharacter(iter_pair.second, &rawptr, &end_text_iter); - end_item = SP_OBJECT(rawptr); + end_item = reinterpret_cast<SPObject *>(rawptr); if (start_item == nullptr) { return success; // start is at end of text } @@ -929,7 +929,7 @@ sp_te_get_string_multiline (SPItem const *text, Inkscape::Text::Layout::iterator void *rawptr = nullptr; Glib::ustring::iterator text_iter; layout->getSourceOfCharacter(first, &rawptr, &text_iter); - char_item = SP_OBJECT(rawptr); + char_item = reinterpret_cast<SPObject *>(rawptr); if (SP_IS_STRING(char_item)) { result += *text_iter; } else { @@ -1018,7 +1018,7 @@ text_tag_attributes_at_position(SPItem *item, Inkscape::Text::Layout::iterator c void *rawptr = nullptr; Glib::ustring::iterator source_text_iter; text->layout.getSourceOfCharacter(position, &rawptr, &source_text_iter); - source_item = SP_OBJECT(rawptr); + source_item = reinterpret_cast<SPObject *>(rawptr); if (!SP_IS_STRING(source_item)) { return nullptr; @@ -1103,7 +1103,7 @@ sp_te_adjust_rotation_screen(SPItem *text, Inkscape::Text::Layout::iterator cons SPObject *source_item = nullptr; void *rawptr = nullptr; layout->getSourceOfCharacter(std::min(start, end), &rawptr); - source_item = SP_OBJECT(rawptr); + source_item = reinterpret_cast<SPObject *>(rawptr); if (source_item == nullptr) { return; } @@ -1165,7 +1165,7 @@ sp_te_adjust_tspan_letterspacing_screen(SPItem *text, Inkscape::Text::Layout::it void *rawptr = nullptr; unsigned nb_let; layout->getSourceOfCharacter(std::min(start, end), &rawptr); - source_obj = SP_OBJECT(rawptr); + source_obj = reinterpret_cast<SPObject *>(rawptr); if (source_obj == nullptr) { // end of text source_obj = text->lastChild(); @@ -2038,9 +2038,9 @@ void sp_te_apply_style(SPItem *text, Inkscape::Text::Layout::iterator const &sta void *rawptr = nullptr; Glib::ustring::iterator start_text_iter, end_text_iter; layout->getSourceOfCharacter(first, &rawptr, &start_text_iter); - start_item = SP_OBJECT(rawptr); + start_item = reinterpret_cast<SPObject *>(rawptr); layout->getSourceOfCharacter(last, &rawptr, &end_text_iter); - end_item = SP_OBJECT(rawptr); + end_item = reinterpret_cast<SPObject *>(rawptr); if (start_item == nullptr) { return; // start is at end of text } diff --git a/src/ui/dialog/spellcheck.cpp b/src/ui/dialog/spellcheck.cpp index 254a53daa..01826fbd8 100644 --- a/src/ui/dialog/spellcheck.cpp +++ b/src/ui/dialog/spellcheck.cpp @@ -470,14 +470,14 @@ SpellCheck::nextWord() void *rawptr; Glib::ustring::iterator text_iter; _layout->getSourceOfCharacter(_end_w, &rawptr, &text_iter); - SPObject *char_item = SP_OBJECT(rawptr); + SPObject *char_item = reinterpret_cast<SPObject *>(rawptr); if (SP_IS_STRING(char_item)) { int this_char = *text_iter; if (this_char == '\'' || this_char == 0x2019) { Inkscape::Text::Layout::iterator end_t = _end_w; end_t.nextCharacter(); _layout->getSourceOfCharacter(end_t, &rawptr, &text_iter); - SPObject *char_item = SP_OBJECT(rawptr); + SPObject *char_item = reinterpret_cast<SPObject *>(rawptr); if (SP_IS_STRING(char_item)) { int this_char = *text_iter; if (g_ascii_isalpha(this_char)) { // 's diff --git a/src/ui/tools/text-tool.cpp b/src/ui/tools/text-tool.cpp index 7434d598f..651a00632 100644 --- a/src/ui/tools/text-tool.cpp +++ b/src/ui/tools/text-tool.cpp @@ -1612,7 +1612,7 @@ int TextTool::_styleQueried(SPStyle *style, int property) if (!rawptr || !SP_IS_OBJECT(rawptr)) { continue; } - pos_obj = SP_OBJECT(rawptr); + pos_obj = reinterpret_cast<SPObject *>(rawptr); while (SP_IS_STRING(pos_obj) && pos_obj->parent) { pos_obj = pos_obj->parent; // SPStrings don't have style } |
