forked from metin-server/m2dev-client-src
Merge pull request #113 from SunTrustDev/bugfix/text-fields-improvements
This commit is contained in:
@@ -1280,9 +1280,12 @@ int CGraphicTextInstance::PixelPositionToCharacterPosition(int iPixelPosition)
|
|||||||
if (adv <= 0)
|
if (adv <= 0)
|
||||||
adv = pCurCharInfo->width;
|
adv = pCurCharInfo->width;
|
||||||
|
|
||||||
|
int charStart = icurPosition;
|
||||||
icurPosition += adv;
|
icurPosition += adv;
|
||||||
|
|
||||||
if (adjustedPixelPos < icurPosition)
|
int charMid = charStart + adv / 2;
|
||||||
|
|
||||||
|
if (adjustedPixelPos < charMid)
|
||||||
{
|
{
|
||||||
visualPos = i;
|
visualPos = i;
|
||||||
break;
|
break;
|
||||||
|
|||||||
@@ -134,6 +134,9 @@ int GetTextTagInternalPosFromRenderPos(const wchar_t * src, int src_len, int off
|
|||||||
i += len;
|
i += len;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (offset >= output_len)
|
||||||
|
return src_len;
|
||||||
|
|
||||||
return internal_offset;
|
return internal_offset;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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;
|
||||||
|
}
|
||||||
|
|||||||
@@ -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;
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -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 },
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user