changeset 107023:5e52c68c1f65

xfns.c (Fx_create_frame): Remove window size matching code from 2010-01-15. (x_get_current_desktop, x_get_desktop_workarea): Remove
author Jan D. <jan.h.d@swipnet.se>
date Thu, 28 Jan 2010 08:10:04 +0100
parents 1b8ee4a690a1
children 6eaa332dd1b5 e90c20914c19
files src/ChangeLog src/xfns.c
diffstat 2 files changed, 7 insertions(+), 146 deletions(-) [+]
line wrap: on
line diff
--- a/src/ChangeLog	Thu Jan 28 08:06:13 2010 +0100
+++ b/src/ChangeLog	Thu Jan 28 08:10:04 2010 +0100
@@ -1,3 +1,9 @@
+2010-01-28  Jan Djärv  <jan.h.d@swipnet.se>
+
+	* xfns.c (Fx_create_frame): Remove window size matching code from
+	2010-01-15.
+	(x_get_current_desktop, x_get_desktop_workarea): Remove
+
 2010-01-27  Jason Rumney  <jasonr@gnu.org>
 
 	* w32inevt.c (w32_kbd_patch_key): Save the unicode character.
--- a/src/xfns.c	Thu Jan 28 08:06:13 2010 +0100
+++ b/src/xfns.c	Thu Jan 28 08:10:04 2010 +0100
@@ -3145,91 +3145,6 @@
   return Qnil;
 }
 
-/* Return current desktop index for the display where frame F is.
-   If we can't find out the current desktop, return 0.  */
-
-static int
-x_get_current_desktop (f)
-     struct frame *f;
-{
-  Atom actual_type;
-  unsigned long actual_size, bytes_remaining;
-  int rc, actual_format;
-  struct x_display_info *dpyinfo = FRAME_X_DISPLAY_INFO (f);
-  long max_len = 10;
-  Display *dpy = FRAME_X_DISPLAY (f);
-  long *data = NULL;
-  int current_desktop;
-
-  BLOCK_INPUT;
-  x_catch_errors (dpy);
-  rc = XGetWindowProperty (dpy, dpyinfo->root_window,
-                           XInternAtom (dpy, "_NET_CURRENT_DESKTOP", False),
-                           0, max_len, False, XA_CARDINAL,
-                           &actual_type, &actual_format, &actual_size,
-                           &bytes_remaining, (unsigned char **)&data);
-
-  if (rc != Success || actual_type != XA_CARDINAL || x_had_errors_p (dpy)
-      || actual_size == 0 || actual_format != 32)
-    current_desktop = 0;
-  else
-    current_desktop = (int)*data;
-
-  if (data) XFree (data);
-  x_uncatch_errors ();
-  UNBLOCK_INPUT;
-  return current_desktop;
-}
-
-/* Return current size for DESKTOP_INDEX on the display where frame F is.
-   If we can't find out the size, return 0, otherwise 1.  */
-
-static int
-x_get_desktop_workarea (f, desktop_index, deskw, deskh)
-     struct frame *f;
-     int desktop_index;
-     int *deskw, *deskh;
-{
-  Atom actual_type;
-  unsigned long actual_size, bytes_remaining;
-  int rc, actual_format;
-  struct x_display_info *dpyinfo = FRAME_X_DISPLAY_INFO (f);
-  long max_len = 1000; /* This handles 250 desktops, who has that many?  */
-  Display *dpy = FRAME_X_DISPLAY (f);
-  long *data = NULL;
-  int retval;
-
-  BLOCK_INPUT;
-  x_catch_errors (dpy);
-  rc = XGetWindowProperty (dpy, dpyinfo->root_window,
-                           XInternAtom (dpy, "_NET_WORKAREA", False),
-                           0, max_len, False, XA_CARDINAL,
-                           &actual_type, &actual_format, &actual_size,
-                           &bytes_remaining, (unsigned char **)&data);
-
-  if (rc != Success || actual_type != XA_CARDINAL || x_had_errors_p (dpy)
-      || actual_size < 3 || actual_format != 32)
-    retval = 0;
-  else
-    {
-      int idx;
-      
-      if (actual_size == 4 /* Only one info for all desktops.  */
-          || desktop_index*4 > actual_size) /* destop_index out of range.  */
-        desktop_index = 0;
-
-      idx = desktop_index*4;
-      *deskw = data[idx+2] - data[idx];
-      *deskh = data[idx+3] - data[idx+1];
-      retval = 1;
-    }
-  
-  if (data) XFree (data);
-  x_uncatch_errors ();
-  UNBLOCK_INPUT;
-  return retval;
-}
-
 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.
@@ -3249,7 +3164,7 @@
   Lisp_Object name;
   int minibuffer_only = 0;
   long window_prompting = 0;
-  int width, height, deskw = -1, deskh = -1, current_desktop = -1;
+  int width, height;
   int count = SPECPDL_INDEX ();
   struct gcpro gcpro1, gcpro2, gcpro3, gcpro4;
   Lisp_Object display;
@@ -3517,66 +3432,6 @@
   /* Compute the size of the X window.  */
   window_prompting = x_figure_window_size (f, parms, 1);
 
-  /* Don't make height higher than display height unless the user asked
-     for it.  Try sizes 24 and 10 if current is too large.  */
-  height = FRAME_LINES (f);
-  tem = x_get_arg (dpyinfo, parms, Qheight, 0, 0, RES_TYPE_NUMBER);
-  if (EQ (tem, Qunbound))
-    {
-      int h = FRAME_LINES (f) + FRAME_TOOL_BAR_LINES (f)
-        + FRAME_MENU_BAR_LINES (f) + 2;
-      int ph = FRAME_TEXT_LINES_TO_PIXEL_HEIGHT (f, h);
-      int dph = DisplayHeight (FRAME_X_DISPLAY (f), FRAME_X_SCREEN_NUMBER (f));
-      static int tryheight[] = { 24, 10, 0 } ;
-      int i;
-
-      ph += (FRAME_EXTERNAL_TOOL_BAR (f) ? 32 : 0) /* Gtk toolbar size */
-        + (FRAME_EXTERNAL_MENU_BAR (f) ? 24 : 0); /* Arbitrary */
-
-      /* Some desktops have fixed menus above and/or panels below.  Try to
-         figure out the usable size we have for emacs.  */
-      current_desktop = x_get_current_desktop (f);
-      x_get_desktop_workarea (f, current_desktop, &deskw, &deskh);
-      if (deskh > 0 && deskh < dph) dph = deskh;
-      
-      /* Allow 40 pixels for manager decorations.  */
-      for (i = 0; ph+40 > dph && tryheight[i] != 0; ++i)
-        {
-          height = tryheight[i];
-          h = height + FRAME_TOOL_BAR_LINES (f) + FRAME_MENU_BAR_LINES (f) + 2;
-          ph = FRAME_TEXT_LINES_TO_PIXEL_HEIGHT (f, h)
-            + (FRAME_EXTERNAL_TOOL_BAR (f) ? 32 : 0)
-            + (FRAME_EXTERNAL_MENU_BAR (f) ? 24 : 0);
-        }
-    }
-
-  /* Don't make width wider than display width unless the user asked
-     for it.  */
-  width = FRAME_COLS (f);
-  tem = x_get_arg (dpyinfo, parms, Qwidth, 0, 0, RES_TYPE_NUMBER);
-  if (EQ (tem, Qunbound))
-    {
-      int pw = FRAME_TEXT_COLS_TO_PIXEL_WIDTH (f, FRAME_COLS (f));
-      int dpw = DisplayWidth (FRAME_X_DISPLAY (f), FRAME_X_SCREEN_NUMBER (f));
-      if (deskw == -1)
-        {
-          current_desktop = x_get_current_desktop (f);
-          x_get_desktop_workarea (f, current_desktop, &deskw, &deskh);
-        }
-      if (deskw > 0 && deskw < dpw) dpw = deskw;
-      
-      if (pw > dpw)
-        width = FRAME_PIXEL_WIDTH_TO_TEXT_COLS (f, dpw);
-    }
-
-  if (height != FRAME_LINES (f) || width != FRAME_COLS (f))
-    {
-      check_frame_size (f, &height, &width);
-      FRAME_LINES (f) = height;
-      SET_FRAME_COLS (f, width);
-    }
-  
-
   tem = x_get_arg (dpyinfo, parms, Qunsplittable, 0, 0, RES_TYPE_BOOLEAN);
   f->no_split = minibuffer_only || EQ (tem, Qt);