Simulate left mouse button unclick (release button)
-
@mrjj
Hello and Happy New Year!I installed VLC media player on my beaglebone, and have been playing with controls (combobox, scrollbars etc...), and all was going well, no bugs with comboboxes, touch screen clicks and releases fine.
I noticed that combobox in VLC player and combobox in QT are differented of each other.VLC acceps the touch fully as a mouse, i suppose.
@Andrey-Shmelew
Hi
Happy new year to you tooOk it does sound like it is working as it should. Maybe VLC is very touch friendly.
Can we test with one app ( nothing as well used with touch as VLC ) to test ?
Still think its just controller that slips a mouse up sometimes but not sure yet.
-
@Andrey-Shmelew
Hi
Happy new year to you tooOk it does sound like it is working as it should. Maybe VLC is very touch friendly.
Can we test with one app ( nothing as well used with touch as VLC ) to test ?
Still think its just controller that slips a mouse up sometimes but not sure yet.
@mrjj said in Simulate left mouse button unclick (release button):
Can we test with one app ( nothing as well used with touch as VLC ) to test ?
yes, sure, i will try evrethyng i can
-
@mrjj said in Simulate left mouse button unclick (release button):
Can we test with one app ( nothing as well used with touch as VLC ) to test ?
yes, sure, i will try evrethyng i can
@Andrey-Shmelew
Super
Did you also check with main window that
void MainWindow::mouseReleaseEvent(QMouseEvent* event)
{
qDebug() << ("button Released");
}is always called?
Make sure only to click on the mainwindow. -
@Andrey-Shmelew
Super
Did you also check with main window that
void MainWindow::mouseReleaseEvent(QMouseEvent* event)
{
qDebug() << ("button Released");
}is always called?
Make sure only to click on the mainwindow.@mrjj said in Simulate left mouse button unclick (release button):
is always called
if only i did not press combobox...
As soon as I clicked combobox, no matter how many times I clicked on the mainwindow, label_7 is always "Only left button"
qDebug() << ("button Released"); is not working in linux app, so i use label_7 as debug out
-
@mrjj said in Simulate left mouse button unclick (release button):
is always called
if only i did not press combobox...
As soon as I clicked combobox, no matter how many times I clicked on the mainwindow, label_7 is always "Only left button"
qDebug() << ("button Released"); is not working in linux app, so i use label_7 as debug out
@Andrey-Shmelew
Yes combo is special as it drop down a floating window and use event filer for selection so
it is not canceled correctly, it will then eat all events and nothing else can be clicked.ehh qDebug() not working in linux ? you mean outside Creator or ?
Dont matter. Label is fine :) -
@Andrey-Shmelew
Yes combo is special as it drop down a floating window and use event filer for selection so
it is not canceled correctly, it will then eat all events and nothing else can be clicked.ehh qDebug() not working in linux ? you mean outside Creator or ?
Dont matter. Label is fine :) -
@Andrey-Shmelew
well, i would dig a bit deeper into what is going on.
I never seen combo not work like that.
Seems something else than missing events.But yes, you can most likely work around using event filters but there might surface other stuff
like broken drag and drop or something as its not a bug in combobox ( no other reports) as such so
something else is not as expected with the touch.I tried at work with touch screen and could not reproduce it so Im a bit lost why
its not just closing its dropdown.I think it will/might be a mess with eventfilter
but if you only have one combobox you
need to fix it should be ok
but if you use combos all over program i would
go for better solution. -
@Andrey-Shmelew
well, i would dig a bit deeper into what is going on.
I never seen combo not work like that.
Seems something else than missing events.But yes, you can most likely work around using event filters but there might surface other stuff
like broken drag and drop or something as its not a bug in combobox ( no other reports) as such so
something else is not as expected with the touch.I tried at work with touch screen and could not reproduce it so Im a bit lost why
its not just closing its dropdown.I think it will/might be a mess with eventfilter
but if you only have one combobox you
need to fix it should be ok
but if you use combos all over program i would
go for better solution.@mrjj
Unfortunately, i use combos all over program. I want to use comboboxes for configure my device. if you could not reproduce it, maybe it happens because of my touch's non-correct work. If i could make any help for you for help me ... -
@mrjj
Unfortunately, i use combos all over program. I want to use comboboxes for configure my device. if you could not reproduce it, maybe it happens because of my touch's non-correct work. If i could make any help for you for help me ...Hmm, I asked another mod here for some input (later) as there is something
funky here. Maybe im overlooking something.
If your touch acts as pure touch or is faulty then other controls should also have issues.But since we do not have any event trace is very unclear what is happening.
Also as far as I know, the drop down part of the combobox is already using event filter.
So its not sure event filters are a good/easy fix.I think i would still dig deeper to find real reason. ( look in Qt source)
Alternatively, make my own combo box and control the dropdown with lost focus if possible.
Didnt check the code so not sure how it handles the dropdown. -
@mrjj
Unfortunately, i use combos all over program. I want to use comboboxes for configure my device. if you could not reproduce it, maybe it happens because of my touch's non-correct work. If i could make any help for you for help me ...@Andrey-Shmelew
whats your touch screen model?
Whats your input mode (evdev, tslib, libinput) used?
What is your used Qt platform (X, LinuxFB, EGLFS)?Just to make sure: you are using QtWidgets right, not QML?
btw. VLC also uses Qt for it's GUI. But i currently don't know which version.
Can you also try to use Qt 5.8 RC if you encounter the same issues?Also you could log all events like the following. Start the application from the console and you should see the output in stdout.
qApp->installEventFilter( this ); ... bool eventFilter( QObject* watched, QEvent* event ) { switch( event->type() ) { case QEvent::MousePressEvent: case QEvent::MouseReleaseEvent: case QEvent::TouchBegin: case QEvent::TouchCancel: case QEvent::TouchEnd: qDebug() << int(event->type()) << watched; break; } return BaseClass::eventFilter(watched,event); }
-
@Andrey-Shmelew
whats your touch screen model?
Whats your input mode (evdev, tslib, libinput) used?
What is your used Qt platform (X, LinuxFB, EGLFS)?Just to make sure: you are using QtWidgets right, not QML?
btw. VLC also uses Qt for it's GUI. But i currently don't know which version.
Can you also try to use Qt 5.8 RC if you encounter the same issues?Also you could log all events like the following. Start the application from the console and you should see the output in stdout.
qApp->installEventFilter( this ); ... bool eventFilter( QObject* watched, QEvent* event ) { switch( event->type() ) { case QEvent::MousePressEvent: case QEvent::MouseReleaseEvent: case QEvent::TouchBegin: case QEvent::TouchCancel: case QEvent::TouchEnd: qDebug() << int(event->type()) << watched; break; } return BaseClass::eventFilter(watched,event); }
@raven-worx
This is my display : http://www.waveshare.com/10.1inch-hdmi-lcd-b-with-case.htm
i dont know inpute mode (maybe this is a reason of a bug)
i also dont know qt platform (maybe Qt Creator 4.1.0
Основан на Qt 5.7.0 (MSVC 2013, 32 бита) is answer), and i built qt everywere with gcc arm none eabi compiler.
I use QtWidgets, not QML, i am sure.
OK I think i can try QT 5.8 RC
Ok i will log all events following your codehere is video demonstrates how combo works https://drive.google.com/file/d/0ByPoVqOCWO2IVERuMkMzTmZsMjA/view
-
@raven-worx
This is my display : http://www.waveshare.com/10.1inch-hdmi-lcd-b-with-case.htm
i dont know inpute mode (maybe this is a reason of a bug)
i also dont know qt platform (maybe Qt Creator 4.1.0
Основан на Qt 5.7.0 (MSVC 2013, 32 бита) is answer), and i built qt everywere with gcc arm none eabi compiler.
I use QtWidgets, not QML, i am sure.
OK I think i can try QT 5.8 RC
Ok i will log all events following your codehere is video demonstrates how combo works https://drive.google.com/file/d/0ByPoVqOCWO2IVERuMkMzTmZsMjA/view
@Andrey-Shmelew
in the video the mouse cursor changes it's shape (toQt::IBeamCursor
), from then on your widgets do not react anymore.
You can also log the focus changes by connecting toQApplication::focusChanged()
signal. It would be interesting what's the focus widget is in that case.Maybe you use
QWidget::grabMouse()
in this widget?Can you also please set
QT_DEBUG_PLUGINS=1
environment variable and post the output from the console. Maybe before/after you try the other debug output.
This shows what plugins are being loaded. -
@Andrey-Shmelew
in the video the mouse cursor changes it's shape (toQt::IBeamCursor
), from then on your widgets do not react anymore.
You can also log the focus changes by connecting toQApplication::focusChanged()
signal. It would be interesting what's the focus widget is in that case.Maybe you use
QWidget::grabMouse()
in this widget?Can you also please set
QT_DEBUG_PLUGINS=1
environment variable and post the output from the console. Maybe before/after you try the other debug output.
This shows what plugins are being loaded.@raven-worx
i added QApplication::focusChanged() signal:int main(int argc, char *argv[]) { QApplication a(argc, argv); MainWindow w; QObject::connect(&a, SIGNAL(focusChanged(QWidget*,QWidget*)), &w, SLOT(textupdate())); w.show(); return a.exec(); }
then added a slot:
void MainWindow::textupdate() { QWidget * fw = qApp->focusWidget(); ui->textEdit_3->setText(ui->textEdit_3->toPlainText() + " | " + fw->objectName()); }
accordingly, i can see focused widget name, right?
After it, i noticed strange behaviour:
after some clicks on comboboxes, it becomes impossible to control all of widgets besides textEdit widgets (and sometimes... dial). Thats all. All other widgets (sliders, combos) are dead. And strange that when i click on textEdit, mouse cursor is always at the begin.And the following video : https://drive.google.com/open?id=0ByPoVqOCWO2IMmdlMk8xTEVoa0U
PS, sometimes when bug happens, i can select text in textEdit by my finger (as if I hold down the left mouse button), so i made a conclusion that "touch mouse button" didnt released properly. And the video:
https://drive.google.com/open?id=0ByPoVqOCWO2IS2lIQUpBSlNPWDAtrying QT 5.8 RC did not bring good results
case QEvent::MousePressEvent:
case QEvent::MouseReleaseEvent:MousePressEvent and MouseReleaseEvent are not exsist
PPS: After i connect regular mouse and click left button, all becomes normal.
-
@Andrey-Shmelew
whats your touch screen model?
Whats your input mode (evdev, tslib, libinput) used?
What is your used Qt platform (X, LinuxFB, EGLFS)?Just to make sure: you are using QtWidgets right, not QML?
btw. VLC also uses Qt for it's GUI. But i currently don't know which version.
Can you also try to use Qt 5.8 RC if you encounter the same issues?Also you could log all events like the following. Start the application from the console and you should see the output in stdout.
qApp->installEventFilter( this ); ... bool eventFilter( QObject* watched, QEvent* event ) { switch( event->type() ) { case QEvent::MousePressEvent: case QEvent::MouseReleaseEvent: case QEvent::TouchBegin: case QEvent::TouchCancel: case QEvent::TouchEnd: qDebug() << int(event->type()) << watched; break; } return BaseClass::eventFilter(watched,event); }
@raven-worx said in Simulate left mouse button unclick (release button):
Also you could log all events like the following. Start the application from the console and you should see the output in stdout.
this is code to see events in event filter:
bool MainWindow::eventFilter(QObject *obj, QEvent *event) { switch( event->type() ){ case QEvent::MouseButtonDblClick: // qDebug() << "Mouse Button Double Clicked"; ui->textEdit_3->setText("Mouse Double Clicked"); break; case QEvent::MouseButtonPress: // qDebug() << "Mouse Button Pressed"; ui->textEdit_3->setText("Mouse Button Pressed"); break; case QEvent::MouseButtonRelease: // qDebug() << "Mouse Button Released"; ui->textEdit_3->setText("Mouse Button Released"); break; case QEvent::TouchBegin: // qDebug() << "TouchBegin"; ui->textEdit_3->setText("TouchBegin"); break; case QEvent::TouchEnd: // qDebug() << "TouchEnd"; ui->textEdit_3->setText("TouchEnd"); break; case QEvent::TouchCancel: // qDebug() << "TouchCancel"; ui->textEdit_3->setText("TouchCancel"); break; case QEvent::TouchUpdate: //qDebug() << "TouchUpdate"; ui->textEdit_3->setText("TouchUpdate"); break; default: break; } // pass the event on to the parent class return QMainWindow::eventFilter(obj, event); }
So, i noticed that mouse when i touch widgets, release event is called but... not always...
but if i connect mouse instead of touch screen, and press left button, it becomes OK. -
@raven-worx said in Simulate left mouse button unclick (release button):
Also you could log all events like the following. Start the application from the console and you should see the output in stdout.
this is code to see events in event filter:
bool MainWindow::eventFilter(QObject *obj, QEvent *event) { switch( event->type() ){ case QEvent::MouseButtonDblClick: // qDebug() << "Mouse Button Double Clicked"; ui->textEdit_3->setText("Mouse Double Clicked"); break; case QEvent::MouseButtonPress: // qDebug() << "Mouse Button Pressed"; ui->textEdit_3->setText("Mouse Button Pressed"); break; case QEvent::MouseButtonRelease: // qDebug() << "Mouse Button Released"; ui->textEdit_3->setText("Mouse Button Released"); break; case QEvent::TouchBegin: // qDebug() << "TouchBegin"; ui->textEdit_3->setText("TouchBegin"); break; case QEvent::TouchEnd: // qDebug() << "TouchEnd"; ui->textEdit_3->setText("TouchEnd"); break; case QEvent::TouchCancel: // qDebug() << "TouchCancel"; ui->textEdit_3->setText("TouchCancel"); break; case QEvent::TouchUpdate: //qDebug() << "TouchUpdate"; ui->textEdit_3->setText("TouchUpdate"); break; default: break; } // pass the event on to the parent class return QMainWindow::eventFilter(obj, event); }
So, i noticed that mouse when i touch widgets, release event is called but... not always...
but if i connect mouse instead of touch screen, and press left button, it becomes OK.Ok, the problem is solved,
i have recieved a new touch-panel, and it is working fine, mouse released lert button after i release my finger.
Thanks for help
-
Ok, the problem is solved,
i have recieved a new touch-panel, and it is working fine, mouse released lert button after i release my finger.
Thanks for help
@Andrey-Shmelew
So it was just a faulty driver or something? -
@Andrey-Shmelew
So it was just a faulty driver or something?it was faulty Touch Hardware Driver IMHO
-
it was faulty Touch Hardware Driver IMHO