[DEV] Change scrool interface of the finger interface (2 finger instead of 1)
This commit is contained in:
parent
b6feeb382f
commit
8fc8738c0f
@ -440,11 +440,6 @@ void ewol::context::InputManager::state(enum ewol::key::type _type,
|
||||
<< " == >" << eventTable[_pointerID].destinationInputId
|
||||
<< " [UP] " << _pos);
|
||||
eventTable[_pointerID].posEvent = _pos;
|
||||
localEventInput(_type,
|
||||
eventTable[_pointerID].curentWidgetEvent,
|
||||
_pointerID,
|
||||
ewol::key::statusUp,
|
||||
_pos);
|
||||
// generate event (single)
|
||||
if( abs(eventTable[_pointerID].downStart.x() - _pos.x()) < localLimit.DpiOffset
|
||||
&& abs(eventTable[_pointerID].downStart.y() - _pos.y()) < localLimit.DpiOffset ){
|
||||
@ -481,6 +476,12 @@ void ewol::context::InputManager::state(enum ewol::key::type _type,
|
||||
eventTable[_pointerID].nbClickEvent = 0;
|
||||
}
|
||||
}
|
||||
// send up event after the single event to prevent multiple widget getting elements
|
||||
localEventInput(_type,
|
||||
eventTable[_pointerID].curentWidgetEvent,
|
||||
_pointerID,
|
||||
ewol::key::statusUp,
|
||||
_pos);
|
||||
// specific for tuch event
|
||||
if (_type == ewol::key::typeFinger) {
|
||||
cleanElement(eventTable, _pointerID);
|
||||
|
@ -88,7 +88,7 @@ namespace ewol {
|
||||
public:
|
||||
InputManager(ewol::Context& _context);
|
||||
~InputManager(void);
|
||||
void setDpi(int32_t newDPI);
|
||||
void setDpi(int32_t _newDPI);
|
||||
|
||||
// note if id<0 == > the it was finger event ...
|
||||
void motion(enum ewol::key::type _type, int _pointerID, vec2 _pos );
|
||||
|
@ -54,6 +54,12 @@ namespace ewol {
|
||||
inline const vec2& getPos(void) const {
|
||||
return m_pos;
|
||||
};
|
||||
/**
|
||||
* @brief Reset the input property of the curent event.
|
||||
*/
|
||||
void reset(void) const {
|
||||
// TODO : Call the entry element ant rest it ...
|
||||
}
|
||||
};
|
||||
etk::CCout& operator <<(etk::CCout& _os, const ewol::event::Input& _obj);
|
||||
|
||||
|
@ -24,6 +24,11 @@ ewol::widget::WidgetScrooled::WidgetScrooled(void) {
|
||||
m_highSpeedType = ewol::key::typeUnknow;
|
||||
m_highSpeedButton = -1;
|
||||
m_limitScrolling = 0.5;
|
||||
|
||||
m_fingerScoolActivated = false;
|
||||
for (size_t iii = 0; iii < CALCULATE_SIMULTANEOUS_FINGER; ++iii) {
|
||||
m_fingerPresent[iii] = false;
|
||||
}
|
||||
}
|
||||
|
||||
ewol::widget::WidgetScrooled::~WidgetScrooled(void) {
|
||||
@ -256,6 +261,47 @@ bool ewol::widget::WidgetScrooled::onEventInput(const ewol::event::Input& _event
|
||||
} else if ( _event.getType() == ewol::key::typeFinger
|
||||
&& ( m_highSpeedType == ewol::key::typeUnknow
|
||||
|| m_highSpeedType == ewol::key::typeFinger) ) {
|
||||
if (_event.getId() >= 3) {
|
||||
return false;
|
||||
}
|
||||
int32_t idTable = _event.getId()-1;
|
||||
if (_event.getStatus() == ewol::key::statusDown) {
|
||||
m_fingerPresent[idTable] = true;
|
||||
} else if (_event.getStatus() == ewol::key::statusUp) {
|
||||
m_fingerPresent[idTable] = false;
|
||||
}
|
||||
if (m_fingerScoolActivated == false) {
|
||||
m_fingerMoveStartPos[idTable] = relativePos;
|
||||
}
|
||||
if ( m_fingerPresent[0] == true
|
||||
&& m_fingerPresent[1] == true
|
||||
&& m_fingerScoolActivated == false) {
|
||||
m_fingerScoolActivated = true;
|
||||
EWOL_DEBUG("SCROOL == > START pos=" << m_fingerMoveStartPos);
|
||||
}
|
||||
if (m_fingerScoolActivated == true) {
|
||||
// 1: scroll...
|
||||
// 2: remove all unneeded sub event ... ==> maybe a better methode ...
|
||||
if (_event.getStatus() == ewol::key::statusMove) {
|
||||
m_originScrooled.setX(m_originScrooled.x() - (relativePos.x() - m_fingerMoveStartPos[idTable].x())*0.5f);
|
||||
m_originScrooled.setY(m_originScrooled.y() - (relativePos.y() - m_fingerMoveStartPos[idTable].y())*0.5f);
|
||||
m_originScrooled.setX(etk_avg(0, m_originScrooled.x(), (m_maxSize.x() - m_size.x()*m_limitScrolling)));
|
||||
m_originScrooled.setY(etk_avg(0, m_originScrooled.y(), (m_maxSize.y() - m_size.y()*m_limitScrolling)));
|
||||
m_fingerMoveStartPos[idTable] = relativePos;
|
||||
EWOL_DEBUG("SCROOL == > MOVE m_originScrooled=" << m_originScrooled << " " << relativePos << " " << m_highSpeedStartPos);
|
||||
markToRedraw();
|
||||
}
|
||||
if ( m_fingerPresent[0] == false
|
||||
&& m_fingerPresent[1] == false) {
|
||||
if (_event.getStatus() == ewol::key::statusUp) {
|
||||
// TODO : Reset event ...
|
||||
m_fingerScoolActivated = false;
|
||||
_event.reset();
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
#if 0 // old mode of first finger move...
|
||||
if (_event.getId() == 1) {
|
||||
EWOL_VERBOSE("event 1 " << _event);
|
||||
if (_event.getStatus() == ewol::key::statusDown) {
|
||||
@ -302,6 +348,7 @@ bool ewol::widget::WidgetScrooled::onEventInput(const ewol::event::Input& _event
|
||||
markToRedraw();
|
||||
return true;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
} else if (m_scroollingMode == scroolModeCenter) {
|
||||
if (_event.getType() == ewol::key::typeMouse) {
|
||||
|
@ -15,10 +15,12 @@
|
||||
#include <ewol/widget/Scroll.h>
|
||||
#include <ewol/compositing/Drawing.h>
|
||||
|
||||
#define CALCULATE_SIMULTANEOUS_FINGER (5)
|
||||
|
||||
namespace ewol {
|
||||
namespace widget {
|
||||
/**
|
||||
* @ingroup ewolWidgetGroup
|
||||
* @brief Widget to integrate a scrool bar in a widget. This is not a stadalone widget.
|
||||
*/
|
||||
class WidgetScrooled : public ewol::Widget {
|
||||
public:
|
||||
@ -33,13 +35,17 @@ namespace ewol {
|
||||
vec2 m_originScrooled; //!< pixel distance from the origin of the display (Bottum left)
|
||||
vec2 m_maxSize; //!< Maximum size of the Widget ==> to display scrollbar
|
||||
float m_limitScrolling; //!< Mimit scrolling represent the propertion of the minimel scrolling activate (0.2 ==> 20% migt all time be visible)
|
||||
private:
|
||||
private: // Mouse section :
|
||||
enum scrollingMode m_scroollingMode; //!< mode of management of the scrooling
|
||||
float m_pixelScrolling;
|
||||
vec2 m_highSpeedStartPos;
|
||||
enum Scroll::highSpeedMode m_highSpeedMode;
|
||||
int32_t m_highSpeedButton;
|
||||
enum ewol::key::type m_highSpeedType;
|
||||
private: // finger section:
|
||||
bool m_fingerPresent[CALCULATE_SIMULTANEOUS_FINGER];
|
||||
bool m_fingerScoolActivated;
|
||||
vec2 m_fingerMoveStartPos[CALCULATE_SIMULTANEOUS_FINGER];
|
||||
public:
|
||||
/**
|
||||
* @brief Scroll Widget main constructor to be herited from an other widget (this is not a stand-alone widget)
|
||||
|
Loading…
x
Reference in New Issue
Block a user