OSDN Git Service

Adjust the layout of the properties dialog dynamically
authorYujiSoftware <yuji.software+github@gmail.com>
Sat, 31 Mar 2018 10:23:56 +0000 (19:23 +0900)
committerKazuhiro Fujieda @kfujieda <fujieda@acm.org>
Sat, 31 Mar 2018 10:23:56 +0000 (19:23 +0900)
On CJK versions of Windows 8 or later, the property sheet on the properties dialog are larger than expected and overlaps push buttons. This fix adjusts the layout dynamically.

Fixes #2 on github.

xkeymacs/properties.cpp
xkeymacs/xkeymacs.rc

index 2dc5733..6626170 100644 (file)
@@ -78,10 +78,22 @@ BOOL CProperties::OnInitDialog()
        m_sheet.ModifyStyleEx (0, WS_EX_CONTROLPARENT);\r
        m_sheet.ModifyStyle( 0, WS_TABSTOP );\r
 \r
+       CRect rcArea;\r
+       GetDlgItem(IDC_TAB)->GetWindowRect(&rcArea);\r
+       ScreenToClient(&rcArea);\r
+       m_sheet.SetWindowPos(NULL, rcArea.left - 11, rcArea.top - 8, 0, 0, SWP_NOZORDER | SWP_NOSIZE | SWP_NOACTIVATE);\r
+\r
+       // Fix: Overlapped with buttons due to font size change in CJK Windows 8 or later\r
+       // https://github.com/fujieda/xkeymacs/issues/2\r
        CRect rcSheet;\r
-       GetDlgItem(IDC_TAB)->GetWindowRect(&rcSheet);\r
-       ScreenToClient(&rcSheet);\r
-       m_sheet.SetWindowPos(NULL, rcSheet.left - 11, rcSheet.top - 8, 0, 0, SWP_NOZORDER | SWP_NOSIZE | SWP_NOACTIVATE);\r
+       m_sheet.GetWindowRect(&rcSheet);\r
+       CRect rcDialog;\r
+       GetWindowRect(&rcDialog);\r
+       rcDialog.SetRect(rcDialog.left, rcDialog.top, rcDialog.right, rcSheet.bottom + 45);\r
+       MoveWindow(rcDialog, TRUE);\r
+\r
+       // Fix:  Window size can be changed due to dynamic layout effect\r
+       ModifyStyle(WS_THICKFRAME, DS_MODALFRAME);\r
 \r
        SetForegroundWindow();\r
 \r
index cfafcd0..0b4ab1b 100644 (file)
@@ -770,6 +770,34 @@ END
 \r
 /////////////////////////////////////////////////////////////////////////////\r
 //\r
+// AFX_DIALOG_LAYOUT\r
+//\r
+\r
+IDD_PROPERTIES AFX_DIALOG_LAYOUT\r
+BEGIN\r
+    0,\r
+    0, 0, 0, 0,\r
+    0, 0, 0, 0,\r
+    0, 0, 0, 0,\r
+    0, 0, 0, 0,\r
+    0, 0, 0, 0,\r
+    0, 0, 0, 0,\r
+    0, 100, 0, 0,\r
+    0, 100, 0, 0,\r
+    0, 100, 0, 0,\r
+    0, 100, 0, 0,\r
+    0, 100, 0, 0,\r
+    0, 100, 0, 0,\r
+    0, 0, 0, 0,\r
+    0, 0, 0, 0,\r
+    0, 0, 0, 0,\r
+    0, 0, 0, 0,\r
+    0, 0, 0, 0\r
+END\r
+\r
+\r
+/////////////////////////////////////////////////////////////////////////////\r
+//\r
 // String Table\r
 //\r
 \r