diff options
author | George Hazan <ghazan@miranda.im> | 2018-06-09 17:19:42 +0300 |
---|---|---|
committer | George Hazan <ghazan@miranda.im> | 2018-06-09 17:19:42 +0300 |
commit | fce69a87e8dfc0b4ebf641507f96295806419b19 (patch) | |
tree | b46f26b7250240fa3a2d835655ed10efa1ee1582 /plugins/Scriver/src | |
parent | ae8e9d41f8b5cfb121d39143c31a8e19c0a4b9c1 (diff) |
fixes #1406 (Scriver: sending by Shift+Enter)
Diffstat (limited to 'plugins/Scriver/src')
-rw-r--r-- | plugins/Scriver/src/chat_window.cpp | 16 | ||||
-rw-r--r-- | plugins/Scriver/src/globals.cpp | 21 | ||||
-rw-r--r-- | plugins/Scriver/src/globals.h | 10 | ||||
-rw-r--r-- | plugins/Scriver/src/input.cpp | 33 | ||||
-rw-r--r-- | plugins/Scriver/src/msgdialog.cpp | 21 | ||||
-rw-r--r-- | plugins/Scriver/src/msgoptions.cpp | 21 | ||||
-rw-r--r-- | plugins/Scriver/src/msgs.h | 13 | ||||
-rw-r--r-- | plugins/Scriver/src/resource.h | 10 | ||||
-rw-r--r-- | plugins/Scriver/src/version.h | 2 |
9 files changed, 80 insertions, 67 deletions
diff --git a/plugins/Scriver/src/chat_window.cpp b/plugins/Scriver/src/chat_window.cpp index 87c4868053..079607028d 100644 --- a/plugins/Scriver/src/chat_window.cpp +++ b/plugins/Scriver/src/chat_window.cpp @@ -665,22 +665,8 @@ LRESULT CChatRoomDlg::WndProc_Message(UINT msg, WPARAM wParam, LPARAM lParam) case WM_KEYDOWN:
if (wParam == VK_RETURN) {
- replaceStrW(m_wszSearchQuery, nullptr);
- replaceStrW(m_wszSearchResult, nullptr);
- if ((isCtrl != 0) ^ (0 != db_get_b(0, SRMM_MODULE, SRMSGSET_SENDONENTER, SRMSGDEFSET_SENDONENTER))) {
- PostMessage(m_hwnd, WM_COMMAND, IDOK, 0);
+ if (CheckSend())
return 0;
- }
- if (db_get_b(0, SRMM_MODULE, SRMSGSET_SENDONDBLENTER, SRMSGDEFSET_SENDONDBLENTER)) {
- if (m_iLastEnterTime + 2 < time(0))
- m_iLastEnterTime = time(0);
- else {
- m_message.SendMsg(WM_KEYDOWN, VK_BACK, 0);
- m_message.SendMsg(WM_KEYUP, VK_BACK, 0);
- PostMessage(m_hwnd, WM_COMMAND, IDOK, 0);
- return 0;
- }
- }
}
else m_iLastEnterTime = 0;
diff --git a/plugins/Scriver/src/globals.cpp b/plugins/Scriver/src/globals.cpp index cb2632db08..f529234937 100644 --- a/plugins/Scriver/src/globals.cpp +++ b/plugins/Scriver/src/globals.cpp @@ -298,6 +298,22 @@ void InitGlobals() memset(&g_dat, 0, sizeof(struct GlobalMessageData));
g_dat.hParentWindowList = WindowList_Create();
+ if (!db_get_b(0, "Compatibility", "Scriver", 0)) {
+ if (g_plugin.getByte("SendOnEnter"))
+ g_dat.sendMode = SEND_ON_ENTER;
+ else if (g_plugin.getByte("SendOnDblEnter"))
+ g_dat.sendMode = SEND_ON_DBL_ENTER;
+ else if (g_plugin.getByte("SendOnCtrlEnter"))
+ g_dat.sendMode = SEND_ON_CTRL_ENTER;
+
+ g_plugin.setByte(SRMSGSET_SENDMODE, g_dat.sendMode);
+
+ g_plugin.delSetting("SendOnEnter");
+ g_plugin.delSetting("SendOnDblEnter");
+ g_plugin.delSetting("SendOnCtrlEnter");
+ db_set_b(0, "Compatibility", "Scriver", 1);
+ }
+
HookEvent(ME_PROTO_ACK, ackevent);
ReloadGlobals();
g_dat.lastParent = nullptr;
@@ -376,13 +392,10 @@ void ReloadGlobals() if (db_get_b(0, SRMM_MODULE, SRMSGSET_DELTEMP, SRMSGDEFSET_DELTEMP))
g_dat.flags |= SMF_DELTEMP;
- if (db_get_b(0, SRMM_MODULE, SRMSGSET_SENDONENTER, SRMSGDEFSET_SENDONENTER))
- g_dat.flags |= SMF_SENDONENTER;
- if (db_get_b(0, SRMM_MODULE, SRMSGSET_SENDONDBLENTER, SRMSGDEFSET_SENDONDBLENTER))
- g_dat.flags |= SMF_SENDONDBLENTER;
if (db_get_b(0, SRMM_MODULE, SRMSGSET_INDENTTEXT, SRMSGDEFSET_INDENTTEXT))
g_dat.flags |= SMF_INDENTTEXT;
+ g_dat.sendMode = (SendMode)db_get_b(0, SRMM_MODULE, SRMSGSET_SENDMODE, SRMSGDEFSET_SENDMODE);
g_dat.openFlags = db_get_dw(0, SRMM_MODULE, SRMSGSET_POPFLAGS, SRMSGDEFSET_POPFLAGS);
g_dat.indentSize = db_get_w(0, SRMM_MODULE, SRMSGSET_INDENTSIZE, SRMSGDEFSET_INDENTSIZE);
g_dat.logLineColour = db_get_dw(0, SRMM_MODULE, SRMSGSET_LINECOLOUR, SRMSGDEFSET_LINECOLOUR);
diff --git a/plugins/Scriver/src/globals.h b/plugins/Scriver/src/globals.h index eb84086dc3..0800dda15f 100644 --- a/plugins/Scriver/src/globals.h +++ b/plugins/Scriver/src/globals.h @@ -29,8 +29,6 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. #define SMF_MINIMIZEONSEND 0x00000008
#define SMF_SAVEDRAFTS 0x00000040
#define SMF_DELTEMP 0x00000080
-#define SMF_SENDONENTER 0x00000100
-#define SMF_SENDONDBLENTER 0x00000200
#define SMF_SHOWPROGRESS 0x00000400
#define SMF_AVATAR 0x00000800
#define SMF_RTL 0x00004000
@@ -76,6 +74,13 @@ typedef struct ImageListUsageEntry_tag int used;
} ImageListUsageEntry;
+enum SendMode
+{
+ SEND_ON_ENTER,
+ SEND_ON_DBL_ENTER,
+ SEND_ON_CTRL_ENTER,
+ SEND_ON_SHIFT_ENTER
+};
struct GlobalMessageData
{
@@ -85,6 +90,7 @@ struct GlobalMessageData DWORD limitNamesLength;
int activeAlpha;
int inactiveAlpha;
+ SendMode sendMode;
int tabIconListUsageSize;
int smileyAddInstalled;
int popupInstalled;
diff --git a/plugins/Scriver/src/input.cpp b/plugins/Scriver/src/input.cpp index 61acf8f9be..620db9d6b1 100644 --- a/plugins/Scriver/src/input.cpp +++ b/plugins/Scriver/src/input.cpp @@ -112,6 +112,39 @@ void InputAreaContextMenu(HWND hwnd, WPARAM, LPARAM lParam, MCONTACT hContact) DestroyMenu(hMenu);
}
+bool CScriverWindow::CheckSend()
+{
+ BOOL isShift = GetKeyState(VK_SHIFT) & 0x8000;
+ BOOL isCtrl = GetKeyState(VK_CONTROL) & 0x8000;
+ BOOL isAlt = GetKeyState(VK_MENU) & 0x8000;
+
+ if (!isShift && !isCtrl && g_dat.sendMode == SEND_ON_ENTER) {
+ PostMessage(m_hwnd, WM_COMMAND, IDOK, 0);
+ return true;
+ }
+ if (!isShift && isCtrl && g_dat.sendMode == SEND_ON_CTRL_ENTER) {
+ PostMessage(m_hwnd, WM_COMMAND, IDOK, 0);
+ return true;
+ }
+ if (isShift && !isCtrl && g_dat.sendMode == SEND_ON_SHIFT_ENTER) {
+ PostMessage(m_hwnd, WM_COMMAND, IDOK, 0);
+ return true;
+ }
+
+ if (g_dat.sendMode == SEND_ON_DBL_ENTER) {
+ if (m_iLastEnterTime + 1000 < GetTickCount())
+ m_iLastEnterTime = GetTickCount();
+ else {
+ m_log.SendMsg(WM_KEYDOWN, VK_BACK, 0);
+ m_log.SendMsg(WM_KEYUP, VK_BACK, 0);
+ PostMessage(m_hwnd, WM_COMMAND, IDOK, 0);
+ return true;
+ }
+ }
+
+ return false;
+}
+
int CScriverWindow::InputAreaShortcuts(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
BOOL isShift = GetKeyState(VK_SHIFT) & 0x8000;
diff --git a/plugins/Scriver/src/msgdialog.cpp b/plugins/Scriver/src/msgdialog.cpp index 401371f491..85ca800e88 100644 --- a/plugins/Scriver/src/msgdialog.cpp +++ b/plugins/Scriver/src/msgdialog.cpp @@ -25,8 +25,6 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. #define VALID_AVATAR(x) (x==PA_FORMAT_PNG||x==PA_FORMAT_JPEG||x==PA_FORMAT_ICON||x==PA_FORMAT_BMP||x==PA_FORMAT_GIF)
-#define ENTERCLICKTIME 1000 //max time in ms during which a double-tap on enter will cause a send
-
static wchar_t* GetQuotedTextW(wchar_t *text)
{
size_t i, j, l = mir_wstrlen(text);
@@ -1021,26 +1019,11 @@ LRESULT CSrmmWindow::WndProc_Message(UINT msg, WPARAM wParam, LPARAM lParam) if (result != -1)
return result;
- BOOL isCtrl = GetKeyState(VK_CONTROL) & 0x8000;
- BOOL isAlt = GetKeyState(VK_MENU) & 0x8000;
-
switch (msg) {
case WM_KEYDOWN:
if (wParam == VK_RETURN) {
- if ((isCtrl != 0) ^ (0 != (g_dat.flags & SMF_SENDONENTER))) {
- PostMessage(m_hwnd, WM_COMMAND, IDOK, 0);
+ if (CheckSend())
return 0;
- }
- if (g_dat.flags & SMF_SENDONDBLENTER) {
- if (m_iLastEnterTime + ENTERCLICKTIME < GetTickCount())
- m_iLastEnterTime = GetTickCount();
- else {
- m_log.SendMsg(WM_KEYDOWN, VK_BACK, 0);
- m_log.SendMsg(WM_KEYUP, VK_BACK, 0);
- PostMessage(m_hwnd, WM_COMMAND, IDOK, 0);
- return 0;
- }
- }
}
else m_iLastEnterTime = 0;
break;
@@ -1059,7 +1042,7 @@ LRESULT CSrmmWindow::WndProc_Message(UINT msg, WPARAM wParam, LPARAM lParam) case WM_SYSCHAR:
m_iLastEnterTime = 0;
- if ((wParam == 's' || wParam == 'S') && isAlt) {
+ if ((wParam == 's' || wParam == 'S') && (GetKeyState(VK_MENU) & 0x8000)) {
PostMessage(m_hwnd, WM_COMMAND, IDOK, 0);
return 0;
}
diff --git a/plugins/Scriver/src/msgoptions.cpp b/plugins/Scriver/src/msgoptions.cpp index 2121c632df..5b4f434a2b 100644 --- a/plugins/Scriver/src/msgoptions.cpp +++ b/plugins/Scriver/src/msgoptions.cpp @@ -225,7 +225,7 @@ static const struct CheckBoxValues_t statusValues[] = class CMainOptionsDlg : public CBaseOptionDlg
{
CCtrlCheck chkAutoPopup, chkCascade, chkSavePerContact;
- CCtrlCheck chkSendOnEnter, chkSendOnDblEnter, chkSendOnCtrlEnter;
+ CCtrlCombo cmbSendMode;
CCtrlTreeView m_tree;
void FillCheckBoxTree(const struct CheckBoxValues_t *values, int nValues, DWORD style)
@@ -263,10 +263,8 @@ public: CBaseOptionDlg(IDD_OPT_MSGDLG),
m_tree(this, IDC_POPLIST),
chkCascade(this, IDC_CASCADE),
+ cmbSendMode(this, IDC_SENDMODE),
chkAutoPopup(this, IDC_AUTOPOPUP),
- chkSendOnEnter(this, IDC_SENDONENTER),
- chkSendOnDblEnter(this, IDC_SENDONDBLENTER),
- chkSendOnCtrlEnter(this, IDC_SENDONCTRLENTER),
chkSavePerContact(this, IDC_SAVEPERCONTACT)
{
chkCascade.OnChange = Callback(this, &CMainOptionsDlg::onChange_Cascade);
@@ -292,12 +290,11 @@ public: chkCascade.SetState(db_get_b(0, SRMM_MODULE, SRMSGSET_CASCADE, SRMSGDEFSET_CASCADE));
chkSavePerContact.SetState(db_get_b(0, SRMM_MODULE, SRMSGSET_SAVEPERCONTACT, SRMSGDEFSET_SAVEPERCONTACT));
- if (db_get_b(0, SRMM_MODULE, SRMSGSET_SENDONENTER, SRMSGDEFSET_SENDONENTER))
- CheckDlgButton(m_hwnd, IDC_SENDONENTER, BST_CHECKED);
- else if (db_get_b(0, SRMM_MODULE, SRMSGSET_SENDONDBLENTER, SRMSGDEFSET_SENDONDBLENTER))
- CheckDlgButton(m_hwnd, IDC_SENDONDBLENTER, BST_CHECKED);
- else
- CheckDlgButton(m_hwnd, IDC_SENDONCTRLENTER, BST_CHECKED);
+ cmbSendMode.AddString(L"Enter");
+ cmbSendMode.AddString(LPGENW("Double 'Enter'"));
+ cmbSendMode.AddString(L"Ctrl+Enter");
+ cmbSendMode.AddString(L"Shift+Enter");
+ cmbSendMode.SetCurSel(g_dat.sendMode);
onChange_AutoPopup(0);
}
@@ -313,9 +310,7 @@ public: db_set_b(0, SRMM_MODULE, SRMSGSET_DELTEMP, (BYTE)IsDlgButtonChecked(m_hwnd, IDC_DELTEMP));
db_set_dw(0, SRMM_MODULE, SRMSGSET_MSGTIMEOUT, (DWORD)SendDlgItemMessage(m_hwnd, IDC_SECONDSSPIN, UDM_GETPOS, 0, 0) * 1000);
- db_set_b(0, SRMM_MODULE, SRMSGSET_SENDONENTER, (BYTE)IsDlgButtonChecked(m_hwnd, IDC_SENDONENTER));
- db_set_b(0, SRMM_MODULE, SRMSGSET_SENDONDBLENTER, (BYTE)IsDlgButtonChecked(m_hwnd, IDC_SENDONDBLENTER));
- db_set_b(0, SRMM_MODULE, SRMSGSET_SENDONCTRLENTER, (BYTE)IsDlgButtonChecked(m_hwnd, IDC_SENDONCTRLENTER));
+ db_set_b(0, SRMM_MODULE, SRMSGSET_SENDMODE, cmbSendMode.GetCurSel());
db_set_b(0, SRMM_MODULE, SRMSGSET_SAVEPERCONTACT, chkSavePerContact.GetState());
db_set_b(0, SRMM_MODULE, SRMSGSET_CASCADE, chkCascade.GetState());
diff --git a/plugins/Scriver/src/msgs.h b/plugins/Scriver/src/msgs.h index 8950709813..988499f21a 100644 --- a/plugins/Scriver/src/msgs.h +++ b/plugins/Scriver/src/msgs.h @@ -83,7 +83,8 @@ class CScriverWindow : public CSrmmBaseDialog protected:
CScriverWindow(int iDialog, SESSION_INFO* = nullptr);
- int InputAreaShortcuts(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam);
+ bool CheckSend();
+ int InputAreaShortcuts(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam);
public:
void CloseTab() override;
@@ -375,12 +376,6 @@ extern int fontOptionsListSize; #define SRMSGDEFSET_AUTOMIN 0
#define SRMSGSET_AUTOCLOSE "AutoClose"
#define SRMSGDEFSET_AUTOCLOSE 0
-#define SRMSGSET_SENDONENTER "SendOnEnter"
-#define SRMSGDEFSET_SENDONENTER 1
-#define SRMSGSET_SENDONDBLENTER "SendOnDblEnter"
-#define SRMSGDEFSET_SENDONDBLENTER 0
-#define SRMSGSET_SENDONCTRLENTER "SendOnCtrlEnter"
-#define SRMSGDEFSET_SENDONCTRLENTER 0
#define SRMSGSET_SENDBUTTON "UseSendButton"
#define SRMSGDEFSET_SENDBUTTON 0
#define SRMSGSET_CHARCOUNT "ShowCharCount"
@@ -485,4 +480,8 @@ extern int fontOptionsListSize; #define SRMSGSET_AUTORESIZELINES "AutoResizeLines"
#define SRMSGDEFSET_AUTORESIZELINES 2
+
+#define SRMSGSET_SENDMODE "SendMode"
+#define SRMSGDEFSET_SENDMODE 0
+
#endif
diff --git a/plugins/Scriver/src/resource.h b/plugins/Scriver/src/resource.h index 138cce6651..a24cbd440f 100644 --- a/plugins/Scriver/src/resource.h +++ b/plugins/Scriver/src/resource.h @@ -1,6 +1,6 @@ //{{NO_DEPENDENCIES}}
// Microsoft Visual C++ generated include file.
-// Used by ..\res\resource.rc
+// Used by w:\miranda-ng\plugins\Scriver\res\resource.rc
//
#define VS_VERSION_INFO 1
#define IDD_MSGWIN 100
@@ -106,12 +106,10 @@ #define IDC_LOADCOUNTSPIN 1040
#define IDC_SHOWSTATUSBAR 1041
#define IDC_SHOWTOOLBAR 1042
-#define IDC_SENDONENTER 1043
-#define IDC_SENDONDBLENTER 1044
+#define IDC_SENDMODE 1043
#define IDC_LOADTIMEN 1045
#define IDC_LOADTIMESPIN 1046
#define IDC_LOADTIME 1047
-#define IDC_SENDONCTRLENTER 1048
#define IDC_SHOWTITLEBAR 1050
#define IDC_STMINSOLD 1051
#define IDC_SHOWPROGRESS 1052
@@ -248,9 +246,9 @@ //
#ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS
-#define _APS_NEXT_RESOURCE_VALUE 103
+#define _APS_NEXT_RESOURCE_VALUE 104
#define _APS_NEXT_COMMAND_VALUE 40001
-#define _APS_NEXT_CONTROL_VALUE 1003
+#define _APS_NEXT_CONTROL_VALUE 1005
#define _APS_NEXT_SYMED_VALUE 101
#endif
#endif
diff --git a/plugins/Scriver/src/version.h b/plugins/Scriver/src/version.h index 2da3d6bb5b..0cd894485b 100644 --- a/plugins/Scriver/src/version.h +++ b/plugins/Scriver/src/version.h @@ -1,7 +1,7 @@ #define __MAJOR_VERSION 3 #define __MINOR_VERSION 0 #define __RELEASE_NUM 1 -#define __BUILD_NUM 9 +#define __BUILD_NUM 10 #include <stdver.h> |