From 5bd07a4cdcebf9f002119a2ea2d4d0b369e00aae Mon Sep 17 00:00:00 2001 From: mihmig Date: Wed, 5 Jan 2022 09:34:27 +0000 Subject: [PATCH] fixes for far2l --- 0.76_My_PuTTY/terminal.c | 16 +++++----- 0.76_My_PuTTY/terminal.h | 3 ++ 0.76_My_PuTTY/windows/MAKEFILE.MINGW | 47 +++++++++++++++++----------- 0.76_My_PuTTY/windows/window.c | 3 +- 0.76_My_PuTTY/windows/winseat.h | 2 ++ 5 files changed, 44 insertions(+), 27 deletions(-) diff --git a/0.76_My_PuTTY/terminal.c b/0.76_My_PuTTY/terminal.c index c91fd6f..0b0f6b9 100644 --- a/0.76_My_PuTTY/terminal.c +++ b/0.76_My_PuTTY/terminal.c @@ -3273,7 +3273,7 @@ static void do_osc(Terminal *term) // it's possibly too large clipboard #ifdef _WINDOWS - MessageBox(hwnd, "Too large clipboard :(", "Error", MB_OK); + MessageBox(wgs.term_hwnd, "Too large clipboard :(", "Error", MB_OK); #endif // correct request id is lost forever @@ -3342,14 +3342,14 @@ static void do_osc(Terminal *term) // todo: do this on window focus also pnid.cbSize = sizeof(pnid); - pnid.hWnd = hwnd; + pnid.hWnd = wgs.term_hwnd; pnid.hIcon = LoadIcon(0, IDI_APPLICATION); pnid.uID = 200; Shell_NotifyIconW(NIM_DELETE, &pnid); // todo: use putty icon pnid.cbSize = sizeof(pnid); - pnid.hWnd = hwnd; + pnid.hWnd = wgs.term_hwnd; pnid.hIcon = LoadIcon(0, IDI_APPLICATION); pnid.uID = 200; pnid.uFlags = NIF_ICON | NIF_INFO | NIF_MESSAGE; @@ -3423,7 +3423,7 @@ static void do_osc(Terminal *term) #ifdef _WINDOWS char ec_status = 0; if (term->clip_allowed == 1) { - OpenClipboard(hwnd); + OpenClipboard(wgs.term_hwnd); ec_status = EmptyClipboard() ? 1 : 0; CloseClipboard(); } @@ -3473,7 +3473,7 @@ static void do_osc(Terminal *term) #ifdef _WINDOWS if (term->clip_allowed == -1) { - int status = MessageBox(hwnd, + int status = MessageBox(wgs.term_hwnd, "Allow far2l clipboard sync?", "PyTTY", MB_OKCANCEL); if (status == IDOK) { term->clip_allowed = 1; @@ -3557,7 +3557,7 @@ static void do_osc(Terminal *term) memcpy(GData,buffer,BufferSize); GlobalUnlock(hData); - if (OpenClipboard(hwnd)) { + if (OpenClipboard(wgs.term_hwnd)) { if (!SetClipboardData(fmt, (HANDLE)hData)) { GlobalFree(hData); @@ -3616,7 +3616,7 @@ static void do_osc(Terminal *term) int32_t ClipTextSize = 0; if ((gfmt == CF_TEXT || gfmt == CF_UNICODETEXT || gfmt >= 0xC000) && - OpenClipboard(hwnd)) + OpenClipboard(wgs.term_hwnd)) { HANDLE hClipData = GetClipboardData((gfmt == CF_TEXT) ? CF_UNICODETEXT : gfmt); @@ -4730,7 +4730,7 @@ static void term_out(Terminal *term) break; case '_': /* far2l: processing APC is almost the same as processing OSC */ term->is_apc = 1; - break; + //break; //case SEEN_APC: /* todo */ // if (!WriteStr2TC(fdout, enable ? "\x1b_far2l1\x1b\\\x1b[5n" : "\x1b_far2l0\x07\x1b[5n")) diff --git a/0.76_My_PuTTY/terminal.h b/0.76_My_PuTTY/terminal.h index 1d385cd..b16f299 100644 --- a/0.76_My_PuTTY/terminal.h +++ b/0.76_My_PuTTY/terminal.h @@ -6,6 +6,9 @@ * but for the moment, this will do. */ +#include +extern WinGuiSeat wgs; + #ifndef PUTTY_TERMINAL_H #define PUTTY_TERMINAL_H diff --git a/0.76_My_PuTTY/windows/MAKEFILE.MINGW b/0.76_My_PuTTY/windows/MAKEFILE.MINGW index 53c9ac0..6dcfd48 100644 --- a/0.76_My_PuTTY/windows/MAKEFILE.MINGW +++ b/0.76_My_PuTTY/windows/MAKEFILE.MINGW @@ -67,11 +67,6 @@ # Disables PuTTY's use of SecureZeroMemory(), which is missing # from some environments' header files. # -# - XFLAGS=-DTELNET_DEFAULT -# Causes PuTTY to default to the Telnet protocol (in the absence -# of Default Settings and so on to the contrary). Normally PuTTY -# will default to SSH. -# # - XFLAGS=-DDEBUG # Causes PuTTY to enable internal debugging. # @@ -423,8 +418,8 @@ putty.exe: agentf.o aqsync.o be_all_s.o be_misc.o callback.o cmdline.o \ winnps.o winpgntc.o winprint.o winproxy.o winsecur.o \ winselgui.o winser.o winshare.o winstore.o wintime.o \ winucs.o winutils.o winx11.o x11fwd.o \ + cencode.o cdecode.o \ adb.o \ - cencode.o cdecode.o \ kitty.o kitty_commun.o kitty_crypt.o kitty_image.o kitty_proxy.o kitty_registry.o kitty_ssh.o \ kitty_store.o kitty_tools.o kitty_win.o \ urlhack.o pageant_integrated.o winpgnt_integrated.o winpgen_integrated.o winpzmodem.o \ @@ -451,18 +446,34 @@ putty.exe: agentf.o aqsync.o be_all_s.o be_misc.o callback.o cmdline.o \ windlg.o window.o wingss.o winhandl.o winhelp.o winhsock.o \ winjump.o winmisc.o winmiscs.o winnet.o winnoise.o winnpc.o \ winnps.o winpgntc.o winprint.o winproxy.o winsecur.o \ - winser.o winshare.o winstore.o wintime.o winucs.o winutils.o \ - winx11.o cencode.o cdecode.o x11fwd.o -ladvapi32 -lcomdlg32 -lgdi32 -limm32 \ - -lole32 -lshell32 -luser32 - -puttygen.exe: conf.o ecc.o import.o marshal.o memory.o misc.o mpint.o \ - notiming.o puttygen.res.o sshaes.o sshauxcrypt.o sshbcrypt.o \ - sshblowf.o sshdes.o sshdss.o sshdssg.o sshecc.o sshecdsag.o \ - sshhmac.o sshmd5.o sshprime.o sshprng.o sshpubk.o sshrand.o \ - sshrsa.o sshrsag.o sshsh256.o sshsh512.o sshsha.o \ - stripctrl.o tree234.o utils.o version.o wcwidth.o winctrls.o \ - winhelp.o winmisc.o winmiscs.o winnoise.o winnojmp.o \ - winpgen.o winsecur.o winstore.o wintime.o winutils.o + winselgui.o winser.o winshare.o winstore.o wintime.o \ + winucs.o winutils.o winx11.o x11fwd.o \ + cencode.o cdecode.o \ + adb.o \ + kitty.o kitty_commun.o kitty_crypt.o kitty_image.o kitty_proxy.o kitty_registry.o kitty_ssh.o \ + kitty_store.o kitty_tools.o kitty_win.o \ + urlhack.o pageant_integrated.o winpgnt_integrated.o winpgen_integrated.o winpzmodem.o \ + import.o sshrsag.o sshdssg.o sshprime.o sshecdsag.o sshbcrypt.o pockle.o primecandidate.o millerrabin.o mpunsafe.o \ + void.o $(UTF8MOUSE_OBJS) \ + ../../base64/base64.a ../../bcrypt/bcrypt.a ../../blocnote/notepad.a ../../jpeg/libjpeg.a \ + ../../md5/MD5check.a ../../mini/mini.a ../../regex/libregex.a \ + -ladvapi32 -lcomdlg32 -lgdi32 -limm32 -lpsapi -lole32 -lshell32 \ + -luser32 -lwsock32 -lwtsapi32 \ + #-lcrypt32 \ + #/c/Windows/system32/crypt32.dll /c/windows/system32/ncrypt.dll \ + # -lcomctl32 -lwinmm -lwinspool -lole32 + +puttygen.exe: conf.o ecc.o import.o marshal.o memory.o millerrabin.o misc.o \ + mpint.o mpunsafe.o notiming.o pockle.o primecandidate.o \ + puttygen.res.o smallprimes.o sshaes.o sshargon2.o \ + sshauxcrypt.o sshbcrypt.o sshblake2.o sshblowf.o sshdes.o \ + sshdss.o sshdssg.o sshecc.o sshecdsag.o sshhmac.o sshmd5.o \ + sshprime.o sshprng.o sshpubk.o sshrand.o sshrsa.o sshrsag.o \ + sshsh256.o sshsh512.o sshsha.o sshsha3.o stripctrl.o \ + tree234.o utils.o version.o wcwidth.o winctrls.o winhelp.o \ + winmisc.o winmiscs.o winnoise.o winnojmp.o winpgen.o \ + winsecur.o winstore.o wintime.o winutils.o \ + kitty_commun.o kitty_crypt.o kitty_registry.o kitty_keygen.o kitty_store.o kitty_tools.o $(CC) -mwindows $(LDFLAGS) -o $@ -Wl,-Map,puttygen.map conf.o ecc.o \ import.o marshal.o memory.o millerrabin.o misc.o mpint.o \ mpunsafe.o notiming.o pockle.o primecandidate.o \ diff --git a/0.76_My_PuTTY/windows/window.c b/0.76_My_PuTTY/windows/window.c index 44f8fec..bdee9bd 100644 --- a/0.76_My_PuTTY/windows/window.c +++ b/0.76_My_PuTTY/windows/window.c @@ -615,7 +615,8 @@ static const SeatVtable win_seat_vt = { .interactive = nullseat_interactive_yes, .get_cursor_position = win_seat_get_cursor_position, }; -static WinGuiSeat wgs = { .seat.vt = &win_seat_vt, +//static +WinGuiSeat wgs = { .seat.vt = &win_seat_vt, .logpolicy.vt = &win_gui_logpolicy_vt }; #ifdef MOD_PERSO diff --git a/0.76_My_PuTTY/windows/winseat.h b/0.76_My_PuTTY/windows/winseat.h index b888343..7434f4f 100644 --- a/0.76_My_PuTTY/windows/winseat.h +++ b/0.76_My_PuTTY/windows/winseat.h @@ -3,6 +3,8 @@ * and windlg.c. */ +#pragma once + typedef struct WinGuiSeat WinGuiSeat; struct WinGuiSeat {