summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJabier Arraiza <jabier.arraiza@marker.es>2019-09-16 21:11:01 +0000
committerJabier Arraiza <jabier.arraiza@marker.es>2019-09-16 21:11:01 +0000
commit8456986cea7b4a4cce5135e9b4170d39630a50ac (patch)
tree20464cca95bf3f70bb5e89d69bdb1b832b3e02e5
parentFix operands in LPE bool (diff)
downloadinkscape-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.cpp5
-rw-r--r--src/path-chemistry.cpp4
-rw-r--r--src/text-editing.cpp22
-rw-r--r--src/ui/dialog/spellcheck.cpp4
-rw-r--r--src/ui/tools/text-tool.cpp2
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
}