Mercurial > emacs
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);