mirror of
https://github.com/juce-framework/JUCE.git
synced 2026-01-09 23:34:20 +00:00
Fix psabi warning emitted by GCC on ARM64
The type std::pair<Point<float>, float> inherits from an empty base on C++17. Due to a bug in GCC 10.1 this would prevent the compiler from treating it as a HFA type, and it would use a different register to pass it, than it does in newer GCC versions. Because of this ABI change an ABI warning is emitted by GCC today, hinting at this fact. By using a custom struct that does not inherit from an empty base we are avoiding emitting this warning.
This commit is contained in:
parent
5f5a247f82
commit
bd015f5c97
2 changed files with 14 additions and 7 deletions
|
|
@ -661,7 +661,7 @@ void TextEditor::repaintText (Range<int> range)
|
|||
const auto info = getCursorEdge (caretState.withPosition (range.getEnd())
|
||||
.withPreferredEdge (Edge::leading));
|
||||
|
||||
y2 = (int) (info.first.y + lh * 2.0f);
|
||||
y2 = (int) (info.anchor.y + lh * 2.0f);
|
||||
}
|
||||
|
||||
const auto offset = getYOffset();
|
||||
|
|
@ -872,7 +872,7 @@ Range<int64> TextEditor::getLineRangeForIndex (int index)
|
|||
+ lastParagraphItem.range.getStart();
|
||||
}
|
||||
|
||||
std::pair<Point<float>, float> TextEditor::getTextSelectionEdge (int index, Edge edge) const
|
||||
TextEditor::CaretEdge TextEditor::getTextSelectionEdge (int index, Edge edge) const
|
||||
{
|
||||
jassert (0 <= index && index < getTotalNumChars());
|
||||
const auto textRange = Range<int64>::withStartAndLength ((int64) index, 1);
|
||||
|
|
@ -1702,8 +1702,8 @@ TextEditor::Edge TextEditor::getEdgeTypeCloserToPosition (int indexInText, Point
|
|||
{
|
||||
const auto testCaret = caretState.withPosition (indexInText);
|
||||
|
||||
const auto leading = getCursorEdge (testCaret.withPreferredEdge (Edge::leading)).first.getDistanceFrom (pos);
|
||||
const auto trailing = getCursorEdge (testCaret.withPreferredEdge (Edge::trailing)).first.getDistanceFrom (pos);
|
||||
const auto leading = getCursorEdge (testCaret.withPreferredEdge (Edge::leading)).anchor.getDistanceFrom (pos);
|
||||
const auto trailing = getCursorEdge (testCaret.withPreferredEdge (Edge::trailing)).anchor.getDistanceFrom (pos);
|
||||
|
||||
if (leading < trailing)
|
||||
return Edge::leading;
|
||||
|
|
@ -2139,7 +2139,7 @@ bool TextEditor::isEmpty() const
|
|||
return getTotalNumChars() == 0;
|
||||
}
|
||||
|
||||
std::pair<Point<float>, float> TextEditor::getCursorEdge (const CaretState& tempCaret) const
|
||||
TextEditor::CaretEdge TextEditor::getCursorEdge (const CaretState& tempCaret) const
|
||||
{
|
||||
const auto visualIndex = tempCaret.getVisualIndex();
|
||||
jassert (0 <= visualIndex && visualIndex <= getTotalNumChars());
|
||||
|
|
|
|||
|
|
@ -906,8 +906,15 @@ private:
|
|||
void insert (const String&, int insertIndex, const Font&, Colour, UndoManager*, int newCaretPos);
|
||||
void reinsert (const TextEditorStorageChunks& chunks);
|
||||
void remove (Range<int>, UndoManager*, int caretPositionToMoveTo, TextEditorStorageChunks* removedOut = nullptr);
|
||||
std::pair<Point<float>, float> getTextSelectionEdge (int index, Edge edge) const;
|
||||
std::pair<Point<float>, float> getCursorEdge (const CaretState& caret) const;
|
||||
|
||||
struct CaretEdge
|
||||
{
|
||||
Point<float> anchor;
|
||||
float height{};
|
||||
};
|
||||
|
||||
CaretEdge getTextSelectionEdge (int index, Edge edge) const;
|
||||
CaretEdge getCursorEdge (const CaretState& caret) const;
|
||||
void updateCaretPosition();
|
||||
void updateValueFromText();
|
||||
void textWasChangedByValue();
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue