mirror of
https://git.tartarus.org/simon/putty.git
synced 2025-04-21 04:55:02 -05:00
Merge branch 'stuck' of /home/simon-win/src/putty into main
This commit is contained in:
commit
35638a2631
1
putty.h
1
putty.h
@ -2137,6 +2137,7 @@ void term_pwron(Terminal *, bool);
|
|||||||
void term_clrsb(Terminal *);
|
void term_clrsb(Terminal *);
|
||||||
void term_mouse(Terminal *, Mouse_Button, Mouse_Button, Mouse_Action,
|
void term_mouse(Terminal *, Mouse_Button, Mouse_Button, Mouse_Action,
|
||||||
int, int, bool, bool, bool);
|
int, int, bool, bool, bool);
|
||||||
|
void term_cancel_selection_drag(Terminal *);
|
||||||
void term_key(Terminal *, Key_Sym, wchar_t *, size_t, unsigned int,
|
void term_key(Terminal *, Key_Sym, wchar_t *, size_t, unsigned int,
|
||||||
unsigned int);
|
unsigned int);
|
||||||
void term_lost_clipboard_ownership(Terminal *, int clipboard);
|
void term_lost_clipboard_ownership(Terminal *, int clipboard);
|
||||||
|
@ -7299,6 +7299,23 @@ void term_mouse(Terminal *term, Mouse_Button braw, Mouse_Button bcooked,
|
|||||||
term_schedule_update(term);
|
term_schedule_update(term);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void term_cancel_selection_drag(Terminal *term)
|
||||||
|
{
|
||||||
|
/*
|
||||||
|
* In unusual circumstances, a mouse drag might be interrupted by
|
||||||
|
* something that steals the rest of the mouse gesture. An example
|
||||||
|
* is the GTK popup menu appearing. In that situation, we'll never
|
||||||
|
* receive the MA_RELEASE that finishes the DRAGGING state, which
|
||||||
|
* means terminal output could be suppressed indefinitely. Call
|
||||||
|
* this function from the front end in such situations to restore
|
||||||
|
* sensibleness.
|
||||||
|
*/
|
||||||
|
if (term->selstate == DRAGGING)
|
||||||
|
term->selstate = NO_SELECTION;
|
||||||
|
term_out(term, false);
|
||||||
|
term_schedule_update(term);
|
||||||
|
}
|
||||||
|
|
||||||
static int shift_bitmap(bool shift, bool ctrl, bool alt, bool *consumed_alt)
|
static int shift_bitmap(bool shift, bool ctrl, bool alt, bool *consumed_alt)
|
||||||
{
|
{
|
||||||
int bitmap = (shift ? 1 : 0) + (alt ? 2 : 0) + (ctrl ? 4 : 0);
|
int bitmap = (shift ? 1 : 0) + (alt ? 2 : 0) + (ctrl ? 4 : 0);
|
||||||
|
@ -2162,6 +2162,8 @@ static gboolean button_internal(GtkFrontend *inst, GdkEventButton *event)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (event->button == 3 && ctrl) {
|
if (event->button == 3 && ctrl) {
|
||||||
|
/* Just in case this happened in mid-select */
|
||||||
|
term_cancel_selection_drag(inst->term);
|
||||||
#if GTK_CHECK_VERSION(3,22,0)
|
#if GTK_CHECK_VERSION(3,22,0)
|
||||||
gtk_menu_popup_at_pointer(GTK_MENU(inst->menu), (GdkEvent *)event);
|
gtk_menu_popup_at_pointer(GTK_MENU(inst->menu), (GdkEvent *)event);
|
||||||
#else
|
#else
|
||||||
|
@ -2625,6 +2625,9 @@ static LRESULT CALLBACK WndProc(HWND hwnd, UINT message,
|
|||||||
(conf_get_int(conf, CONF_mouse_is_xterm) == 2))) {
|
(conf_get_int(conf, CONF_mouse_is_xterm) == 2))) {
|
||||||
POINT cursorpos;
|
POINT cursorpos;
|
||||||
|
|
||||||
|
/* Just in case this happened in mid-select */
|
||||||
|
term_cancel_selection_drag(term);
|
||||||
|
|
||||||
show_mouseptr(true); /* make sure pointer is visible */
|
show_mouseptr(true); /* make sure pointer is visible */
|
||||||
GetCursorPos(&cursorpos);
|
GetCursorPos(&cursorpos);
|
||||||
TrackPopupMenu(popup_menus[CTXMENU].menu,
|
TrackPopupMenu(popup_menus[CTXMENU].menu,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user