• R/O
  • HTTP
  • SSH
  • HTTPS

common_source_project-fm7: Commit

Common Source Code Project for Qt (a.k.a for FM-7).


Commit MetaInfo

Revision525f70e1a510190c80f87950a95f65c81428f70f (tree)
Time2020-12-13 06:37:26
AuthorK.Ohta <whatisthis.sowhat@gmai...>
CommiterK.Ohta

Log Message

[UI][Qt][MOUSE][WIP] Fixing mouse clicking on one-board-computers.

Change Summary

Incremental Difference

--- a/source/src/qt/common/emu_thread_slots.cpp
+++ b/source/src/qt/common/emu_thread_slots.cpp
@@ -860,7 +860,12 @@ void EmuThreadClassBase::set_romakana(bool flag)
860860
861861 void EmuThreadClassBase::moved_mouse(double x, double y, double globalx, double globaly)
862862 {
863- if(using_flags->is_use_one_board_computer() || using_flags->is_use_mouse() || (using_flags->get_max_button() > 0)) {
863+ if(using_flags->is_use_one_board_computer() || (using_flags->get_max_button() > 0)) {
864+// bool flag = p_osd->is_mouse_enabled();
865+// if(!flag) return;
866+// printf("Mouse Moved: %g, %g\n", x, y);
867+ p_osd->set_mouse_pointer(floor(x), floor(y));
868+ } else if(using_flags->is_use_mouse()) {
864869 double factor = (double)(p_config->mouse_sensitivity & ((1 << 16) - 1));
865870 mouse_x = (int)(floor((x * factor) / 8192.0));
866871 mouse_y = (int)(floor((y * factor) / 8192.0));
@@ -877,7 +882,7 @@ void EmuThreadClassBase::button_pressed_mouse_sub(Qt::MouseButton button)
877882
878883 if(using_flags->is_use_one_board_computer() || using_flags->is_use_mouse() || (using_flags->get_max_button() > 0)) {
879884 int stat = p_osd->get_mouse_button();
880- bool flag = p_osd->is_mouse_enabled();
885+ bool flag = (p_osd->is_mouse_enabled() || using_flags->is_use_one_board_computer() || (using_flags->get_max_button() > 0));
881886 switch(button) {
882887 case Qt::LeftButton:
883888 stat |= 0x01;
--- a/source/src/qt/gui/qt_glevents.cpp
+++ b/source/src/qt/gui/qt_glevents.cpp
@@ -48,15 +48,24 @@ void GLDrawClass::mouseMoveEvent(QMouseEvent *event)
4848 double yy, gyy;
4949 OSD_BASE *p_osd = using_flags->get_osd();
5050 int d_ww, d_hh;
51- if(p_osd != NULL) {
52- d_ww = p_osd->get_vm_screen_width();
53- d_hh = p_osd->get_vm_screen_height();
54- } else {
51+ if(using_flags->is_use_one_board_computer() || (using_flags->get_max_button() > 0)) {
5552 d_ww = using_flags->get_screen_width();
5653 d_hh = using_flags->get_screen_height();
54+ } else {
55+ if(p_osd != NULL) {
56+ d_ww = p_osd->get_vm_screen_width();
57+ d_hh = p_osd->get_vm_screen_height();
58+ } else {
59+ d_ww = using_flags->get_screen_width();
60+ d_hh = using_flags->get_screen_height();
61+ }
62+ }
63+ QPointF pos;
64+ if(using_flags->is_use_one_board_computer() || (using_flags->get_max_button() > 0)) {
65+ pos = event->localPos();
66+ } else {
67+ pos = event->screenPos();
5768 }
58-// QPointF pos = event->localPos();
59- QPointF pos = event->screenPos();
6069 double xpos = (double)(pos.x()) / (double)width();
6170 double ypos = (double)(pos.y()) / (double)height();
6271 double gxpos = (double)(event->globalPos().x()) / (double)width();
--- a/source/src/qt/osd_input.cpp
+++ b/source/src/qt/osd_input.cpp
@@ -58,6 +58,7 @@ void OSD_BASE::initialize_input()
5858 memset(mouse_status, 0, sizeof(mouse_status));
5959 // mouse emulation is disenabled
6060 mouse_enabled = false;
61+
6162 mouse_ptrx = mouse_oldx = get_screen_width() / 2;
6263 mouse_ptry = mouse_oldy = get_screen_height() / 2;
6364 // initialize keycode convert table
@@ -836,7 +837,7 @@ bool OSD_BASE::is_mouse_enabled()
836837
837838 void OSD_BASE::set_mouse_pointer(int x, int y)
838839 {
839- if(mouse_enabled) {
840+ if(using_flags->is_use_one_board_computer() || (using_flags->get_max_button() > 0) || (mouse_enabled)) {
840841 QMutexLocker n(mouse_mutex);
841842
842843 mouse_ptrx = x;
@@ -844,7 +845,7 @@ void OSD_BASE::set_mouse_pointer(int x, int y)
844845
845846 // mouse_oldx = mouse_ptrx;
846847 // mouse_oldy = mouse_ptry;
847- //printf("Mouse Moved: (%d, %d) -> delta(%d, %d)\n", mouse_ptrx, mouse_ptry, delta_x, delta_y);
848+// printf("Mouse Moved: (%d, %d)\n", mouse_ptrx, mouse_ptry);
848849 }
849850 }
850851
--- a/source/src/qt/osd_wrapper.cpp
+++ b/source/src/qt/osd_wrapper.cpp
@@ -128,22 +128,37 @@ int OSD::get_vm_buttons_code(int num)
128128 void OSD::update_buttons(bool press_flag, bool release_flag)
129129 {
130130 #if defined(MAX_BUTTONS)
131+ if((mouse_button & 1) != 0) {
132+ mouse_oldx = mouse_oldy = 0;
133+ return;
134+ }
131135 if(!press_flag && !release_flag) {
136+ if((mouse_button & 1) != 0) {
137+ mouse_oldx = mouse_oldy = 0;
138+ return;
139+ }
140+ if((mouse_oldx == mouse_ptrx) || (mouse_oldy == mouse_ptry)) return;
132141 int ii;
133142 ii = 0;
134143 for(ii = 0; vm_buttons[ii].code != 0x00; ii++) {
135144 if((mouse_ptrx >= vm_buttons[ii].x) && (mouse_ptrx < (vm_buttons[ii].x + vm_buttons[ii].width))) {
145+
136146 if((mouse_ptry >= vm_buttons[ii].y) && (mouse_ptry < (vm_buttons[ii].y + vm_buttons[ii].height))) {
137147 if((key_status[vm_buttons[ii].code] & 0x7f) == 0) this->press_button(ii);
148+ mouse_oldx = mouse_ptrx;
149+ mouse_oldy = mouse_ptry;
150+ return;
138151 }
139152 }
140153 }
141154 if((mouse_ptrx >= vm_buttons[ii].x) && (mouse_ptrx < (vm_buttons[ii].x + vm_buttons[ii].width))) {
142155 if((mouse_ptry >= vm_buttons[ii].y) && (mouse_ptry < (vm_buttons[ii].y + vm_buttons[ii].height))) {
143156 this->press_button(ii);
157+ mouse_oldx = mouse_ptrx;
158+ mouse_oldy = mouse_ptry;
144159 }
145160 }
146- mouse_ptrx = mouse_ptry = 0;
161+// mouse_ptrx = mouse_ptry = 0;
147162 }
148163 //return;
149164 #endif
Show on old repository browser