1
0
Fork 0

window: Make border_width private to X11

This commit is contained in:
Jasper St. Pierre 2014-05-20 09:19:10 -04:00
parent 5b7dff7a57
commit e215c07439
4 changed files with 28 additions and 13 deletions

View file

@ -432,8 +432,6 @@ struct _MetaWindow
/* Cached net_wm_icon_geometry */
MetaRectangle icon_geometry;
/* Requested geometry */
int border_width;
/* x/y/w/h here get filled with ConfigureRequest values */
XSizeHints size_hints;

View file

@ -828,8 +828,7 @@ _meta_window_shared_new (MetaDisplay *display,
window->rect.width = attrs->width;
window->rect.height = attrs->height;
/* And border width, size_hints are the "request" */
window->border_width = attrs->border_width;
/* size_hints are the "request" */
window->size_hints.x = attrs->x;
window->size_hints.y = attrs->y;
window->size_hints.width = attrs->width;

View file

@ -51,6 +51,9 @@ struct _MetaWindowX11Private
Atom type_atom;
/* Requested geometry */
int border_width;
MetaResizePopup *grab_resize_popup;
};

View file

@ -200,6 +200,8 @@ update_sm_hints (MetaWindow *window)
static void
send_configure_notify (MetaWindow *window)
{
MetaWindowX11 *window_x11 = META_WINDOW_X11 (window);
MetaWindowX11Private *priv = meta_window_x11_get_instance_private (window_x11);
XEvent event;
/* from twm */
@ -208,8 +210,8 @@ send_configure_notify (MetaWindow *window)
event.xconfigure.display = window->display->xdisplay;
event.xconfigure.event = window->xwindow;
event.xconfigure.window = window->xwindow;
event.xconfigure.x = window->rect.x - window->border_width;
event.xconfigure.y = window->rect.y - window->border_width;
event.xconfigure.x = window->rect.x - priv->border_width;
event.xconfigure.y = window->rect.y - priv->border_width;
if (window->frame)
{
if (window->withdrawn)
@ -233,7 +235,7 @@ send_configure_notify (MetaWindow *window)
}
event.xconfigure.width = window->rect.width;
event.xconfigure.height = window->rect.height;
event.xconfigure.border_width = window->border_width; /* requested not actual */
event.xconfigure.border_width = priv->border_width; /* requested not actual */
event.xconfigure.above = None; /* FIXME */
event.xconfigure.override_redirect = False;
@ -256,6 +258,8 @@ adjust_for_gravity (MetaWindow *window,
int gravity,
MetaRectangle *rect)
{
MetaWindowX11 *window_x11 = META_WINDOW_X11 (window);
MetaWindowX11Private *priv = meta_window_x11_get_instance_private (window_x11);
int ref_x, ref_y;
int bw;
int child_x, child_y;
@ -263,7 +267,7 @@ adjust_for_gravity (MetaWindow *window,
MetaFrameBorders borders;
if (coords_assume_border)
bw = window->border_width;
bw = priv->border_width;
else
bw = 0;
@ -550,6 +554,9 @@ meta_window_x11_manage (MetaWindow *window)
static void
meta_window_x11_unmanage (MetaWindow *window)
{
MetaWindowX11 *window_x11 = META_WINDOW_X11 (window);
MetaWindowX11Private *priv = meta_window_x11_get_instance_private (window_x11);
meta_error_trap_push (window->display);
meta_window_x11_destroy_sync_request_alarm (window);
@ -593,10 +600,10 @@ meta_window_x11_unmanage (MetaWindow *window)
meta_display_unregister_x_window (window->display, window->xwindow);
/* Put back anything we messed up */
if (window->border_width != 0)
if (priv->border_width != 0)
XSetWindowBorderWidth (window->display->xdisplay,
window->xwindow,
window->border_width);
priv->border_width);
/* No save set */
XRemoveFromSaveSet (window->display->xdisplay,
@ -1157,7 +1164,7 @@ meta_window_x11_move_resize_internal (MetaWindow *window,
if (is_configure_request &&
!(need_move_client || need_move_frame ||
need_resize_client || need_resize_frame ||
window->border_width != 0))
priv->border_width != 0))
need_configure_notify = TRUE;
/* We must send configure notify if we move but don't resize, since
@ -1218,7 +1225,7 @@ meta_window_x11_move_resize_internal (MetaWindow *window,
values.height = window->rect.height;
mask = 0;
if (is_configure_request && window->border_width != 0)
if (is_configure_request && priv->border_width != 0)
mask |= CWBorderWidth; /* must force to 0 */
if (need_move_client)
mask |= (CWX | CWY);
@ -2126,6 +2133,9 @@ gboolean
meta_window_x11_configure_request (MetaWindow *window,
XEvent *event)
{
MetaWindowX11 *window_x11 = META_WINDOW_X11 (window);
MetaWindowX11Private *priv = meta_window_x11_get_instance_private (window_x11);
/* Note that x, y is the corner of the window border,
* and width, height is the size of the window inside
* its border, but that we always deny border requests
@ -2133,7 +2143,7 @@ meta_window_x11_configure_request (MetaWindow *window,
* requested border here.
*/
if (event->xconfigurerequest.value_mask & CWBorderWidth)
window->border_width = event->xconfigurerequest.border_width;
priv->border_width = event->xconfigurerequest.border_width;
meta_window_move_resize_request(window,
event->xconfigurerequest.value_mask,
@ -3069,6 +3079,11 @@ meta_window_x11_new (MetaDisplay *display,
effect,
&attrs);
MetaWindowX11 *window_x11 = META_WINDOW_X11 (window);
MetaWindowX11Private *priv = meta_window_x11_get_instance_private (window_x11);
priv->border_width = attrs.border_width;
meta_window_grab_keys (window);
if (window->type != META_WINDOW_DOCK && !window->override_redirect)
{