From: Bowon Ryu Date: Thu, 8 Jul 2021 07:25:25 +0000 (+0000) Subject: Merge "Fix corrupted markup background" into devel/master X-Git-Tag: dali_2.0.34~3 X-Git-Url: http://review.tizen.org/git/?p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git;a=commitdiff_plain;h=d3a0ce5bb20589eb078cb4b86801482005b95b2c;hp=c7c2401a9d5f40eba903e83962534c217c9e2682 Merge "Fix corrupted markup background" into devel/master --- diff --git a/dali-toolkit/internal/controls/text-controls/text-editor-impl.cpp b/dali-toolkit/internal/controls/text-controls/text-editor-impl.cpp index 72503a5..4f8dd66 100644 --- a/dali-toolkit/internal/controls/text-controls/text-editor-impl.cpp +++ b/dali-toolkit/internal/controls/text-controls/text-editor-impl.cpp @@ -37,6 +37,7 @@ #include #include #include +#include #include #include #include @@ -1204,7 +1205,10 @@ void TextEditor::SelectWholeText() if(mController && mController->IsShowingRealText()) { mController->SelectWholeText(); - SetKeyInputFocus(); + if(!Self().GetProperty(Actor::Property::KEYBOARD_FOCUSABLE) || !Toolkit::KeyboardFocusManager::Get().SetCurrentFocusActor(Self())) + { + SetKeyInputFocus(); + } } } @@ -1752,7 +1756,10 @@ void TextEditor::OnTap(const TapGesture& gesture) mController->TapEvent(gesture.GetNumberOfTaps(), localPoint.x - padding.start, localPoint.y - padding.top); mController->AnchorEvent(localPoint.x - padding.start, localPoint.y - padding.top); - SetKeyInputFocus(); + if(!Self().GetProperty(Actor::Property::KEYBOARD_FOCUSABLE) || !Toolkit::KeyboardFocusManager::Get().SetCurrentFocusActor(Self())) + { + SetKeyInputFocus(); + } } void TextEditor::OnPan(const PanGesture& gesture) @@ -1771,7 +1778,10 @@ void TextEditor::OnLongPress(const LongPressGesture& gesture) const Vector2& localPoint = gesture.GetLocalPoint(); mController->LongPressEvent(gesture.GetState(), localPoint.x - padding.start, localPoint.y - padding.top); - SetKeyInputFocus(); + if(!Self().GetProperty(Actor::Property::KEYBOARD_FOCUSABLE) || !Toolkit::KeyboardFocusManager::Get().SetCurrentFocusActor(Self())) + { + SetKeyInputFocus(); + } } bool TextEditor::OnKeyEvent(const KeyEvent& event) @@ -1935,7 +1945,10 @@ void TextEditor::SetTextSelectionRange(const uint32_t* start, const uint32_t* en if(mController && mController->IsShowingRealText()) { mController->SetTextSelectionRange(start, end); - SetKeyInputFocus(); + if(!Self().GetProperty(Actor::Property::KEYBOARD_FOCUSABLE) || !Toolkit::KeyboardFocusManager::Get().SetCurrentFocusActor(Self())) + { + SetKeyInputFocus(); + } } } @@ -2253,10 +2266,10 @@ bool TextEditor::AccessibleImpl::SetCursorOffset(size_t offset) return true; } -Dali::Accessibility::Range TextEditor::AccessibleImpl::GetTextAtOffset( size_t offset, Dali::Accessibility::TextBoundary boundary) +Dali::Accessibility::Range TextEditor::AccessibleImpl::GetTextAtOffset(size_t offset, Dali::Accessibility::TextBoundary boundary) { - auto self = Toolkit::TextEditor::DownCast(Self()); - auto text = self.GetProperty(Toolkit::TextEditor::Property::TEXT).Get(); + auto self = Toolkit::TextEditor::DownCast(Self()); + auto text = self.GetProperty(Toolkit::TextEditor::Property::TEXT).Get(); auto textSize = text.size(); auto range = Dali::Accessibility::Range{}; @@ -2277,7 +2290,7 @@ Dali::Accessibility::Range TextEditor::AccessibleImpl::GetTextAtOffset( size_t o case Dali::Accessibility::TextBoundary::LINE: { auto textString = text.c_str(); - auto breaks = std::vector(textSize, 0); + auto breaks = std::vector(textSize, 0); if(boundary == Dali::Accessibility::TextBoundary::WORD) { @@ -2352,8 +2365,8 @@ Dali::Accessibility::Range TextEditor::AccessibleImpl::GetRangeOfSelection(size_ return {}; } - auto self = Toolkit::TextEditor::DownCast(Self()); - auto controller = Dali::Toolkit::GetImpl(self).GetTextController(); + auto self = Toolkit::TextEditor::DownCast(Self()); + auto controller = Dali::Toolkit::GetImpl(self).GetTextController(); std::string value{}; controller->RetrieveSelection(value); auto indices = controller->GetSelectionIndexes(); @@ -2436,7 +2449,7 @@ Dali::Accessibility::States TextEditor::AccessibleImpl::CalculateStates() { using namespace Dali::Accessibility; - auto states = DevelControl::AccessibleImpl::CalculateStates(); + auto states = DevelControl::AccessibleImpl::CalculateStates(); states[State::EDITABLE] = true; states[State::FOCUSABLE] = true; @@ -2451,7 +2464,7 @@ Dali::Accessibility::States TextEditor::AccessibleImpl::CalculateStates() bool TextEditor::AccessibleImpl::InsertText(size_t startPosition, std::string text) { - auto self = Toolkit::TextEditor::DownCast(Self()); + auto self = Toolkit::TextEditor::DownCast(Self()); auto insertedText = self.GetProperty(Toolkit::TextEditor::Property::TEXT).Get(); insertedText.insert(startPosition, text); diff --git a/dali-toolkit/internal/controls/text-controls/text-field-impl.cpp b/dali-toolkit/internal/controls/text-controls/text-field-impl.cpp index b1a85c7..1e87035 100644 --- a/dali-toolkit/internal/controls/text-controls/text-field-impl.cpp +++ b/dali-toolkit/internal/controls/text-controls/text-field-impl.cpp @@ -36,6 +36,7 @@ #include #include #include +#include #include #include #include @@ -1149,7 +1150,10 @@ void TextField::SelectWholeText() if(mController && mController->IsShowingRealText()) { mController->SelectWholeText(); - SetKeyInputFocus(); + if(!Self().GetProperty(Actor::Property::KEYBOARD_FOCUSABLE) || !Toolkit::KeyboardFocusManager::Get().SetCurrentFocusActor(Self())) + { + SetKeyInputFocus(); + } } } @@ -1176,7 +1180,10 @@ void TextField::SetTextSelectionRange(const uint32_t* start, const uint32_t* end if(mController && mController->IsShowingRealText()) { mController->SetTextSelectionRange(start, end); - SetKeyInputFocus(); + if(!Self().GetProperty(Actor::Property::KEYBOARD_FOCUSABLE) || !Toolkit::KeyboardFocusManager::Get().SetCurrentFocusActor(Self())) + { + SetKeyInputFocus(); + } } } @@ -1666,7 +1673,10 @@ void TextField::OnTap(const TapGesture& gesture) mController->TapEvent(gesture.GetNumberOfTaps(), localPoint.x - padding.start, localPoint.y - padding.top); mController->AnchorEvent(localPoint.x - padding.start, localPoint.y - padding.top); - SetKeyInputFocus(); + if(!Self().GetProperty(Actor::Property::KEYBOARD_FOCUSABLE) || !Toolkit::KeyboardFocusManager::Get().SetCurrentFocusActor(Self())) + { + SetKeyInputFocus(); + } } void TextField::OnPan(const PanGesture& gesture) @@ -1685,7 +1695,10 @@ void TextField::OnLongPress(const LongPressGesture& gesture) const Vector2& localPoint = gesture.GetLocalPoint(); mController->LongPressEvent(gesture.GetState(), localPoint.x - padding.start, localPoint.y - padding.top); - SetKeyInputFocus(); + if(!Self().GetProperty(Actor::Property::KEYBOARD_FOCUSABLE) || !Toolkit::KeyboardFocusManager::Get().SetCurrentFocusActor(Self())) + { + SetKeyInputFocus(); + } } bool TextField::OnKeyEvent(const KeyEvent& event) @@ -2043,8 +2056,8 @@ bool TextField::AccessibleImpl::SetCursorOffset(size_t offset) Dali::Accessibility::Range TextField::AccessibleImpl::GetTextAtOffset( size_t offset, Dali::Accessibility::TextBoundary boundary) { - auto self = Toolkit::TextField::DownCast(Self()); - auto text = self.GetProperty(Toolkit::TextField::Property::TEXT).Get(); + auto self = Toolkit::TextField::DownCast(Self()); + auto text = self.GetProperty(Toolkit::TextField::Property::TEXT).Get(); auto textSize = text.size(); auto range = Dali::Accessibility::Range{}; @@ -2065,7 +2078,7 @@ Dali::Accessibility::Range TextField::AccessibleImpl::GetTextAtOffset( case Dali::Accessibility::TextBoundary::LINE: { auto textString = text.c_str(); - auto breaks = std::vector(textSize, 0); + auto breaks = std::vector(textSize, 0); if(boundary == Dali::Accessibility::TextBoundary::WORD) { @@ -2140,8 +2153,8 @@ Dali::Accessibility::Range TextField::AccessibleImpl::GetRangeOfSelection(size_t return {}; } - auto self = Toolkit::TextField::DownCast(Self()); - auto controller = Dali::Toolkit::GetImpl(self).GetTextController(); + auto self = Toolkit::TextField::DownCast(Self()); + auto controller = Dali::Toolkit::GetImpl(self).GetTextController(); std::string value{}; controller->RetrieveSelection(value); auto indices = controller->GetSelectionIndexes(); @@ -2240,7 +2253,7 @@ Dali::Accessibility::States TextField::AccessibleImpl::CalculateStates() bool TextField::AccessibleImpl::InsertText(size_t startPosition, std::string text) { - auto self = Toolkit::TextField::DownCast(Self()); + auto self = Toolkit::TextField::DownCast(Self()); auto insertedText = self.GetProperty(Toolkit::TextField::Property::TEXT).Get(); insertedText.insert(startPosition, text); diff --git a/dali-toolkit/internal/graphics/shaders/color-visual-shader.frag b/dali-toolkit/internal/graphics/shaders/color-visual-shader.frag index 92b29a6..74e8f58 100644 --- a/dali-toolkit/internal/graphics/shaders/color-visual-shader.frag +++ b/dali-toolkit/internal/graphics/shaders/color-visual-shader.frag @@ -140,8 +140,9 @@ lowp vec4 convertBorderlineColor(lowp vec4 textureColor) textureColor = mix(textureColor, vec4(borderlineColor.xyz, 0.0), smoothstep(MinTexturelinePotential, MaxTexturelinePotential, potential)); } borderlineOpacity *= borderlineColor.a; + return mix(textureColor, vec4(borderlineColor.xyz, 1.0), borderlineOpacity); } - return mix(textureColor, vec4(borderlineColor.xyz, 1.0), borderlineOpacity); + return mix(textureColor, borderlineColor, borderlineOpacity); } #endif @@ -238,13 +239,13 @@ mediump float calculateBlurOpacity() void main() { - lowp vec4 targetColor = vec4(mixColor, 1.0) * uColor; + lowp vec4 targetColor = vec4(mixColor, 1.0); #if IS_REQUIRED_BLUR || IS_REQUIRED_ROUNDED_CORNER || IS_REQUIRED_BORDERLINE // skip most potential calculate for performance if(abs(vPosition.x) < vOptRectSize.x && abs(vPosition.y) < vOptRectSize.y) { - OUT_COLOR = targetColor; + OUT_COLOR = targetColor * uColor; return; } PreprocessPotential(); @@ -253,7 +254,7 @@ void main() #if !IS_REQUIRED_BLUR && IS_REQUIRED_BORDERLINE targetColor = convertBorderlineColor(targetColor); #endif - OUT_COLOR = targetColor; + OUT_COLOR = targetColor * uColor; #if IS_REQUIRED_BLUR mediump float opacity = calculateBlurOpacity(); diff --git a/dali-toolkit/internal/graphics/shaders/gradient-visual-shader.frag b/dali-toolkit/internal/graphics/shaders/gradient-visual-shader.frag index 9c897b4..f859a24 100644 --- a/dali-toolkit/internal/graphics/shaders/gradient-visual-shader.frag +++ b/dali-toolkit/internal/graphics/shaders/gradient-visual-shader.frag @@ -139,8 +139,9 @@ lowp vec4 convertBorderlineColor(lowp vec4 textureColor) textureColor = mix(textureColor, vec4(borderlineColor.xyz, 0.0), smoothstep(MinTexturelinePotential, MaxTexturelinePotential, potential)); } borderlineOpacity *= borderlineColor.a; + return mix(textureColor, vec4(borderlineColor.xyz, 1.0), borderlineOpacity); } - return mix(textureColor, vec4(borderlineColor.xyz, 1.0), borderlineOpacity); + return mix(textureColor, borderlineColor, borderlineOpacity); } #endif @@ -169,16 +170,16 @@ mediump float calculateCornerOpacity() void main() { #if RADIAL - lowp vec4 textureColor = TEXTURE(sTexture, vec2(length(vTexCoord), 0.5)) * vec4(mixColor, 1.0) * uColor; + lowp vec4 textureColor = TEXTURE(sTexture, vec2(length(vTexCoord), 0.5)) * vec4(mixColor, 1.0); #else - lowp vec4 textureColor = TEXTURE(sTexture, vec2(vTexCoord.y, 0.5)) * vec4(mixColor, 1.0) * uColor; + lowp vec4 textureColor = TEXTURE(sTexture, vec2(vTexCoord.y, 0.5)) * vec4(mixColor, 1.0); #endif #if IS_REQUIRED_ROUNDED_CORNER || IS_REQUIRED_BORDERLINE // skip most potential calculate for performance if(abs(vPosition.x) < vOptRectSize.x && abs(vPosition.y) < vOptRectSize.y) { - OUT_COLOR = textureColor; + OUT_COLOR = textureColor * uColor; return; } PreprocessPotential(); @@ -187,7 +188,7 @@ void main() #if IS_REQUIRED_BORDERLINE textureColor = convertBorderlineColor(textureColor); #endif - OUT_COLOR = textureColor; + OUT_COLOR = textureColor * uColor; #if IS_REQUIRED_ROUNDED_CORNER mediump float opacity = calculateCornerOpacity(); diff --git a/dali-toolkit/internal/graphics/shaders/image-visual-shader.frag b/dali-toolkit/internal/graphics/shaders/image-visual-shader.frag index b0dcfec..0bba311 100644 --- a/dali-toolkit/internal/graphics/shaders/image-visual-shader.frag +++ b/dali-toolkit/internal/graphics/shaders/image-visual-shader.frag @@ -150,19 +150,22 @@ lowp vec4 convertBorderlineColor(lowp vec4 textureColor) mediump float tCornerRadius = -gCenterPosition; mediump float MaxTexturelinePotential = tCornerRadius + gPotentialRange; mediump float MinTexturelinePotential = tCornerRadius - gPotentialRange; + lowp vec3 BorderlineColorRGB = borderlineColor.xyz; + BorderlineColorRGB *= mix(1.0, borderlineColor.a, preMultipliedAlpha); if(potential > MaxTexturelinePotential) { // potential is out of texture range. use borderline color instead of texture - textureColor = vec4(borderlineColor.xyz, 0.0); + textureColor = vec4(BorderlineColorRGB, 0.0); } else if(potential > MinTexturelinePotential) { // potential is in texture range - textureColor = mix(textureColor, vec4(borderlineColor.xyz, 0.0), smoothstep(MinTexturelinePotential, MaxTexturelinePotential, potential)); + textureColor = mix(textureColor, vec4(BorderlineColorRGB, 0.0), smoothstep(MinTexturelinePotential, MaxTexturelinePotential, potential)); } borderlineOpacity *= borderlineColor.a; + return mix(textureColor, vec4(BorderlineColorRGB, 1.0), borderlineOpacity); } - return mix(textureColor, vec4(borderlineColor.xyz, 1.0), borderlineOpacity); + return mix(textureColor, borderlineColor, borderlineOpacity); } #endif @@ -199,13 +202,13 @@ void main() mediump vec2 texCoord = vTexCoord; #endif - lowp vec4 textureColor = TEXTURE( sTexture, texCoord ) * uColor * vec4( mixColor, 1.0 ); + lowp vec4 textureColor = TEXTURE( sTexture, texCoord ) * vec4( mixColor, 1.0 ); #if IS_REQUIRED_ROUNDED_CORNER || IS_REQUIRED_BORDERLINE // skip most potential calculate for performance if(abs(vPosition.x) < vOptRectSize.x && abs(vPosition.y) < vOptRectSize.y) { - OUT_COLOR = textureColor; + OUT_COLOR = textureColor * uColor; return; } PreprocessPotential(); @@ -214,7 +217,7 @@ void main() #if IS_REQUIRED_BORDERLINE textureColor = convertBorderlineColor(textureColor); #endif - OUT_COLOR = textureColor; + OUT_COLOR = textureColor * uColor; #if IS_REQUIRED_ROUNDED_CORNER mediump float opacity = calculateCornerOpacity();