(list_system_processes, system_process_attributes) [MSDOS]: Don't use the
[bpt/emacs.git] / src / xfns.c
index 2bf4afa..25ace42 100644 (file)
@@ -56,15 +56,11 @@ along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.  */
 #include <sys/types.h>
 #include <sys/stat.h>
 
-#ifndef VMS
 #if 1 /* Used to be #ifdef EMACS_BITMAP_FILES, but this should always work.  */
 #include "bitmaps/gray.xbm"
 #else
 #include <X11/bitmaps/gray>
 #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;
@@ -3071,10 +3063,13 @@ x_default_font_parameter (f, parms)
   if (! STRINGP (font))
     {
       char *names[]
-       = { "-adobe-courier-medium-r-*-*-*-120-*-*-*-*-iso8859-1",
-           "-misc-fixed-medium-r-normal-*-*-140-*-*-c-*-iso8859-1",
+       = {
+#ifdef HAVE_XFT
            /* This will find the normal Xft font.  */
-           "monospace-12",
+           "monospace-12",
+#endif
+           "-adobe-courier-medium-r-*-*-*-120-*-*-*-*-iso8859-1",
+           "-misc-fixed-medium-r-normal-*-*-140-*-*-c-*-iso8859-1",
            "-*-*-medium-r-normal-*-*-140-*-*-c-*-iso8859-1",
            /* This was formerly the first thing tried, but it finds
               too many fonts and takes too long.  */
@@ -3105,11 +3100,29 @@ 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.
 Return an Emacs frame object.
-ALIST is an alist of frame parameters.
+PARMS is an alist of frame parameters.
 If the parameters specify that the frame should not have a minibuffer,
 and do not specify a specific minibuffer window to use,
 then `default-minibuffer-frame' must be a frame whose minibuffer can
@@ -3144,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");
@@ -3665,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,
@@ -3679,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,
@@ -4469,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.
 
@@ -4556,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;
 {
@@ -4621,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)
@@ -4920,7 +4850,7 @@ x_create_tip_frame (dpyinfo, parms, text)
                       /* x, y, width, height */
                       0, 0, 1, 1,
                       /* Border.  */
-                      1,
+                      f->border_width,
                       CopyFromParent, InputOutput, CopyFromParent,
                       mask, &attrs);
     UNBLOCK_INPUT;
@@ -4982,7 +4912,7 @@ x_create_tip_frame (dpyinfo, parms, text)
 
     /* Set tip_frame here, so that */
     tip_frame = frame;
-    call1 (Qface_set_after_frame_default, 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),
@@ -5050,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);
@@ -5064,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)
@@ -5316,7 +5248,7 @@ Value is t if tooltip was open, nil otherwise.  */)
 
   if (FRAMEP (frame))
     {
-      Fdelete_frame (frame, Qnil);
+      delete_frame (frame, Qnil);
       deleted = Qt;
 
 #ifdef USE_LUCID
@@ -5902,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.
@@ -6039,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);
@@ -6050,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;
@@ -6068,7 +5989,7 @@ the tool bar buttons.  */);
   defsubr (&Sx_file_dialog);
 #endif
 
-#ifdef USE_GTK
+#if defined (USE_GTK) && defined (HAVE_FREETYPE)
   defsubr (&Sx_select_font);
 #endif
 }