fix layout problems

This commit is contained in:
Vadim Lopatin 2015-03-27 14:08:40 +03:00
parent a42c8c0806
commit bf9f438d0f
4 changed files with 29 additions and 12 deletions

View File

@ -72,7 +72,7 @@
<debuglevel>0</debuglevel>
<debugids />
<versionlevel>0</versionlevel>
<versionids>Unicode USE_FREETYPE USE_SDL USE_OPENGL</versionids>
<versionids>Unicode USE_FREETYPE USE_OPENGL</versionids>
<dump_source>0</dump_source>
<mapverbosity>3</mapverbosity>
<createImplib>0</createImplib>

View File

@ -505,6 +505,13 @@ struct ButtonDetails {
static final long DOUBLE_CLICK_THRESHOLD_MS = 200;
void reset() {
_downTs = _upTs = 0;
_downFlags = 0;
_downX = _downY = 0;
}
/// update for button down
void down(short x, short y, ushort flags) {
//Log.d("Button down ", x, ",", y, " _downTs=", _downTs, " _upTs=", _upTs);

View File

@ -556,6 +556,15 @@ class Win32Window : Window {
protected ButtonDetails _mbutton;
protected ButtonDetails _rbutton;
private void updateButtonsState(uint flags) {
if (!(flags & MK_LBUTTON) && _lbutton.isDown)
_lbutton.reset();
if (!(flags & MK_MBUTTON) && _mbutton.isDown)
_mbutton.reset();
if (!(flags & MK_RBUTTON) && _rbutton.isDown)
_rbutton.reset();
}
private bool _mouseTracking;
private bool onMouse(uint message, uint flags, short x, short y) {
debug(DebugMouseEvents) Log.d("Win32 Mouse Message ", message, " flags=", flags, " x=", x, " y=", y);
@ -566,6 +575,7 @@ class Win32Window : Window {
switch (message) {
case WM_MOUSEMOVE:
action = MouseAction.Move;
updateButtonsState(flags);
break;
case WM_LBUTTONDOWN:
action = MouseAction.ButtonDown;

View File

@ -413,6 +413,17 @@ class ResizerWidget : Widget {
if (event.action == MouseAction.FocusOut && _dragging) {
return true;
}
if ((event.action == MouseAction.ButtonUp && event.button == MouseButton.Left) || (!event.lbutton.isDown && _dragging)) {
resetState(State.Pressed);
if (_dragging) {
//sendScrollEvent(ScrollAction.SliderReleased, _position);
_dragging = false;
if (resizeListener.assigned) {
resizeListener(this, ResizerEventType.EndDragging, _orientation == Orientation.Vertical ? event.y : event.x);
}
}
return true;
}
if (event.action == MouseAction.Move && _dragging) {
int delta = _orientation == Orientation.Vertical ? event.y - _dragStart.y : event.x - _dragStart.x;
if (resizeListener.assigned) {
@ -459,17 +470,6 @@ class ResizerWidget : Widget {
//onIndicatorDragging(_dragStartPosition, position);
return true;
}
if (event.action == MouseAction.ButtonUp && event.button == MouseButton.Left) {
resetState(State.Pressed);
if (_dragging) {
//sendScrollEvent(ScrollAction.SliderReleased, _position);
_dragging = false;
if (resizeListener.assigned) {
resizeListener(this, ResizerEventType.EndDragging, _orientation == Orientation.Vertical ? event.y : event.x);
}
}
return true;
}
if (event.action == MouseAction.Move && trackHover) {
if (!(state & State.Hovered)) {
Log.d("Hover ", id);