aboutsummaryrefslogtreecommitdiffstats
path: root/src/w32fns.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/w32fns.c')
-rw-r--r--src/w32fns.c41
1 files changed, 34 insertions, 7 deletions
diff --git a/src/w32fns.c b/src/w32fns.c
index e490588d01b..b0842b5ee6c 100644
--- a/src/w32fns.c
+++ b/src/w32fns.c
@@ -5889,6 +5889,8 @@ This function is an internal primitive--use `make-frame' instead. */)
5889 NULL, NULL, RES_TYPE_BOOLEAN); 5889 NULL, NULL, RES_TYPE_BOOLEAN);
5890 x_default_parameter (f, parameters, Qno_accept_focus, Qnil, 5890 x_default_parameter (f, parameters, Qno_accept_focus, Qnil,
5891 NULL, NULL, RES_TYPE_BOOLEAN); 5891 NULL, NULL, RES_TYPE_BOOLEAN);
5892 x_default_parameter (f, parameters, Qno_special_glyphs, Qnil,
5893 NULL, NULL, RES_TYPE_BOOLEAN);
5892 5894
5893 /* Process alpha here (Bug#16619). On XP this fails with child 5895 /* Process alpha here (Bug#16619). On XP this fails with child
5894 frames. For `no-focus-on-map' frames delay processing of alpha 5896 frames. For `no-focus-on-map' frames delay processing of alpha
@@ -5957,6 +5959,14 @@ This function is an internal primitive--use `make-frame' instead. */)
5957 f->output_data.w32->hourglass_cursor = w32_load_cursor (IDC_WAIT); 5959 f->output_data.w32->hourglass_cursor = w32_load_cursor (IDC_WAIT);
5958 f->output_data.w32->horizontal_drag_cursor = w32_load_cursor (IDC_SIZEWE); 5960 f->output_data.w32->horizontal_drag_cursor = w32_load_cursor (IDC_SIZEWE);
5959 f->output_data.w32->vertical_drag_cursor = w32_load_cursor (IDC_SIZENS); 5961 f->output_data.w32->vertical_drag_cursor = w32_load_cursor (IDC_SIZENS);
5962 f->output_data.w32->left_edge_cursor = w32_load_cursor (IDC_SIZEWE);
5963 f->output_data.w32->top_left_corner_cursor = w32_load_cursor (IDC_SIZENWSE);
5964 f->output_data.w32->top_edge_cursor = w32_load_cursor (IDC_SIZENS);
5965 f->output_data.w32->top_right_corner_cursor = w32_load_cursor (IDC_SIZENESW);
5966 f->output_data.w32->right_edge_cursor = w32_load_cursor (IDC_SIZEWE);
5967 f->output_data.w32->bottom_right_corner_cursor = w32_load_cursor (IDC_SIZENWSE);
5968 f->output_data.w32->bottom_edge_cursor = w32_load_cursor (IDC_SIZENS);
5969 f->output_data.w32->bottom_left_corner_cursor = w32_load_cursor (IDC_SIZENESW);
5960 5970
5961 f->output_data.w32->current_cursor = f->output_data.w32->nontext_cursor; 5971 f->output_data.w32->current_cursor = f->output_data.w32->nontext_cursor;
5962 5972
@@ -7049,6 +7059,8 @@ x_create_tip_frame (struct w32_display_info *dpyinfo, Lisp_Object parms)
7049 "cursorColor", "Foreground", RES_TYPE_STRING); 7059 "cursorColor", "Foreground", RES_TYPE_STRING);
7050 x_default_parameter (f, parms, Qborder_color, build_string ("black"), 7060 x_default_parameter (f, parms, Qborder_color, build_string ("black"),
7051 "borderColor", "BorderColor", RES_TYPE_STRING); 7061 "borderColor", "BorderColor", RES_TYPE_STRING);
7062 x_default_parameter (f, parms, Qno_special_glyphs, Qt,
7063 NULL, NULL, RES_TYPE_BOOLEAN);
7052 7064
7053 /* Init faces before x_default_parameter is called for the 7065 /* Init faces before x_default_parameter is called for the
7054 scroll-bar-width parameter because otherwise we end up in 7066 scroll-bar-width parameter because otherwise we end up in
@@ -8950,33 +8962,47 @@ menu bar or tool bar of FRAME. */)
8950 if (EQ (type, Qouter_edges)) 8962 if (EQ (type, Qouter_edges))
8951 { 8963 {
8952 RECT rectangle; 8964 RECT rectangle;
8965 BOOL success = false;
8953 8966
8954 block_input (); 8967 block_input ();
8955 /* Outer frame rectangle, including outer borders and title bar. */ 8968 /* Outer frame rectangle, including outer borders and title bar. */
8956 GetWindowRect (FRAME_W32_WINDOW (f), &rectangle); 8969 success = GetWindowRect (FRAME_W32_WINDOW (f), &rectangle);
8957 unblock_input (); 8970 unblock_input ();
8958 8971
8959 return list4 (make_number (rectangle.left), 8972 if (success)
8960 make_number (rectangle.top), 8973 return list4 (make_number (rectangle.left),
8961 make_number (rectangle.right), 8974 make_number (rectangle.top),
8962 make_number (rectangle.bottom)); 8975 make_number (rectangle.right),
8976 make_number (rectangle.bottom));
8977 else
8978 return Qnil;
8963 } 8979 }
8964 else 8980 else
8965 { 8981 {
8966 RECT rectangle; 8982 RECT rectangle;
8967 POINT pt; 8983 POINT pt;
8968 int left, top, right, bottom; 8984 int left, top, right, bottom;
8985 BOOL success;
8969 8986
8970 block_input (); 8987 block_input ();
8971 /* Inner frame rectangle, excluding borders and title bar. */ 8988 /* Inner frame rectangle, excluding borders and title bar. */
8972 GetClientRect (FRAME_W32_WINDOW (f), &rectangle); 8989 success = GetClientRect (FRAME_W32_WINDOW (f), &rectangle);
8973 /* Get top-left corner of native rectangle in screen 8990 /* Get top-left corner of native rectangle in screen
8974 coordinates. */ 8991 coordinates. */
8992 if (!success)
8993 {
8994 unblock_input ();
8995 return Qnil;
8996 }
8997
8975 pt.x = 0; 8998 pt.x = 0;
8976 pt.y = 0; 8999 pt.y = 0;
8977 ClientToScreen (FRAME_W32_WINDOW (f), &pt); 9000 success = ClientToScreen (FRAME_W32_WINDOW (f), &pt);
8978 unblock_input (); 9001 unblock_input ();
8979 9002
9003 if (!success)
9004 return Qnil;
9005
8980 left = pt.x; 9006 left = pt.x;
8981 top = pt.y; 9007 top = pt.y;
8982 right = left + rectangle.right; 9008 right = left + rectangle.right;
@@ -10330,6 +10356,7 @@ frame_parm_handler w32_frame_parm_handlers[] =
10330 x_set_no_accept_focus, 10356 x_set_no_accept_focus,
10331 x_set_z_group, 10357 x_set_z_group,
10332 0, /* x_set_override_redirect */ 10358 0, /* x_set_override_redirect */
10359 x_set_no_special_glyphs,
10333}; 10360};
10334 10361
10335void 10362void