Prevent Password fields from being cut/copied

This commit is contained in:
SuntrustDev
2026-02-17 21:30:15 +01:00
parent a0279b8f4b
commit c687bf7ed4
3 changed files with 45 additions and 2 deletions

View File

@@ -2,6 +2,8 @@
#include "PythonIME.h" #include "PythonIME.h"
#include "AbstractApplication.h" #include "AbstractApplication.h"
bool CPythonIME::ms_bSecretMode = false;
CPythonIME::CPythonIME() CPythonIME::CPythonIME()
: CIME() : CIME()
{ {
@@ -99,7 +101,10 @@ bool CPythonIME::OnWM_CHAR(WPARAM wParam, LPARAM lParam)
case 0x03: // Ctrl+C case 0x03: // Ctrl+C
if (ms_bCaptureInput) if (ms_bCaptureInput)
{ {
CopySelectionToClipboard(); if (!ms_bSecretMode)
{
CopySelectionToClipboard();
}
return true; return true;
} }
return false; return false;
@@ -184,12 +189,18 @@ void CPythonIME::DeleteSelection()
void CPythonIME::CopySelectionToClipboard() void CPythonIME::CopySelectionToClipboard()
{ {
if (ms_bSecretMode)
return;
CIME::CopySelectionToClipboard(ms_hWnd); CIME::CopySelectionToClipboard(ms_hWnd);
} }
void CPythonIME::CutSelection() void CPythonIME::CutSelection()
{ {
CIME::CopySelectionToClipboard(ms_hWnd); if (!ms_bSecretMode)
{
CIME::CopySelectionToClipboard(ms_hWnd);
}
CIME::DeleteSelection(); CIME::DeleteSelection();
} }
@@ -197,3 +208,13 @@ void CPythonIME::PasteTextFromClipBoard()
{ {
CIME::PasteTextFromClipBoard(); CIME::PasteTextFromClipBoard();
} }
void CPythonIME::SetSecretMode(bool bSecret)
{
ms_bSecretMode = bSecret;
}
bool CPythonIME::IsSecretMode()
{
return ms_bSecretMode;
}

View File

@@ -27,6 +27,9 @@ public:
void Create(HWND hWnd); void Create(HWND hWnd);
static void SetSecretMode(bool bSecret);
static bool IsSecretMode();
protected: protected:
virtual void OnTab(); virtual void OnTab();
virtual void OnReturn(); virtual void OnReturn();
@@ -39,4 +42,6 @@ protected:
virtual void OnOpenReadingWnd(); virtual void OnOpenReadingWnd();
virtual void OnCloseReadingWnd(); virtual void OnCloseReadingWnd();
private:
static bool ms_bSecretMode;
}; };

View File

@@ -251,6 +251,21 @@ PyObject* imePasteReturn(PyObject * poSelf, PyObject * poArgs)
return Py_BuildNone(); return Py_BuildNone();
} }
PyObject* imeSetSecretMode(PyObject * poSelf, PyObject * poArgs)
{
int iFlag;
if (!PyTuple_GetInteger(poArgs, 0, &iFlag))
return Py_BuildException();
CPythonIME::SetSecretMode(iFlag != 0);
return Py_BuildNone();
}
PyObject* imeIsSecretMode(PyObject * poSelf, PyObject * poArgs)
{
return Py_BuildValue("i", CPythonIME::IsSecretMode() ? 1 : 0);
}
void initime() void initime()
{ {
static PyMethodDef s_methods[] = static PyMethodDef s_methods[] =
@@ -293,6 +308,8 @@ void initime()
{ "CutSelection", imeCutSelection, METH_VARARGS }, { "CutSelection", imeCutSelection, METH_VARARGS },
{ "CopySelection", imeCopySelectionToClipboard,METH_VARARGS }, { "CopySelection", imeCopySelectionToClipboard,METH_VARARGS },
{ "EnablePaste", imeEnablePaste, METH_VARARGS }, { "EnablePaste", imeEnablePaste, METH_VARARGS },
{ "SetSecretMode", imeSetSecretMode, METH_VARARGS },
{ "IsSecretMode", imeIsSecretMode, METH_VARARGS },
{ NULL, NULL, NULL }, { NULL, NULL, NULL },
}; };