/* Graphical user interface functions for the Microsoft W32 API.
Copyright (C) 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
- 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
+ 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
Free Software Foundation, Inc.
This file is part of GNU Emacs.
static unsigned hourglass_timer = 0;
static HWND hourglass_hwnd = NULL;
+#if 0 /* TODO: Mouse cursor customization. */
/* The background and shape of the mouse pointer, and shape when not
over text or in the modeline. */
-
Lisp_Object Vx_pointer_shape, Vx_nontext_pointer_shape, Vx_mode_pointer_shape;
Lisp_Object Vx_hourglass_pointer_shape, Vx_window_horizontal_drag_shape;
/* The shape when over mouse-sensitive text. */
Lisp_Object Vx_sensitive_text_pointer_shape;
+#endif
#ifndef IDC_HAND
#define IDC_HAND MAKEINTRESOURCE(32649)
#endif
/* Color of chars displayed in cursor box. */
-
Lisp_Object Vx_cursor_fore_pixel;
/* Nonzero if using Windows. */
DWORD dwFlags;
};
+/* Reportedly, VS 6 does not have this in its headers. */
+#if defined(_MSC_VER) && _MSC_VER < 1300
+DECLARE_HANDLE(HMONITOR);
+#endif
+
typedef BOOL (WINAPI * TrackMouseEvent_Proc)
(IN OUT LPTRACKMOUSEEVENT lpEventTrack);
typedef LONG (WINAPI * ImmGetCompositionString_Proc)
&& mask_color == FRAME_BACKGROUND_PIXEL (f))
f->output_data.w32->mouse_pixel = FRAME_FOREGROUND_PIXEL (f);
-#if 0 /* TODO : cursor changes */
+#if 0 /* TODO : Mouse cursor customization. */
BLOCK_INPUT;
/* It's not okay to crash if the user selects a screwy cursor. */
x_free_frame_resources (f);
+#if GLYPH_DEBUG
/* Check that reference counts are indeed correct. */
xassert (dpyinfo->reference_count == dpyinfo_refcount);
xassert (dpyinfo->image_cache->refcount == image_cache_refcount);
-
+#endif
return Qt;
}
x_default_parameter (f, parameters, Qborder_width, make_number (2),
"borderWidth", "BorderWidth", RES_TYPE_NUMBER);
- /* We recognize either internalBorderWidth or internalBorder
+ /* We recognize either internalBorderWidth or internalBorder
(which is what xterm calls it). */
if (NILP (Fassq (Qinternal_border_width, parameters)))
{
{
struct w32_display_info *dpyinfo = check_x_display_info (display);
- return make_number (dpyinfo->width);
+ return make_number (x_display_pixel_width (dpyinfo));
}
DEFUN ("x-display-pixel-height", Fx_display_pixel_height,
{
struct w32_display_info *dpyinfo = check_x_display_info (display);
- return make_number (dpyinfo->height);
+ return make_number (x_display_pixel_height (dpyinfo));
}
DEFUN ("x-display-planes", Fx_display_planes, Sx_display_planes,
error ("Cannot connect to server %s", SDATA (name));
w32_in_use = 1;
- XSETFASTINT (Vwindow_system_version, 3);
+ XSETFASTINT (Vwindow_system_version, w32_major_version);
return dpyinfo;
}
w32_in_use = 1;
- XSETFASTINT (Vwindow_system_version, 3);
+ XSETFASTINT (Vwindow_system_version, w32_major_version);
return Qnil;
}
{
struct frame *f = x_window_to_frame (&one_w32_display_info,
hourglass_hwnd);
+ if (f)
+ f->output_data.w32->hourglass_p = 0;
+ else
+ /* If frame was deleted, restore to selected frame's cursor. */
+ f = SELECTED_FRAME ();
+
+ if (FRAME_W32_P (f))
+ SetCursor (f->output_data.w32->current_cursor);
+ else
+ /* No cursors on non GUI frames - restore to stock arrow cursor. */
+ SetCursor (w32_load_cursor (IDC_ARROW));
- f->output_data.w32->hourglass_p = 0;
- SetCursor (f->output_data.w32->current_cursor);
hourglass_shown_p = 0;
}
}
FRAME_FONTSET (f) = -1;
f->icon_name = Qnil;
-#if 0 /* GLYPH_DEBUG TODO: image support. */
+#if GLYPH_DEBUG
image_cache_refcount = FRAME_IMAGE_CACHE (f)->refcount;
dpyinfo_refcount = dpyinfo->reference_count;
#endif /* GLYPH_DEBUG */
of the tooltip frame appear in pink. Prevent this. */
{
Lisp_Object bg = Fframe_parameter (frame, Qbackground_color);
+ Lisp_Object fg = Fframe_parameter (frame, Qforeground_color);
+ Lisp_Object colors = Qnil;
/* Set tip_frame here, so that */
tip_frame = frame;
call2 (Qface_set_after_frame_default, frame, Qnil);
if (!EQ (bg, Fframe_parameter (frame, Qbackground_color)))
- Fmodify_frame_parameters (frame, Fcons (Fcons (Qbackground_color, bg),
- Qnil));
+ colors = Fcons (Fcons (Qbackground_color, bg), colors);
+ if (!EQ (fg, Fframe_parameter (frame, Qforeground_color)))
+ colors = Fcons (Fcons (Qforeground_color, fg), colors);
+
+ if (!NILP (colors))
+ Fmodify_frame_parameters (frame, colors);
}
f->no_split = 1;
/* Default min and max values. */
min_x = 0;
min_y = 0;
- max_x = FRAME_W32_DISPLAY_INFO (f)->width;
- max_y = FRAME_W32_DISPLAY_INFO (f)->height;
+ max_x = x_display_pixel_width (FRAME_W32_DISPLAY_INFO (f));
+ max_y = x_display_pixel_height (FRAME_W32_DISPLAY_INFO (f));
BLOCK_INPUT;
GetCursorPos (&pt);
if (FRAMEP (frame))
{
- Fdelete_frame (frame, Qnil);
+ delete_frame (frame, Qnil);
deleted = Qt;
}
if (system_status.BatteryFlag & 128)
{
battery_status = build_string ("N/A");
- battery_status_symbol = build_string ("");
+ battery_status_symbol = empty_unibyte_string;
}
else if (system_status.BatteryFlag & 8)
{
else if (system_status.BatteryFlag & 1)
{
battery_status = build_string ("high");
- battery_status_symbol = build_string ("");
+ battery_status_symbol = empty_unibyte_string;
}
else
{
battery_status = build_string ("medium");
- battery_status_symbol = build_string ("");
+ battery_status_symbol = empty_unibyte_string;
}
if (system_status.BatteryLifePercent > 100)
bass-down, bass-boost, bass-up, treble-down, treble-up */);
w32_pass_multimedia_buttons_to_system = 1;
+#if 0 /* TODO: Mouse cursor customization. */
DEFVAR_LISP ("x-pointer-shape", &Vx_pointer_shape,
doc: /* The shape of the pointer when over text.
Changing the value does not affect existing frames
This variable takes effect when you create a new frame
or when you set the mouse color. */);
Vx_window_horizontal_drag_shape = Qnil;
+#endif
DEFVAR_LISP ("x-cursor-fore-pixel", &Vx_cursor_fore_pixel,
doc: /* A string indicating the foreground color of the cursor box. */);