X-Git-Url: https://code.delx.au/gnu-emacs/blobdiff_plain/e0079d39e5818bd47ab36f4e1a9c3f0d3fd792fd..972ed2462a24213f68acda61d43e60f3ad6502b9:/src/xfns.c
diff --git a/src/xfns.c b/src/xfns.c
index 80e6f8d470..5b4d40100c 100644
--- a/src/xfns.c
+++ b/src/xfns.c
@@ -56,15 +56,11 @@ along with GNU Emacs. If not, see . */
#include
#include
-#ifndef VMS
#if 1 /* Used to be #ifdef EMACS_BITMAP_FILES, but this should always work. */
#include "bitmaps/gray.xbm"
#else
#include
#endif
-#else
-#include "[.bitmaps]gray.xbm"
-#endif
#ifdef USE_GTK
#include "gtkutil.h"
@@ -149,10 +145,6 @@ int gray_bitmap_width = gray_width;
int gray_bitmap_height = gray_height;
char *gray_bitmap_bits = gray_bits;
-/* Non-zero means we're allowed to display an hourglass cursor. */
-
-int display_hourglass_p;
-
/* Non-zero means prompt with the old GTK file selection dialog. */
int x_gtk_use_old_file_dialog;
@@ -3108,6 +3100,24 @@ x_default_font_parameter (f, parms)
}
+DEFUN ("x-wm-set-size-hint", Fx_wm_set_size_hint, Sx_wm_set_size_hint,
+ 0, 1, 0,
+ doc: /* Send the size hints for frame FRAME to the window manager.
+If FRAME is nil, use the selected frame. */)
+ (frame)
+ Lisp_Object frame;
+{
+ struct frame *f;
+ if (NILP (frame))
+ frame = selected_frame;
+ f = XFRAME (frame);
+ BLOCK_INPUT;
+ if (FRAME_X_P (f))
+ x_wm_set_size_hint (f, 0, 0);
+ UNBLOCK_INPUT;
+ return Qnil;
+}
+
DEFUN ("x-create-frame", Fx_create_frame, Sx_create_frame,
1, 1, 0,
doc: /* Make a new X window, which is called a "frame" in Emacs terms.
@@ -3147,11 +3157,7 @@ This function is an internal primitive--use `make-frame' instead. */)
if (EQ (display, Qunbound))
display = Qnil;
dpyinfo = check_x_display_info (display);
-#ifdef MULTI_KBOARD
kb = dpyinfo->terminal->kboard;
-#else
- kb = &the_only_kboard;
-#endif
if (!dpyinfo->terminal->name)
error ("Terminal is not live, can't create new frames on it");
@@ -3668,7 +3674,7 @@ If omitted or nil, that stands for the selected frame's display. */)
{
struct x_display_info *dpyinfo = check_x_display_info (terminal);
- return make_number (dpyinfo->width);
+ return make_number (x_display_pixel_width (dpyinfo));
}
DEFUN ("x-display-pixel-height", Fx_display_pixel_height,
@@ -3682,7 +3688,7 @@ If omitted or nil, that stands for the selected frame's display. */)
{
struct x_display_info *dpyinfo = check_x_display_info (terminal);
- return make_number (dpyinfo->height);
+ return make_number (x_display_pixel_height (dpyinfo));
}
DEFUN ("x-display-planes", Fx_display_planes, Sx_display_planes,
@@ -4472,85 +4478,6 @@ no value of TYPE. */)
Busy cursor
***********************************************************************/
-/* If non-null, an asynchronous timer that, when it expires, displays
- an hourglass cursor on all frames. */
-
-static struct atimer *hourglass_atimer;
-
-/* Non-zero means an hourglass cursor is currently shown. */
-
-static int hourglass_shown_p;
-
-/* Number of seconds to wait before displaying an hourglass cursor. */
-
-static Lisp_Object Vhourglass_delay;
-
-/* Default number of seconds to wait before displaying an hourglass
- cursor. */
-
-#define DEFAULT_HOURGLASS_DELAY 1
-
-/* Function prototypes. */
-
-static void show_hourglass P_ ((struct atimer *));
-static void hide_hourglass P_ ((void));
-
-/* Return non-zero if houglass timer has been started or hourglass is shown. */
-
-int
-hourglass_started ()
-{
- return hourglass_shown_p || hourglass_atimer != NULL;
-}
-
-
-/* Cancel a currently active hourglass timer, and start a new one. */
-
-void
-start_hourglass ()
-{
- EMACS_TIME delay;
- int secs, usecs = 0;
-
- cancel_hourglass ();
-
- if (INTEGERP (Vhourglass_delay)
- && XINT (Vhourglass_delay) > 0)
- secs = XFASTINT (Vhourglass_delay);
- else if (FLOATP (Vhourglass_delay)
- && XFLOAT_DATA (Vhourglass_delay) > 0)
- {
- Lisp_Object tem;
- tem = Ftruncate (Vhourglass_delay, Qnil);
- secs = XFASTINT (tem);
- usecs = (XFLOAT_DATA (Vhourglass_delay) - secs) * 1000000;
- }
- else
- secs = DEFAULT_HOURGLASS_DELAY;
-
- EMACS_SET_SECS_USECS (delay, secs, usecs);
- hourglass_atimer = start_atimer (ATIMER_RELATIVE, delay,
- show_hourglass, NULL);
-}
-
-
-/* Cancel the hourglass cursor timer if active, hide a busy cursor if
- shown. */
-
-void
-cancel_hourglass ()
-{
- if (hourglass_atimer)
- {
- cancel_atimer (hourglass_atimer);
- hourglass_atimer = NULL;
- }
-
- if (hourglass_shown_p)
- hide_hourglass ();
-}
-
-
/* Timer function of hourglass_atimer. TIMER is equal to
hourglass_atimer.
@@ -4559,7 +4486,7 @@ cancel_hourglass ()
output_data.x structure to indicate that an hourglass cursor is
shown on the frames. */
-static void
+void
show_hourglass (timer)
struct atimer *timer;
{
@@ -4624,7 +4551,7 @@ show_hourglass (timer)
/* Hide the hourglass pointer on all frames, if it is currently
shown. */
-static void
+void
hide_hourglass ()
{
if (hourglass_shown_p)
@@ -5053,9 +4980,10 @@ compute_tip_xy (f, parms, dx, dy, width, height, root_x, root_y)
*root_y = XINT (top);
else if (*root_y + XINT (dy) <= 0)
*root_y = 0; /* Can happen for negative dy */
- else if (*root_y + XINT (dy) + height <= FRAME_X_DISPLAY_INFO (f)->height)
+ else if (*root_y + XINT (dy) + height
+ <= x_display_pixel_height (FRAME_X_DISPLAY_INFO (f)))
/* It fits below the pointer */
- *root_y += XINT (dy);
+ *root_y += XINT (dy);
else if (height + XINT (dy) <= *root_y)
/* It fits above the pointer. */
*root_y -= height + XINT (dy);
@@ -5067,7 +4995,8 @@ compute_tip_xy (f, parms, dx, dy, width, height, root_x, root_y)
*root_x = XINT (left);
else if (*root_x + XINT (dx) <= 0)
*root_x = 0; /* Can happen for negative dx */
- else if (*root_x + XINT (dx) + width <= FRAME_X_DISPLAY_INFO (f)->width)
+ else if (*root_x + XINT (dx) + width
+ <= x_display_pixel_width (FRAME_X_DISPLAY_INFO (f)))
/* It fits to the right of the pointer. */
*root_x += XINT (dx);
else if (width + XINT (dx) <= *root_x)
@@ -5905,15 +5834,6 @@ This variable takes effect when you create a new frame
or when you set the mouse color. */);
Vx_hourglass_pointer_shape = Qnil;
- DEFVAR_BOOL ("display-hourglass", &display_hourglass_p,
- doc: /* Non-zero means Emacs displays an hourglass pointer on window systems. */);
- display_hourglass_p = 1;
-
- DEFVAR_LISP ("hourglass-delay", &Vhourglass_delay,
- doc: /* *Seconds to wait before displaying an hourglass pointer.
-Value must be an integer or float. */);
- Vhourglass_delay = make_number (DEFAULT_HOURGLASS_DELAY);
-
#if 0 /* This doesn't really do anything. */
DEFVAR_LISP ("x-mode-pointer-shape", &Vx_mode_pointer_shape,
doc: /* The shape of the pointer when over the mode line.
@@ -6042,6 +5962,7 @@ the tool bar buttons. */);
defsubr (&Sx_display_visual_class);
defsubr (&Sx_display_backing_store);
defsubr (&Sx_display_save_under);
+ defsubr (&Sx_wm_set_size_hint);
defsubr (&Sx_create_frame);
defsubr (&Sx_open_connection);
defsubr (&Sx_close_connection);
@@ -6053,9 +5974,6 @@ the tool bar buttons. */);
/* Setting callback functions for fontset handler. */
check_window_system_func = check_x;
- hourglass_atimer = NULL;
- hourglass_shown_p = 0;
-
defsubr (&Sx_show_tip);
defsubr (&Sx_hide_tip);
tip_timer = Qnil;