virtual void rdp_input_mouse(int device_flags, int x, int y, Keymap2* keymap) { Widget2 * w = this->widget_at_pos(x, y); // Mouse clic release // w could be null if mouse is located at an empty space if (device_flags == MOUSE_FLAG_BUTTON1) { if (this->pressed && (w != this->pressed)) { this->pressed->rdp_input_mouse(device_flags, x, y, keymap); } } if (w){ // get focus when mouse clic if (device_flags == (MOUSE_FLAG_BUTTON1|MOUSE_FLAG_DOWN)) { this->pressed = w; if ((w->focus_flag != IGNORE_FOCUS) && (w != this->current_focus)){ this->set_widget_focus(w); } } w->rdp_input_mouse(device_flags, x, y, keymap); } else { Widget2::rdp_input_mouse(device_flags, x, y, keymap); } }
void rdp_input_mouse(int device_flags, int mouse_x, int mouse_y, Keymap2 * keymap) override { if (device_flags == (MOUSE_FLAG_BUTTON1 | MOUSE_FLAG_DOWN)) { uint16_t y = this->rect.y; for (uint16_t row_index = 0; row_index < this->nb_rows; row_index++) { uint16_t x = this->rect.x; Rect rectRow(x, y, this->rect.cx, this->row_height[row_index] + this->border * 2); if (rectRow.contains_pt(mouse_x, mouse_y)) { if (row_index != this->selection_y) { this->click_interval.update(); this->set_selection(row_index); } else { if (this->click_interval.tick() <= uint64_t(700000L)) { this->send_notify(NOTIFY_SUBMIT); return; } } } y += this->row_height[row_index] + this->border * 2; } } else if (device_flags == MOUSE_FLAG_MOVE) { Widget2 * wid = this->widget_at_pos(mouse_x, mouse_y); if (wid) { wid->rdp_input_mouse(device_flags, mouse_x, mouse_y, keymap); } } Widget2::rdp_input_mouse(device_flags, mouse_x, mouse_y, keymap); }
void rdp_input_mouse(int device_flags, int x, int y, Keymap2 * keymap) override { Widget2 * w = this->widget_at_pos(x, y); // Mouse clic release // w could be null if mouse is located at an empty space if (device_flags == MOUSE_FLAG_BUTTON1) { if (this->pressed && (w != this->pressed)) { this->pressed->rdp_input_mouse(device_flags, x, y, keymap); } this->pressed = nullptr; } if (w) { // get focus when mouse clic if (device_flags == (MOUSE_FLAG_BUTTON1 | MOUSE_FLAG_DOWN)) { this->pressed = w; if (/*(*/w->focus_flag != IGNORE_FOCUS/*) && (w != this->current_focus)*/) { this->set_widget_focus(w, focus_reason_mousebutton1); } } w->rdp_input_mouse(device_flags, x, y, keymap); } else { Widget2::rdp_input_mouse(device_flags, x, y, keymap); } if (device_flags == MOUSE_FLAG_MOVE && this->pressed) { this->pressed->rdp_input_mouse(device_flags, x, y, keymap); } }