[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
|
<< " == >" << eventTable[_pointerID].destinationInputId
|
||||||
<< " [UP] " << _pos);
|
<< " [UP] " << _pos);
|
||||||
eventTable[_pointerID].posEvent = _pos;
|
eventTable[_pointerID].posEvent = _pos;
|
||||||
localEventInput(_type,
|
|
||||||
eventTable[_pointerID].curentWidgetEvent,
|
|
||||||
_pointerID,
|
|
||||||
ewol::key::statusUp,
|
|
||||||
_pos);
|
|
||||||
// generate event (single)
|
// generate event (single)
|
||||||
if( abs(eventTable[_pointerID].downStart.x() - _pos.x()) < localLimit.DpiOffset
|
if( abs(eventTable[_pointerID].downStart.x() - _pos.x()) < localLimit.DpiOffset
|
||||||
&& abs(eventTable[_pointerID].downStart.y() - _pos.y()) < 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;
|
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
|
// specific for tuch event
|
||||||
if (_type == ewol::key::typeFinger) {
|
if (_type == ewol::key::typeFinger) {
|
||||||
cleanElement(eventTable, _pointerID);
|
cleanElement(eventTable, _pointerID);
|
||||||
|
@ -88,7 +88,7 @@ namespace ewol {
|
|||||||
public:
|
public:
|
||||||
InputManager(ewol::Context& _context);
|
InputManager(ewol::Context& _context);
|
||||||
~InputManager(void);
|
~InputManager(void);
|
||||||
void setDpi(int32_t newDPI);
|
void setDpi(int32_t _newDPI);
|
||||||
|
|
||||||
// note if id<0 == > the it was finger event ...
|
// note if id<0 == > the it was finger event ...
|
||||||
void motion(enum ewol::key::type _type, int _pointerID, vec2 _pos );
|
void motion(enum ewol::key::type _type, int _pointerID, vec2 _pos );
|
||||||
|
@ -54,6 +54,12 @@ namespace ewol {
|
|||||||
inline const vec2& getPos(void) const {
|
inline const vec2& getPos(void) const {
|
||||||
return m_pos;
|
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);
|
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_highSpeedType = ewol::key::typeUnknow;
|
||||||
m_highSpeedButton = -1;
|
m_highSpeedButton = -1;
|
||||||
m_limitScrolling = 0.5;
|
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) {
|
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
|
} else if ( _event.getType() == ewol::key::typeFinger
|
||||||
&& ( m_highSpeedType == ewol::key::typeUnknow
|
&& ( m_highSpeedType == ewol::key::typeUnknow
|
||||||
|| m_highSpeedType == ewol::key::typeFinger) ) {
|
|| 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) {
|
if (_event.getId() == 1) {
|
||||||
EWOL_VERBOSE("event 1 " << _event);
|
EWOL_VERBOSE("event 1 " << _event);
|
||||||
if (_event.getStatus() == ewol::key::statusDown) {
|
if (_event.getStatus() == ewol::key::statusDown) {
|
||||||
@ -302,6 +348,7 @@ bool ewol::widget::WidgetScrooled::onEventInput(const ewol::event::Input& _event
|
|||||||
markToRedraw();
|
markToRedraw();
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
} else if (m_scroollingMode == scroolModeCenter) {
|
} else if (m_scroollingMode == scroolModeCenter) {
|
||||||
if (_event.getType() == ewol::key::typeMouse) {
|
if (_event.getType() == ewol::key::typeMouse) {
|
||||||
|
@ -15,10 +15,12 @@
|
|||||||
#include <ewol/widget/Scroll.h>
|
#include <ewol/widget/Scroll.h>
|
||||||
#include <ewol/compositing/Drawing.h>
|
#include <ewol/compositing/Drawing.h>
|
||||||
|
|
||||||
|
#define CALCULATE_SIMULTANEOUS_FINGER (5)
|
||||||
|
|
||||||
namespace ewol {
|
namespace ewol {
|
||||||
namespace widget {
|
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 {
|
class WidgetScrooled : public ewol::Widget {
|
||||||
public:
|
public:
|
||||||
@ -33,13 +35,17 @@ namespace ewol {
|
|||||||
vec2 m_originScrooled; //!< pixel distance from the origin of the display (Bottum left)
|
vec2 m_originScrooled; //!< pixel distance from the origin of the display (Bottum left)
|
||||||
vec2 m_maxSize; //!< Maximum size of the Widget ==> to display scrollbar
|
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)
|
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
|
enum scrollingMode m_scroollingMode; //!< mode of management of the scrooling
|
||||||
float m_pixelScrolling;
|
float m_pixelScrolling;
|
||||||
vec2 m_highSpeedStartPos;
|
vec2 m_highSpeedStartPos;
|
||||||
enum Scroll::highSpeedMode m_highSpeedMode;
|
enum Scroll::highSpeedMode m_highSpeedMode;
|
||||||
int32_t m_highSpeedButton;
|
int32_t m_highSpeedButton;
|
||||||
enum ewol::key::type m_highSpeedType;
|
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:
|
public:
|
||||||
/**
|
/**
|
||||||
* @brief Scroll Widget main constructor to be herited from an other widget (this is not a stand-alone widget)
|
* @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