From a05ee3025d74d4531e1b608a4b836dcb0b308784 Mon Sep 17 00:00:00 2001 From: Joogab Yun Date: Tue, 1 Sep 2020 17:20:19 +0900 Subject: [PATCH] [Tizen] Revert "Changes after touch consumed behaviour change" This reverts commit 881f902d3aa97cbc198e7c6490db3a23bba329b5. Change-Id: Ibf0710311e6d0be83ab349c2be2da9a9423b7aef --- .../internal/controls/buttons/button-impl.cpp | 9 ++- .../internal/controls/popup/popup-impl.cpp | 70 +++++++++++----------- dali-toolkit/internal/controls/popup/popup-impl.h | 8 +-- .../scrollable/item-view/item-view-impl.cpp | 2 +- .../scrollable/scroll-view/scroll-view-impl.cpp | 2 +- .../internal/controls/slider/slider-impl.cpp | 4 +- .../controls/text-controls/text-editor-impl.cpp | 2 +- .../controls/text-controls/text-field-impl.cpp | 2 +- .../drag-and-drop-detector-impl.cpp | 4 +- .../internal/text/decorator/text-decorator.cpp | 9 ++- dali-toolkit/public-api/controls/control-impl.cpp | 0 docs/content/example-code/properties.cpp | 2 +- 12 files changed, 57 insertions(+), 57 deletions(-) mode change 100644 => 100755 dali-toolkit/internal/controls/popup/popup-impl.h mode change 100644 => 100755 dali-toolkit/internal/controls/scrollable/item-view/item-view-impl.cpp mode change 100644 => 100755 dali-toolkit/internal/controls/scrollable/scroll-view/scroll-view-impl.cpp mode change 100644 => 100755 dali-toolkit/internal/controls/slider/slider-impl.cpp mode change 100644 => 100755 dali-toolkit/internal/drag-drop-detector/drag-and-drop-detector-impl.cpp mode change 100644 => 100755 dali-toolkit/public-api/controls/control-impl.cpp diff --git a/dali-toolkit/internal/controls/buttons/button-impl.cpp b/dali-toolkit/internal/controls/buttons/button-impl.cpp index 3bebcde..a16117a 100644 --- a/dali-toolkit/internal/controls/buttons/button-impl.cpp +++ b/dali-toolkit/internal/controls/buttons/button-impl.cpp @@ -630,7 +630,11 @@ bool Button::OnAccessibilityActivated() bool Button::OnTouch( Actor actor, const TouchEvent& touch ) { - if( !IsDisabled() && (actor == touch.GetHitActor(0)) ) + + // Only events are processed when the button is not disabled + auto result( false ); + + if( !IsDisabled() ) { if ( 1 == touch.GetPointCount() ) { @@ -671,8 +675,9 @@ bool Button::OnTouch( Actor actor, const TouchEvent& touch ) // Sets the button state to the default mButtonPressedState = UNPRESSED; } + result = true; } - return false; + return result; } bool Button::OnKeyboardEnter() diff --git a/dali-toolkit/internal/controls/popup/popup-impl.cpp b/dali-toolkit/internal/controls/popup/popup-impl.cpp index 42b1083..c7a0562 100644 --- a/dali-toolkit/internal/controls/popup/popup-impl.cpp +++ b/dali-toolkit/internal/controls/popup/popup-impl.cpp @@ -330,14 +330,14 @@ void Popup::OnInitialize() mPopupLayout.SetFitHeight( 0 ); // Set row to fit. mPopupLayout.SetFitHeight( 1 ); // Set row to fit. + mPopupLayout.TouchSignal().Connect( this, &Popup::OnDialogTouched ); + mPopupContainer.Add( mPopupLayout ); // Any content after this point which is added to Self() will be re-parented to mContent. mAlterAddedChild = true; SetAsKeyboardFocusGroup( true ); - - SetupTouch(); } Popup::~Popup() @@ -593,6 +593,9 @@ void Popup::SetPopupBackgroundImage( Actor image ) mPopupBackgroundImage.SetProperty( Actor::Property::ANCHOR_POINT, AnchorPoint::CENTER ); mPopupBackgroundImage.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::CENTER ); + // OnDialogTouched only consumes the event. It prevents the touch event to be caught by the backing. + mPopupBackgroundImage.TouchSignal().Connect( this, &Popup::OnDialogTouched ); + // Set the popup border to be slightly larger than the layout contents. UpdateBackgroundPositionAndSize(); @@ -935,6 +938,7 @@ Toolkit::Control Popup::CreateBacking() // Default to being transparent. backing.SetProperty( Actor::Property::COLOR_ALPHA, 0.0f ); + backing.TouchSignal().Connect( this, &Popup::OnBackingTouched ); backing.WheelEventSignal().Connect( this, &Popup::OnBackingWheelEvent ); return backing; } @@ -1115,11 +1119,7 @@ const std::string& Popup::GetTailRightImage() const void Popup::SetTouchTransparent( bool enabled ) { - if( mTouchTransparent != enabled ) - { - mTouchTransparent = enabled; - SetupTouch(); - } + mTouchTransparent = enabled; } const bool Popup::IsTouchTransparent() const @@ -1534,18 +1534,26 @@ bool Popup::DoConnectSignal( BaseObject* object, ConnectionTrackerInterface* tra bool Popup::OnBackingTouched( Actor actor, const TouchEvent& touch ) { - // Allow events to pass through if the backing isn't the hit-actor - if( (touch.GetHitActor(0) == actor) && - (touch.GetPointCount() > 0) && - (touch.GetState( 0 ) == PointState::DOWN)) + // Allow events to pass through if touch transparency is enabled. + if( mTouchTransparent ) { - // Guard against destruction during signal emission. - Toolkit::Popup handle( GetOwner() ); + return false; + } - mTouchedOutsideSignal.Emit(); + if( touch.GetPointCount() > 0 ) + { + if( touch.GetState( 0 ) == PointState::DOWN ) + { + // Guard against destruction during signal emission. + Toolkit::Popup handle( GetOwner() ); + + mTouchedOutsideSignal.Emit(); + } } - return false; + // Block anything behind backing becoming touched. + mLayer.SetProperty( Layer::Property::CONSUMES_TOUCH, true ); + return true; } bool Popup::OnBackingWheelEvent( Actor actor, const WheelEvent& event ) @@ -1556,13 +1564,22 @@ bool Popup::OnBackingWheelEvent( Actor actor, const WheelEvent& event ) return false; } + // Consume wheel event in dimmed backing actor. + mLayer.SetProperty( Layer::Property::CONSUMES_TOUCH, true ); return true; } bool Popup::OnDialogTouched( Actor actor, const TouchEvent& touch ) { - // Only connecting this so the backing does not become the default hit-actor and inadvertently closes the popup - return false; + // Allow events to pass through if touch transparency is enabled. + if( mTouchTransparent ) + { + return false; + } + + // Consume event (stops backing actor receiving touch events) + mLayer.SetProperty( Layer::Property::CONSUMES_TOUCH, true ); + return true; } void Popup::OnSceneConnection( int depth ) @@ -1958,25 +1975,6 @@ Actor Popup::GetNextKeyboardFocusableActor( Actor currentFocusedActor, Toolkit:: return nextFocusableActor; } -void Popup::SetupTouch() -{ - if( ! mTouchTransparent ) - { - // Connect all the signals and set us up to consume all touch events - mBacking.TouchSignal().Connect( this, &Popup::OnBackingTouched ); - mPopupBackgroundImage.TouchSignal().Connect( this, &Popup::OnDialogTouched ); - mPopupLayout.TouchSignal().Connect( this, &Popup::OnDialogTouched ); - mLayer.SetProperty( Layer::Property::CONSUMES_TOUCH, true ); - } - else - { - // We are touch transparent so disconnect all signals and ensure our layer does not consumed all touch events - mBacking.TouchSignal().Disconnect( this, &Popup::OnBackingTouched ); - mPopupBackgroundImage.TouchSignal().Disconnect( this, &Popup::OnDialogTouched ); - mPopupLayout.TouchSignal().Disconnect( this, &Popup::OnDialogTouched ); - mLayer.SetProperty( Layer::Property::CONSUMES_TOUCH, false ); - } -} } // namespace Internal diff --git a/dali-toolkit/internal/controls/popup/popup-impl.h b/dali-toolkit/internal/controls/popup/popup-impl.h old mode 100644 new mode 100755 index 17217d6..781871e --- a/dali-toolkit/internal/controls/popup/popup-impl.h +++ b/dali-toolkit/internal/controls/popup/popup-impl.h @@ -2,7 +2,7 @@ #define DALI_TOOLKIT_INTERNAL_POPUP_H /* - * Copyright (c) 2020 Samsung Electronics Co., Ltd. + * Copyright (c) 2019 Samsung Electronics Co., Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -499,12 +499,6 @@ private: */ void AddFocusableChildrenRecursive( Actor parent, std::vector< Actor >& focusableActors ); - /** - * Sets up the touch signals connections as required. - * @note This must be called after all the members have been created. - */ - void SetupTouch(); - private: // Undefined. diff --git a/dali-toolkit/internal/controls/scrollable/item-view/item-view-impl.cpp b/dali-toolkit/internal/controls/scrollable/item-view/item-view-impl.cpp old mode 100644 new mode 100755 index 939ab67..5ed9b79 --- a/dali-toolkit/internal/controls/scrollable/item-view/item-view-impl.cpp +++ b/dali-toolkit/internal/controls/scrollable/item-view/item-view-impl.cpp @@ -1142,7 +1142,7 @@ bool ItemView::OnTouch( Actor actor, const TouchEvent& touch ) RemoveAnimation(mScrollAnimation); } - return false; // Do not consume as we're potentially scrolling (detecting pan gestures) + return true; // consume since we're potentially scrolling } void ItemView::OnPan( const PanGesture& gesture ) diff --git a/dali-toolkit/internal/controls/scrollable/scroll-view/scroll-view-impl.cpp b/dali-toolkit/internal/controls/scrollable/scroll-view/scroll-view-impl.cpp old mode 100644 new mode 100755 index 2a3bbd5..9f9d1b8 --- a/dali-toolkit/internal/controls/scrollable/scroll-view/scroll-view-impl.cpp +++ b/dali-toolkit/internal/controls/scrollable/scroll-view/scroll-view-impl.cpp @@ -2125,7 +2125,7 @@ bool ScrollView::OnTouch( Actor actor, const TouchEvent& touch ) mScrollInterrupted = false; } - return false; + return true; } bool ScrollView::OnWheelEvent(const WheelEvent& event) diff --git a/dali-toolkit/internal/controls/slider/slider-impl.cpp b/dali-toolkit/internal/controls/slider/slider-impl.cpp old mode 100644 new mode 100755 index 757bef8..07698d1 --- a/dali-toolkit/internal/controls/slider/slider-impl.cpp +++ b/dali-toolkit/internal/controls/slider/slider-impl.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2020 Samsung Electronics Co., Ltd. + * Copyright (c) 2017 Samsung Electronics Co., Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -240,7 +240,7 @@ bool Slider::OnTouch(Actor actor, const TouchEvent& touch) } } - return false; + return true; } void Slider::OnPan( Actor actor, const PanGesture& gesture ) 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 14bac16..7036d79 100755 --- a/dali-toolkit/internal/controls/text-controls/text-editor-impl.cpp +++ b/dali-toolkit/internal/controls/text-controls/text-editor-impl.cpp @@ -1863,7 +1863,7 @@ void TextEditor::OnSceneConnection( int depth ) bool TextEditor::OnTouched( Actor actor, const TouchEvent& touch ) { - return false; + return true; } void TextEditor::OnIdleSignal() 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 16e73dd..b27a4dc 100755 --- a/dali-toolkit/internal/controls/text-controls/text-field-impl.cpp +++ b/dali-toolkit/internal/controls/text-controls/text-field-impl.cpp @@ -1896,7 +1896,7 @@ void TextField::OnSceneConnection( int depth ) bool TextField::OnTouched( Actor actor, const TouchEvent& touch ) { - return false; + return true; } void TextField::OnIdleSignal() diff --git a/dali-toolkit/internal/drag-drop-detector/drag-and-drop-detector-impl.cpp b/dali-toolkit/internal/drag-drop-detector/drag-and-drop-detector-impl.cpp old mode 100644 new mode 100755 index 12d42fe..ec4f55f --- a/dali-toolkit/internal/drag-drop-detector/drag-and-drop-detector-impl.cpp +++ b/dali-toolkit/internal/drag-drop-detector/drag-and-drop-detector-impl.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2020 Samsung Electronics Co., Ltd. + * Copyright (c) 2018 Samsung Electronics Co., Ltd. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -209,7 +209,7 @@ bool DragAndDropDetector::OnDrag(Dali::Actor actor, const Dali::TouchEvent& data } mPointDown = false; } - return false; + return true; } const std::string& DragAndDropDetector::GetContent() const diff --git a/dali-toolkit/internal/text/decorator/text-decorator.cpp b/dali-toolkit/internal/text/decorator/text-decorator.cpp index bee7d9a..bfc4686 100644 --- a/dali-toolkit/internal/text/decorator/text-decorator.cpp +++ b/dali-toolkit/internal/text/decorator/text-decorator.cpp @@ -1386,7 +1386,8 @@ struct Decorator::Impl : public ConnectionTracker SetHandleImage( GRAB_HANDLE ); } - return false; + // Consume to avoid pop-ups accidentally closing, when handle is outside of pop-up area + return true; } bool OnHandleOneTouched( Actor actor, const TouchEvent& touch ) @@ -1416,7 +1417,8 @@ struct Decorator::Impl : public ConnectionTracker SetHandleImage( LEFT_SELECTION_HANDLE ); } - return false; + // Consume to avoid pop-ups accidentally closing, when handle is outside of pop-up area + return true; } bool OnHandleTwoTouched( Actor actor, const TouchEvent& touch ) @@ -1446,7 +1448,8 @@ struct Decorator::Impl : public ConnectionTracker SetHandleImage( RIGHT_SELECTION_HANDLE ); } - return false; + // Consume to avoid pop-ups accidentally closing, when handle is outside of pop-up area + return true; } void HandleResetPosition( PropertyNotification& source ) diff --git a/dali-toolkit/public-api/controls/control-impl.cpp b/dali-toolkit/public-api/controls/control-impl.cpp old mode 100644 new mode 100755 diff --git a/docs/content/example-code/properties.cpp b/docs/content/example-code/properties.cpp index e8f4d56..b015bf8 100644 --- a/docs/content/example-code/properties.cpp +++ b/docs/content/example-code/properties.cpp @@ -113,7 +113,7 @@ public: valueText << touchedCount; mTagText.SetProperty( TextLabel::Property::TEXT, valueText.str() ); - return true; // Consumed meaning any gestures will be cancelled + return true; // Consumed } // C++ EXAMPLE END -- 2.7.4