Remove trailing whitespace
This commit is contained in:
parent
730ed6f75f
commit
25a16c3379
@ -179,7 +179,7 @@ decode_display_parameters (const uchar *edid, MonitorInfo *info)
|
||||
else if (edid[0x16] == 0)
|
||||
{
|
||||
info->width_mm = -1;
|
||||
info->height_mm = -1;
|
||||
info->height_mm = -1;
|
||||
info->aspect_ratio = 100.0 / (edid[0x15] + 99);
|
||||
}
|
||||
else if (edid[0x15] == 0)
|
||||
@ -267,7 +267,7 @@ decode_color_characteristics (const uchar *edid, MonitorInfo *info)
|
||||
static int
|
||||
decode_established_timings (const uchar *edid, MonitorInfo *info)
|
||||
{
|
||||
static const Timing established[][8] =
|
||||
static const Timing established[][8] =
|
||||
{
|
||||
{
|
||||
{ 800, 600, 60 },
|
||||
|
@ -1,9 +1,9 @@
|
||||
/* edid.h
|
||||
*
|
||||
* Copyright 2007, 2008, Red Hat, Inc.
|
||||
*
|
||||
*
|
||||
* This file is part of the Gnome Library.
|
||||
*
|
||||
*
|
||||
* The Gnome Library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Library General Public License as
|
||||
* published by the Free Software Foundation; either version 2 of the
|
||||
@ -13,12 +13,12 @@
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Library General Public License for more details.
|
||||
*
|
||||
*
|
||||
* You should have received a copy of the GNU Library General Public
|
||||
* License along with the Gnome Library; see the file COPYING.LIB. If not,
|
||||
* write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
|
||||
* Boston, MA 02110-1301, USA.
|
||||
*
|
||||
*
|
||||
* Author: Soren Sandmann <sandmann@redhat.com>
|
||||
*/
|
||||
|
||||
@ -177,7 +177,7 @@ struct MonitorInfo
|
||||
DetailedTiming detailed_timings[4]; /* If monitor has a preferred
|
||||
* mode, it is the first one
|
||||
* (whether it has, is
|
||||
* determined by the
|
||||
* determined by the
|
||||
* preferred_timing_includes
|
||||
* bit.
|
||||
*/
|
||||
|
@ -53,7 +53,7 @@ struct _MetaCursorTracker {
|
||||
|
||||
MetaCursorReference *grab_cursor;
|
||||
|
||||
/* Wayland clients can set a NULL buffer as their cursor
|
||||
/* Wayland clients can set a NULL buffer as their cursor
|
||||
* explicitly, which means that we shouldn't display anything.
|
||||
* So, we can't simply store a NULL in window_cursor to
|
||||
* determine an unset window cursor; we need an extra boolean.
|
||||
|
@ -1,8 +1,8 @@
|
||||
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
|
||||
|
||||
/*
|
||||
/*
|
||||
* Copyright 2013 Red Hat, Inc.
|
||||
*
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 of the
|
||||
@ -12,7 +12,7 @@
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
|
@ -1,7 +1,7 @@
|
||||
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
|
||||
/*
|
||||
/*
|
||||
* Copyright (C) 2013 Red Hat Inc.
|
||||
*
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 of the
|
||||
@ -11,7 +11,7 @@
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
@ -1,8 +1,8 @@
|
||||
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
|
||||
|
||||
/*
|
||||
/*
|
||||
* Copyright 2013 Red Hat, Inc.
|
||||
*
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 of the
|
||||
@ -12,7 +12,7 @@
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
|
@ -1,8 +1,8 @@
|
||||
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
|
||||
|
||||
/*
|
||||
/*
|
||||
* Copyright 2013 Red Hat, Inc.
|
||||
*
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 of the
|
||||
@ -12,7 +12,7 @@
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
|
@ -1,6 +1,6 @@
|
||||
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
|
||||
|
||||
/*
|
||||
/*
|
||||
* Copyright (C) 2001, 2002 Havoc Pennington
|
||||
* Copyright (C) 2002, 2003 Red Hat Inc.
|
||||
* Some ICCCM manager selection code derived from fvwm2,
|
||||
@ -8,7 +8,7 @@
|
||||
* Copyright (C) 2003 Rob Adams
|
||||
* Copyright (C) 2004-2006 Elijah Newren
|
||||
* Copyright (C) 2013 Red Hat Inc.
|
||||
*
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 of the
|
||||
@ -18,7 +18,7 @@
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
@ -570,7 +570,7 @@ is_all_whitespace (const char *text,
|
||||
gsize text_len)
|
||||
{
|
||||
gsize i;
|
||||
|
||||
|
||||
for (i = 0; i < text_len; i++)
|
||||
if (!g_ascii_isspace (text[i]))
|
||||
return FALSE;
|
||||
|
@ -1,6 +1,6 @@
|
||||
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
|
||||
|
||||
/*
|
||||
/*
|
||||
* Copyright (C) 2001, 2002 Havoc Pennington
|
||||
* Copyright (C) 2002, 2003 Red Hat Inc.
|
||||
* Some ICCCM manager selection code derived from fvwm2,
|
||||
@ -8,7 +8,7 @@
|
||||
* Copyright (C) 2003 Rob Adams
|
||||
* Copyright (C) 2004-2006 Elijah Newren
|
||||
* Copyright (C) 2013 Red Hat Inc.
|
||||
*
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 of the
|
||||
@ -18,7 +18,7 @@
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
@ -852,7 +852,7 @@ meta_monitor_manager_handle_apply_configuration (MetaDBusDisplayConfig *skeleto
|
||||
/* If we were in progress of making a persistent change and we see a
|
||||
new request, it's likely that the old one failed in some way, so
|
||||
don't save it, but also don't queue for restoring it.
|
||||
*/
|
||||
*/
|
||||
if (manager->persistent_timeout_id && persistent)
|
||||
{
|
||||
g_source_remove (manager->persistent_timeout_id);
|
||||
|
@ -12,12 +12,12 @@
|
||||
* at MetaScreen instead.
|
||||
*/
|
||||
|
||||
/*
|
||||
/*
|
||||
* Copyright (C) 2001 Havoc Pennington
|
||||
* Copyright (C) 2003 Rob Adams
|
||||
* Copyright (C) 2004-2006 Elijah Newren
|
||||
* Copyright (C) 2013 Red Hat Inc.
|
||||
*
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 of the
|
||||
@ -27,7 +27,7 @@
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
@ -1,8 +1,8 @@
|
||||
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
|
||||
|
||||
/*
|
||||
/*
|
||||
* Copyright (C) 2013 Red Hat Inc.
|
||||
*
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 of the
|
||||
@ -12,7 +12,7 @@
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
|
@ -108,7 +108,7 @@ weston_launch_allowed(struct weston_launch *wl)
|
||||
}
|
||||
free(session);
|
||||
}
|
||||
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -117,7 +117,7 @@ setup_launcher_socket(struct weston_launch *wl)
|
||||
{
|
||||
if (socketpair(AF_LOCAL, SOCK_DGRAM, 0, wl->sock) < 0)
|
||||
error(1, errno, "socketpair failed");
|
||||
|
||||
|
||||
fcntl(wl->sock[0], F_SETFD, O_CLOEXEC);
|
||||
|
||||
return 0;
|
||||
@ -640,7 +640,7 @@ main(int argc, char *argv[])
|
||||
{ "verbose", no_argument, NULL, 'v' },
|
||||
{ "help", no_argument, NULL, 'h' },
|
||||
{ 0, 0, NULL, 0 }
|
||||
};
|
||||
};
|
||||
|
||||
memset(&wl, 0, sizeof wl);
|
||||
wl.drm_fd = -1;
|
||||
|
@ -1,6 +1,6 @@
|
||||
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
|
||||
|
||||
/*
|
||||
/*
|
||||
* Copyright (C) 2001, 2002 Havoc Pennington
|
||||
* Copyright (C) 2002, 2003 Red Hat Inc.
|
||||
* Some ICCCM manager selection code derived from fvwm2,
|
||||
@ -8,7 +8,7 @@
|
||||
* Copyright (C) 2003 Rob Adams
|
||||
* Copyright (C) 2004-2006 Elijah Newren
|
||||
* Copyright (C) 2013 Red Hat Inc.
|
||||
*
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 of the
|
||||
@ -18,7 +18,7 @@
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
@ -272,7 +272,7 @@ get_edid_property (Display *dpy,
|
||||
}
|
||||
|
||||
XFree (prop);
|
||||
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
|
@ -555,10 +555,10 @@ meta_compositor_manage (MetaCompositor *compositor)
|
||||
|
||||
meta_empty_stage_input_region (screen);
|
||||
|
||||
/* Make sure there isn't any left-over output shape on the
|
||||
/* Make sure there isn't any left-over output shape on the
|
||||
* overlay window by setting the whole screen to be an
|
||||
* output region.
|
||||
*
|
||||
*
|
||||
* Note: there doesn't seem to be any real chance of that
|
||||
* because the X server will destroy the overlay window
|
||||
* when the last client using it exits.
|
||||
@ -746,9 +746,9 @@ meta_compositor_window_surface_changed (MetaCompositor *compositor,
|
||||
|
||||
/**
|
||||
* meta_compositor_process_event: (skip)
|
||||
* @compositor:
|
||||
* @event:
|
||||
* @window:
|
||||
* @compositor:
|
||||
* @event:
|
||||
* @window:
|
||||
*
|
||||
*/
|
||||
gboolean
|
||||
|
@ -121,7 +121,7 @@ meta_region_builder_finish (MetaRegionBuilder *builder)
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* MetaRegionIterator */
|
||||
|
||||
@ -171,7 +171,7 @@ meta_region_iterator_next (MetaRegionIterator *iter)
|
||||
iter->line_end = TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
add_expanded_rect (MetaRegionBuilder *builder,
|
||||
int x,
|
||||
|
@ -2,10 +2,10 @@
|
||||
|
||||
/* Mutter visual bell */
|
||||
|
||||
/*
|
||||
/*
|
||||
* Copyright (C) 2002 Sun Microsystems Inc.
|
||||
* Copyright (C) 2005, 2006 Elijah Newren
|
||||
*
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 of the
|
||||
@ -15,7 +15,7 @@
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
@ -71,7 +71,7 @@
|
||||
*/
|
||||
#ifdef HAVE_XKB
|
||||
static void
|
||||
bell_flash_fullscreen (MetaDisplay *display,
|
||||
bell_flash_fullscreen (MetaDisplay *display,
|
||||
XkbAnyEvent *xkb_ev)
|
||||
{
|
||||
g_assert (xkb_ev->xkb_type == XkbBellNotify);
|
||||
@ -96,7 +96,7 @@ bell_flash_fullscreen (MetaDisplay *display,
|
||||
* Bug: This is the parallel to bell_flash_window_frame(), so it should
|
||||
* really be called meta_bell_unflash_window_frame().
|
||||
*/
|
||||
static gboolean
|
||||
static gboolean
|
||||
bell_unflash_frame (gpointer data)
|
||||
{
|
||||
MetaFrame *frame = (MetaFrame *) data;
|
||||
@ -143,12 +143,12 @@ bell_flash_window_frame (MetaWindow *window)
|
||||
* flashes the screen.
|
||||
*/
|
||||
static void
|
||||
bell_flash_frame (MetaDisplay *display,
|
||||
bell_flash_frame (MetaDisplay *display,
|
||||
XkbAnyEvent *xkb_ev)
|
||||
{
|
||||
XkbBellNotifyEvent *xkb_bell_event = (XkbBellNotifyEvent *) xkb_ev;
|
||||
MetaWindow *window;
|
||||
|
||||
|
||||
g_assert (xkb_ev->xkb_type == XkbBellNotify);
|
||||
window = meta_display_lookup_x_window (display, xkb_bell_event->window);
|
||||
if (!window && (display->focus_window))
|
||||
@ -180,10 +180,10 @@ bell_flash_frame (MetaDisplay *display,
|
||||
* Bug: This should be merged with meta_bell_notify().
|
||||
*/
|
||||
static void
|
||||
bell_visual_notify (MetaDisplay *display,
|
||||
bell_visual_notify (MetaDisplay *display,
|
||||
XkbAnyEvent *xkb_ev)
|
||||
{
|
||||
switch (meta_prefs_get_visual_bell_type ())
|
||||
switch (meta_prefs_get_visual_bell_type ())
|
||||
{
|
||||
case G_DESKTOP_VISUAL_BELL_FULLSCREEN_FLASH:
|
||||
bell_flash_fullscreen (display, xkb_ev);
|
||||
@ -195,7 +195,7 @@ bell_visual_notify (MetaDisplay *display,
|
||||
}
|
||||
|
||||
void
|
||||
meta_bell_notify (MetaDisplay *display,
|
||||
meta_bell_notify (MetaDisplay *display,
|
||||
XkbAnyEvent *xkb_ev)
|
||||
{
|
||||
/* flash something */
|
||||
@ -271,19 +271,19 @@ meta_bell_init (MetaDisplay *display)
|
||||
#ifdef HAVE_XKB
|
||||
int xkb_base_error_type, xkb_opcode;
|
||||
|
||||
if (!XkbQueryExtension (display->xdisplay, &xkb_opcode,
|
||||
&display->xkb_base_event_type,
|
||||
&xkb_base_error_type,
|
||||
if (!XkbQueryExtension (display->xdisplay, &xkb_opcode,
|
||||
&display->xkb_base_event_type,
|
||||
&xkb_base_error_type,
|
||||
NULL, NULL))
|
||||
{
|
||||
display->xkb_base_event_type = -1;
|
||||
g_message ("could not find XKB extension.");
|
||||
return FALSE;
|
||||
}
|
||||
else
|
||||
else
|
||||
{
|
||||
unsigned int mask = XkbBellNotifyMask;
|
||||
gboolean visual_bell_auto_reset = FALSE;
|
||||
gboolean visual_bell_auto_reset = FALSE;
|
||||
/* TRUE if and when non-broken version is available */
|
||||
XkbSelectEvents (display->xdisplay,
|
||||
XkbUseCoreKbd,
|
||||
@ -326,6 +326,6 @@ meta_bell_shutdown (MetaDisplay *display)
|
||||
void
|
||||
meta_bell_notify_frame_destroy (MetaFrame *frame)
|
||||
{
|
||||
if (frame->is_flashing)
|
||||
if (frame->is_flashing)
|
||||
g_source_remove_by_funcs_user_data (&g_timeout_funcs, frame);
|
||||
}
|
||||
|
@ -1,8 +1,8 @@
|
||||
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
|
||||
|
||||
/*
|
||||
/*
|
||||
* Copyright (C) 2002 Sun Microsystems Inc.
|
||||
*
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 of the
|
||||
@ -12,7 +12,7 @@
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
@ -28,7 +28,7 @@
|
||||
/**
|
||||
* meta_bell_notify:
|
||||
* @display: The display the bell event came in on
|
||||
* @xkb_ev: The bell event we just received
|
||||
* @xkb_ev: The bell event we just received
|
||||
*
|
||||
* Gives the user some kind of visual bell; in fact, this is our response
|
||||
* to any kind of bell request, but we set it up so that we only get
|
||||
|
@ -2,9 +2,9 @@
|
||||
|
||||
/* Simple box operations */
|
||||
|
||||
/*
|
||||
/*
|
||||
* Copyright (C) 2005, 2006 Elijah Newren
|
||||
*
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 of the
|
||||
@ -14,7 +14,7 @@
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
@ -43,7 +43,7 @@ typedef enum
|
||||
* region_to_string: (RECT_LENGTH+strlen(separator_string)) *
|
||||
* g_list_length (region)
|
||||
* edge_to_string: EDGE_LENGTH
|
||||
* edge_list_to_...: (EDGE_LENGTH+strlen(separator_string)) *
|
||||
* edge_list_to_...: (EDGE_LENGTH+strlen(separator_string)) *
|
||||
* g_list_length (edge_list)
|
||||
*/
|
||||
#define RECT_LENGTH 27
|
||||
@ -181,7 +181,7 @@ void meta_rectangle_find_linepoint_closest_to_point (double x1, double y1,
|
||||
/* Return whether an edge overlaps or is adjacent to the rectangle in the
|
||||
* nonzero-width dimension of the edge.
|
||||
*/
|
||||
gboolean meta_rectangle_edge_aligns (const MetaRectangle *rect,
|
||||
gboolean meta_rectangle_edge_aligns (const MetaRectangle *rect,
|
||||
const MetaEdge *edge);
|
||||
|
||||
/* Compare two edges, so that sorting functions can put a list of edges in
|
||||
|
@ -6,14 +6,14 @@
|
||||
* @Short_Description: Simple box operations
|
||||
*/
|
||||
|
||||
/*
|
||||
/*
|
||||
* Copyright (C) 2005, 2006 Elijah Newren
|
||||
* [meta_rectangle_intersect() is copyright the GTK+ Team according to Havoc,
|
||||
* see gdkrectangle.c. As far as Havoc knows, he probably wrote
|
||||
* meta_rectangle_equal(), and I'm guessing it's (C) Red Hat. So...]
|
||||
* Copyright (C) 1995-2000 GTK+ Team
|
||||
* Copyright (C) 2002 Red Hat, Inc.
|
||||
*
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 of the
|
||||
@ -23,7 +23,7 @@
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
@ -69,7 +69,7 @@ meta_rectangle_to_string (const MetaRectangle *rect,
|
||||
* Should be more than enough space. Note that of this space, the
|
||||
* trailing \0 will be overwritten for all but the last rectangle.
|
||||
*/
|
||||
g_snprintf (output, RECT_LENGTH, "%d,%d +%d,%d",
|
||||
g_snprintf (output, RECT_LENGTH, "%d,%d +%d,%d",
|
||||
rect->x, rect->y, rect->width, rect->height);
|
||||
|
||||
return output;
|
||||
@ -96,7 +96,7 @@ meta_rectangle_region_to_string (GList *region,
|
||||
while (tmp)
|
||||
{
|
||||
MetaRectangle *rect = tmp->data;
|
||||
g_snprintf (rect_string, RECT_LENGTH, "[%d,%d +%d,%d]",
|
||||
g_snprintf (rect_string, RECT_LENGTH, "[%d,%d +%d,%d]",
|
||||
rect->x, rect->y, rect->width, rect->height);
|
||||
cur = g_stpcpy (cur, rect_string);
|
||||
tmp = tmp->next;
|
||||
@ -118,7 +118,7 @@ meta_rectangle_edge_to_string (const MetaEdge *edge,
|
||||
* Plus 2 for parenthesis, 4 for 2 more numbers, 2 more commas, and
|
||||
* 2 more spaces, for a total of 10 more.
|
||||
*/
|
||||
g_snprintf (output, EDGE_LENGTH, "[%d,%d +%d,%d], %2d, %2d",
|
||||
g_snprintf (output, EDGE_LENGTH, "[%d,%d +%d,%d], %2d, %2d",
|
||||
edge->rect.x, edge->rect.y, edge->rect.width, edge->rect.height,
|
||||
edge->side_type, edge->edge_type);
|
||||
|
||||
@ -150,7 +150,7 @@ meta_rectangle_edge_list_to_string (GList *edge_list,
|
||||
{
|
||||
MetaEdge *edge = tmp->data;
|
||||
MetaRectangle *rect = &edge->rect;
|
||||
g_snprintf (rect_string, EDGE_LENGTH, "([%d,%d +%d,%d], %2d, %2d)",
|
||||
g_snprintf (rect_string, EDGE_LENGTH, "([%d,%d +%d,%d], %2d, %2d)",
|
||||
rect->x, rect->y, rect->width, rect->height,
|
||||
edge->side_type, edge->edge_type);
|
||||
cur = g_stpcpy (cur, rect_string);
|
||||
@ -210,7 +210,7 @@ meta_rectangle_intersect (const MetaRectangle *src1,
|
||||
dest_y = MAX (src1->y, src2->y);
|
||||
dest_w = MIN (src1->x + src1->width, src2->x + src2->width) - dest_x;
|
||||
dest_h = MIN (src1->y + src1->height, src2->y + src2->height) - dest_y;
|
||||
|
||||
|
||||
if (dest_w > 0 && dest_h > 0)
|
||||
{
|
||||
dest->x = dest_x;
|
||||
@ -320,7 +320,7 @@ gboolean
|
||||
meta_rectangle_contains_rect (const MetaRectangle *outer_rect,
|
||||
const MetaRectangle *inner_rect)
|
||||
{
|
||||
return
|
||||
return
|
||||
inner_rect->x >= outer_rect->x &&
|
||||
inner_rect->y >= outer_rect->y &&
|
||||
inner_rect->x + inner_rect->width <= outer_rect->x + outer_rect->width &&
|
||||
@ -339,7 +339,7 @@ meta_rectangle_resize_with_gravity (const MetaRectangle *old_rect,
|
||||
* boxes.h has a good comment, but I'm not sure if the below info is also
|
||||
* helpful on top of that (or whether it has superfluous info).
|
||||
*/
|
||||
|
||||
|
||||
/* These formulas may look overly simplistic at first but you can work
|
||||
* everything out with a left_frame_with, right_frame_width,
|
||||
* border_width, and old and new client area widths (instead of old total
|
||||
@ -389,7 +389,7 @@ meta_rectangle_resize_with_gravity (const MetaRectangle *old_rect,
|
||||
break;
|
||||
}
|
||||
rect->width = new_width;
|
||||
|
||||
|
||||
/* Next, the y direction */
|
||||
switch (gravity)
|
||||
{
|
||||
@ -629,7 +629,7 @@ meta_rectangle_get_minimal_spanning_set_for_region (
|
||||
|
||||
for (strut_iter = all_struts; strut_iter; strut_iter = strut_iter->next)
|
||||
{
|
||||
GList *rect_iter;
|
||||
GList *rect_iter;
|
||||
MetaRectangle *strut_rect = &((MetaStrut*)strut_iter->data)->rect;
|
||||
|
||||
tmp_list = ret;
|
||||
@ -764,7 +764,7 @@ meta_rectangle_expand_to_avoiding_struts (MetaRectangle *rect,
|
||||
*/
|
||||
g_assert ((direction == META_DIRECTION_HORIZONTAL) ^
|
||||
(direction == META_DIRECTION_VERTICAL ));
|
||||
|
||||
|
||||
if (direction == META_DIRECTION_HORIZONTAL)
|
||||
{
|
||||
rect->x = expand_to->x;
|
||||
@ -776,12 +776,12 @@ meta_rectangle_expand_to_avoiding_struts (MetaRectangle *rect,
|
||||
rect->height = expand_to->height;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* Run over all struts */
|
||||
for (strut_iter = all_struts; strut_iter; strut_iter = strut_iter->next)
|
||||
{
|
||||
MetaStrut *strut = (MetaStrut*) strut_iter->data;
|
||||
|
||||
|
||||
/* Skip struts that don't overlap */
|
||||
if (!meta_rectangle_overlap (&strut->rect, rect))
|
||||
continue;
|
||||
@ -822,7 +822,7 @@ meta_rectangle_expand_to_avoiding_struts (MetaRectangle *rect,
|
||||
void
|
||||
meta_rectangle_free_list_and_elements (GList *filled_list)
|
||||
{
|
||||
g_list_foreach (filled_list,
|
||||
g_list_foreach (filled_list,
|
||||
(void (*)(gpointer,gpointer))&g_free, /* ew, for ugly */
|
||||
NULL);
|
||||
g_list_free (filled_list);
|
||||
@ -900,20 +900,20 @@ meta_rectangle_clamp_to_fit_into_region (const GList *spanning_rects,
|
||||
{
|
||||
MetaRectangle *compare_rect = temp->data;
|
||||
int maximal_overlap_amount_for_compare;
|
||||
|
||||
|
||||
/* If x is fixed and the entire width of rect doesn't fit in compare,
|
||||
* skip this rectangle.
|
||||
*/
|
||||
if ((fixed_directions & FIXED_DIRECTION_X) &&
|
||||
(compare_rect->x > rect->x ||
|
||||
(compare_rect->x > rect->x ||
|
||||
compare_rect->x + compare_rect->width < rect->x + rect->width))
|
||||
continue;
|
||||
|
||||
|
||||
/* If y is fixed and the entire height of rect doesn't fit in compare,
|
||||
* skip this rectangle.
|
||||
*/
|
||||
if ((fixed_directions & FIXED_DIRECTION_Y) &&
|
||||
(compare_rect->y > rect->y ||
|
||||
(compare_rect->y > rect->y ||
|
||||
compare_rect->y + compare_rect->height < rect->y + rect->height))
|
||||
continue;
|
||||
|
||||
@ -970,20 +970,20 @@ meta_rectangle_clip_to_region (const GList *spanning_rects,
|
||||
MetaRectangle *compare_rect = temp->data;
|
||||
MetaRectangle overlap;
|
||||
int maximal_overlap_amount_for_compare;
|
||||
|
||||
|
||||
/* If x is fixed and the entire width of rect doesn't fit in compare,
|
||||
* skip the rectangle.
|
||||
*/
|
||||
if ((fixed_directions & FIXED_DIRECTION_X) &&
|
||||
(compare_rect->x > rect->x ||
|
||||
(compare_rect->x > rect->x ||
|
||||
compare_rect->x + compare_rect->width < rect->x + rect->width))
|
||||
continue;
|
||||
|
||||
|
||||
/* If y is fixed and the entire height of rect doesn't fit in compare,
|
||||
* skip the rectangle.
|
||||
*/
|
||||
if ((fixed_directions & FIXED_DIRECTION_Y) &&
|
||||
(compare_rect->y > rect->y ||
|
||||
(compare_rect->y > rect->y ||
|
||||
compare_rect->y + compare_rect->height < rect->y + rect->height))
|
||||
continue;
|
||||
|
||||
@ -1043,26 +1043,26 @@ meta_rectangle_shove_into_region (const GList *spanning_rects,
|
||||
/* First, find best rectangle from spanning_rects to which we will shove
|
||||
* rect into.
|
||||
*/
|
||||
|
||||
|
||||
for (temp = spanning_rects; temp; temp = temp->next)
|
||||
{
|
||||
MetaRectangle *compare_rect = temp->data;
|
||||
int maximal_overlap_amount_for_compare;
|
||||
int dist_to_compare;
|
||||
|
||||
|
||||
/* If x is fixed and the entire width of rect doesn't fit in compare,
|
||||
* skip this rectangle.
|
||||
*/
|
||||
if ((fixed_directions & FIXED_DIRECTION_X) &&
|
||||
(compare_rect->x > rect->x ||
|
||||
(compare_rect->x > rect->x ||
|
||||
compare_rect->x + compare_rect->width < rect->x + rect->width))
|
||||
continue;
|
||||
|
||||
|
||||
/* If y is fixed and the entire height of rect doesn't fit in compare,
|
||||
* skip this rectangle.
|
||||
*/
|
||||
if ((fixed_directions & FIXED_DIRECTION_Y) &&
|
||||
(compare_rect->y > rect->y ||
|
||||
(compare_rect->y > rect->y ||
|
||||
compare_rect->y + compare_rect->height < rect->y + rect->height))
|
||||
continue;
|
||||
|
||||
@ -1218,7 +1218,7 @@ meta_rectangle_edge_aligns (const MetaRectangle *rect, const MetaEdge *edge)
|
||||
}
|
||||
|
||||
static GList*
|
||||
get_rect_minus_overlap (const GList *rect_in_list,
|
||||
get_rect_minus_overlap (const GList *rect_in_list,
|
||||
MetaRectangle *overlap)
|
||||
{
|
||||
MetaRectangle *temp;
|
||||
@ -1263,7 +1263,7 @@ get_rect_minus_overlap (const GList *rect_in_list,
|
||||
}
|
||||
|
||||
static GList*
|
||||
replace_rect_with_list (GList *old_element,
|
||||
replace_rect_with_list (GList *old_element,
|
||||
GList *new_list)
|
||||
{
|
||||
GList *ret;
|
||||
@ -1475,7 +1475,7 @@ rectangle_and_edge_intersection (const MetaRectangle *rect,
|
||||
overlap->edge_type = -1;
|
||||
overlap->side_type = -1;
|
||||
|
||||
/* Figure out what the intersection is */
|
||||
/* Figure out what the intersection is */
|
||||
result->x = MAX (rect->x, rect2->x);
|
||||
result->y = MAX (rect->y, rect2->y);
|
||||
result->width = MIN (BOX_RIGHT (*rect), BOX_RIGHT (*rect2)) - result->x;
|
||||
@ -1546,7 +1546,7 @@ rectangle_and_edge_intersection (const MetaRectangle *rect,
|
||||
* TOP<->BOTTOM).
|
||||
*/
|
||||
static GList*
|
||||
add_edges (GList *cur_edges,
|
||||
add_edges (GList *cur_edges,
|
||||
const MetaRectangle *rect,
|
||||
gboolean rect_is_internal)
|
||||
{
|
||||
@ -1560,23 +1560,23 @@ add_edges (GList *cur_edges,
|
||||
switch (i)
|
||||
{
|
||||
case 0:
|
||||
temp_edge->side_type =
|
||||
temp_edge->side_type =
|
||||
rect_is_internal ? META_SIDE_LEFT : META_SIDE_RIGHT;
|
||||
temp_edge->rect.width = 0;
|
||||
break;
|
||||
case 1:
|
||||
temp_edge->side_type =
|
||||
temp_edge->side_type =
|
||||
rect_is_internal ? META_SIDE_RIGHT : META_SIDE_LEFT;
|
||||
temp_edge->rect.x += temp_edge->rect.width;
|
||||
temp_edge->rect.width = 0;
|
||||
break;
|
||||
case 2:
|
||||
temp_edge->side_type =
|
||||
temp_edge->side_type =
|
||||
rect_is_internal ? META_SIDE_TOP : META_SIDE_BOTTOM;
|
||||
temp_edge->rect.height = 0;
|
||||
break;
|
||||
case 3:
|
||||
temp_edge->side_type =
|
||||
temp_edge->side_type =
|
||||
rect_is_internal ? META_SIDE_BOTTOM : META_SIDE_TOP;
|
||||
temp_edge->rect.y += temp_edge->rect.height;
|
||||
temp_edge->rect.height = 0;
|
||||
@ -1593,8 +1593,8 @@ add_edges (GList *cur_edges,
|
||||
* edges to cur_list. Return cur_list when finished.
|
||||
*/
|
||||
static GList*
|
||||
split_edge (GList *cur_list,
|
||||
const MetaEdge *old_edge,
|
||||
split_edge (GList *cur_list,
|
||||
const MetaEdge *old_edge,
|
||||
const MetaEdge *remove)
|
||||
{
|
||||
MetaEdge *temp_edge;
|
||||
@ -1653,7 +1653,7 @@ split_edge (GList *cur_list,
|
||||
* if and how rect and edge intersect.
|
||||
*/
|
||||
static void
|
||||
fix_up_edges (MetaRectangle *rect, MetaEdge *edge,
|
||||
fix_up_edges (MetaRectangle *rect, MetaEdge *edge,
|
||||
GList **strut_edges, GList **edge_splits,
|
||||
gboolean *edge_needs_removal)
|
||||
{
|
||||
@ -1777,7 +1777,7 @@ meta_rectangle_find_onscreen_edges (const MetaRectangle *basic_rect,
|
||||
{
|
||||
GList *ret;
|
||||
GList *fixed_strut_rects;
|
||||
GList *edge_iter;
|
||||
GList *edge_iter;
|
||||
const GList *strut_rect_iter;
|
||||
|
||||
/* The algorithm is basically as follows:
|
||||
@ -1817,7 +1817,7 @@ meta_rectangle_find_onscreen_edges (const MetaRectangle *basic_rect,
|
||||
GList *splits_of_cur_edge = NULL;
|
||||
gboolean edge_needs_removal = FALSE;
|
||||
|
||||
fix_up_edges (strut_rect, cur_edge,
|
||||
fix_up_edges (strut_rect, cur_edge,
|
||||
&new_strut_edges, &splits_of_cur_edge,
|
||||
&edge_needs_removal);
|
||||
|
||||
@ -1981,7 +1981,7 @@ meta_rectangle_find_nonintersected_monitor_edges (
|
||||
for (; all_struts; all_struts = all_struts->next)
|
||||
temp_rects = g_slist_prepend (temp_rects,
|
||||
&((MetaStrut*)all_struts->data)->rect);
|
||||
ret = meta_rectangle_remove_intersections_with_boxes_from_edges (ret,
|
||||
ret = meta_rectangle_remove_intersections_with_boxes_from_edges (ret,
|
||||
temp_rects);
|
||||
g_slist_free (temp_rects);
|
||||
|
||||
|
@ -42,7 +42,7 @@
|
||||
// "constrain_whatever".
|
||||
// 3) Add your function to the all_constraints and all_constraint_names
|
||||
// arrays (the latter of which is for debugging purposes)
|
||||
//
|
||||
//
|
||||
// An example constraint function, constrain_whatever:
|
||||
//
|
||||
// /* constrain_whatever does the following:
|
||||
@ -246,7 +246,7 @@ do_all_constraints (MetaWindow *window,
|
||||
/* Log how the constraint modified the position */
|
||||
meta_topic (META_DEBUG_GEOMETRY,
|
||||
"info->current is %d,%d +%d,%d after %s\n",
|
||||
info->current.x, info->current.y,
|
||||
info->current.x, info->current.y,
|
||||
info->current.width, info->current.height,
|
||||
constraint->name);
|
||||
}
|
||||
@ -282,7 +282,7 @@ meta_window_constrain (MetaWindow *window,
|
||||
new->x, new->y, new->width, new->height);
|
||||
|
||||
setup_constraint_info (&info,
|
||||
window,
|
||||
window,
|
||||
flags,
|
||||
resize_gravity,
|
||||
orig,
|
||||
@ -295,7 +295,7 @@ meta_window_constrain (MetaWindow *window,
|
||||
/* Individually enforce all the high-enough priority constraints */
|
||||
do_all_constraints (window, &info, priority, !check_only);
|
||||
|
||||
/* Check if all high-enough priority constraints are simultaneously
|
||||
/* Check if all high-enough priority constraints are simultaneously
|
||||
* satisfied
|
||||
*/
|
||||
satisfied = do_all_constraints (window, &info, priority, check_only);
|
||||
@ -398,10 +398,10 @@ setup_constraint_info (ConstraintInfo *info,
|
||||
}
|
||||
|
||||
cur_workspace = window->screen->active_workspace;
|
||||
info->usable_screen_region =
|
||||
info->usable_screen_region =
|
||||
meta_workspace_get_onscreen_region (cur_workspace);
|
||||
info->usable_monitor_region =
|
||||
meta_workspace_get_onmonitor_region (cur_workspace,
|
||||
info->usable_monitor_region =
|
||||
meta_workspace_get_onmonitor_region (cur_workspace,
|
||||
monitor_info->number);
|
||||
|
||||
/* Workaround braindead legacy apps that don't know how to
|
||||
@ -441,7 +441,7 @@ setup_constraint_info (ConstraintInfo *info,
|
||||
" work_area_monitor: %d,%d +%d,%d\n"
|
||||
" entire_monitor : %d,%d +%d,%d\n",
|
||||
info->orig.x, info->orig.y, info->orig.width, info->orig.height,
|
||||
info->current.x, info->current.y,
|
||||
info->current.x, info->current.y,
|
||||
info->current.width, info->current.height,
|
||||
(info->action_type == ACTION_MOVE) ? "Move" :
|
||||
(info->action_type == ACTION_RESIZE) ? "Resize" :
|
||||
@ -454,7 +454,7 @@ setup_constraint_info (ConstraintInfo *info,
|
||||
(info->fixed_directions == FIXED_DIRECTION_Y) ? "Y fixed" :
|
||||
"Freakin' Invalid Stupid",
|
||||
info->work_area_monitor.x, info->work_area_monitor.y,
|
||||
info->work_area_monitor.width,
|
||||
info->work_area_monitor.width,
|
||||
info->work_area_monitor.height,
|
||||
info->entire_monitor.x, info->entire_monitor.y,
|
||||
info->entire_monitor.width, info->entire_monitor.height);
|
||||
@ -502,8 +502,8 @@ place_window_if_needed(MetaWindow *window,
|
||||
monitor_info->number,
|
||||
&info->work_area_monitor);
|
||||
cur_workspace = window->screen->active_workspace;
|
||||
info->usable_monitor_region =
|
||||
meta_workspace_get_onmonitor_region (cur_workspace,
|
||||
info->usable_monitor_region =
|
||||
meta_workspace_get_onmonitor_region (cur_workspace,
|
||||
monitor_info->number);
|
||||
|
||||
meta_window_frame_rect_to_client_rect (window, &placed_rect, &placed_rect);
|
||||
@ -546,7 +546,7 @@ place_window_if_needed(MetaWindow *window,
|
||||
|
||||
if (window->maximize_horizontally_after_placement ||
|
||||
window->maximize_vertically_after_placement)
|
||||
meta_window_maximize_internal (window,
|
||||
meta_window_maximize_internal (window,
|
||||
(window->maximize_horizontally_after_placement ?
|
||||
META_MAXIMIZE_HORIZONTAL : 0 ) |
|
||||
(window->maximize_vertically_after_placement ?
|
||||
@ -631,7 +631,7 @@ update_onscreen_requirements (MetaWindow *window,
|
||||
if (old ^ window->require_on_single_monitor)
|
||||
meta_topic (META_DEBUG_GEOMETRY,
|
||||
"require_on_single_monitor for %s toggled to %s\n",
|
||||
window->desc,
|
||||
window->desc,
|
||||
window->require_on_single_monitor ? "TRUE" : "FALSE");
|
||||
|
||||
/* Update whether we want future constraint runs to require the
|
||||
@ -910,7 +910,7 @@ constrain_size_increments (MetaWindow *window,
|
||||
return TRUE;
|
||||
|
||||
/* Determine whether constraint applies; exit if it doesn't */
|
||||
if (META_WINDOW_MAXIMIZED (window) || window->fullscreen ||
|
||||
if (META_WINDOW_MAXIMIZED (window) || window->fullscreen ||
|
||||
META_WINDOW_TILED_SIDE_BY_SIDE (window) ||
|
||||
info->action_type == ACTION_MOVE)
|
||||
return TRUE;
|
||||
@ -928,7 +928,7 @@ constrain_size_increments (MetaWindow *window,
|
||||
if (window->maximized_vertically)
|
||||
extra_height *= 0;
|
||||
/* constraint is satisfied iff there is no extra height or width */
|
||||
constraint_already_satisfied =
|
||||
constraint_already_satisfied =
|
||||
(extra_height == 0 && extra_width == 0);
|
||||
|
||||
if (check_only || constraint_already_satisfied)
|
||||
@ -954,10 +954,10 @@ constrain_size_increments (MetaWindow *window,
|
||||
start_rect = &info->current;
|
||||
else
|
||||
start_rect = &info->orig;
|
||||
|
||||
|
||||
/* Resize to the new size */
|
||||
meta_rectangle_resize_with_gravity (start_rect,
|
||||
&info->current,
|
||||
&info->current,
|
||||
info->resize_gravity,
|
||||
new_width,
|
||||
new_height);
|
||||
@ -1002,7 +1002,7 @@ constrain_size_limits (MetaWindow *window,
|
||||
/*** Enforce constraint ***/
|
||||
new_width = CLAMP (info->current.width, min_size.width, max_size.width);
|
||||
new_height = CLAMP (info->current.height, min_size.height, max_size.height);
|
||||
|
||||
|
||||
/* Figure out what original rect to pass to meta_rectangle_resize_with_gravity
|
||||
* See bug 448183
|
||||
*/
|
||||
@ -1010,9 +1010,9 @@ constrain_size_limits (MetaWindow *window,
|
||||
start_rect = &info->current;
|
||||
else
|
||||
start_rect = &info->orig;
|
||||
|
||||
|
||||
meta_rectangle_resize_with_gravity (start_rect,
|
||||
&info->current,
|
||||
&info->current,
|
||||
info->resize_gravity,
|
||||
new_width,
|
||||
new_height);
|
||||
@ -1042,7 +1042,7 @@ constrain_aspect_ratio (MetaWindow *window,
|
||||
(double)window->size_hints.max_aspect.y;
|
||||
constraints_are_inconsistent = minr > maxr;
|
||||
if (constraints_are_inconsistent ||
|
||||
META_WINDOW_MAXIMIZED (window) || window->fullscreen ||
|
||||
META_WINDOW_MAXIMIZED (window) || window->fullscreen ||
|
||||
META_WINDOW_TILED_SIDE_BY_SIDE (window) ||
|
||||
info->action_type == ACTION_MOVE)
|
||||
return TRUE;
|
||||
@ -1082,7 +1082,7 @@ constrain_aspect_ratio (MetaWindow *window,
|
||||
fudge = 1;
|
||||
break;
|
||||
}
|
||||
constraint_already_satisfied =
|
||||
constraint_already_satisfied =
|
||||
info->current.width - (info->current.height * minr ) > -minr*fudge &&
|
||||
info->current.width - (info->current.height * maxr ) < maxr*fudge;
|
||||
if (check_only || constraint_already_satisfied)
|
||||
@ -1146,7 +1146,7 @@ constrain_aspect_ratio (MetaWindow *window,
|
||||
start_rect = &info->orig;
|
||||
|
||||
meta_rectangle_resize_with_gravity (start_rect,
|
||||
&info->current,
|
||||
&info->current,
|
||||
info->resize_gravity,
|
||||
new_width,
|
||||
new_height);
|
||||
@ -1194,7 +1194,7 @@ do_screen_and_monitor_relative_constraints (
|
||||
exit_early = TRUE;
|
||||
|
||||
/* Determine whether constraint is already satisfied; exit if it is */
|
||||
constraint_satisfied =
|
||||
constraint_satisfied =
|
||||
meta_rectangle_contained_in_region (region_spanning_rectangles,
|
||||
&info->current);
|
||||
if (exit_early || constraint_satisfied || check_only)
|
||||
@ -1233,7 +1233,7 @@ constrain_to_single_monitor (MetaWindow *window,
|
||||
return TRUE;
|
||||
|
||||
/* Exit early if we know the constraint won't apply--note that this constraint
|
||||
* is only meant for normal windows (e.g. we don't want docks to be shoved
|
||||
* is only meant for normal windows (e.g. we don't want docks to be shoved
|
||||
* "onscreen" by their own strut) and we can't apply it to frameless windows
|
||||
* or else users will be unable to move windows such as XMMS across monitors.
|
||||
*/
|
||||
@ -1246,7 +1246,7 @@ constrain_to_single_monitor (MetaWindow *window,
|
||||
return TRUE;
|
||||
|
||||
/* Have a helper function handle the constraint for us */
|
||||
return do_screen_and_monitor_relative_constraints (window,
|
||||
return do_screen_and_monitor_relative_constraints (window,
|
||||
info->usable_monitor_region,
|
||||
info,
|
||||
check_only);
|
||||
@ -1262,18 +1262,18 @@ constrain_fully_onscreen (MetaWindow *window,
|
||||
return TRUE;
|
||||
|
||||
/* Exit early if we know the constraint won't apply--note that this constraint
|
||||
* is only meant for normal windows (e.g. we don't want docks to be shoved
|
||||
* is only meant for normal windows (e.g. we don't want docks to be shoved
|
||||
* "onscreen" by their own strut).
|
||||
*/
|
||||
if (window->type == META_WINDOW_DESKTOP ||
|
||||
window->type == META_WINDOW_DOCK ||
|
||||
window->fullscreen ||
|
||||
!window->require_fully_onscreen ||
|
||||
!window->require_fully_onscreen ||
|
||||
info->is_user_action)
|
||||
return TRUE;
|
||||
|
||||
/* Have a helper function handle the constraint for us */
|
||||
return do_screen_and_monitor_relative_constraints (window,
|
||||
return do_screen_and_monitor_relative_constraints (window,
|
||||
info->usable_screen_region,
|
||||
info,
|
||||
check_only);
|
||||
@ -1301,7 +1301,7 @@ constrain_titlebar_visible (MetaWindow *window,
|
||||
info->is_user_action && !window->display->grab_frame_action;
|
||||
|
||||
/* Exit early if we know the constraint won't apply--note that this constraint
|
||||
* is only meant for normal windows (e.g. we don't want docks to be shoved
|
||||
* is only meant for normal windows (e.g. we don't want docks to be shoved
|
||||
* "onscreen" by their own strut).
|
||||
*/
|
||||
if (window->type == META_WINDOW_DESKTOP ||
|
||||
@ -1345,13 +1345,13 @@ constrain_titlebar_visible (MetaWindow *window,
|
||||
*/
|
||||
meta_rectangle_expand_region_conditionally (info->usable_screen_region,
|
||||
horiz_amount_offscreen,
|
||||
horiz_amount_offscreen,
|
||||
horiz_amount_offscreen,
|
||||
0, /* Don't let titlebar off */
|
||||
bottom_amount,
|
||||
horiz_amount_onscreen,
|
||||
vert_amount_onscreen);
|
||||
retval =
|
||||
do_screen_and_monitor_relative_constraints (window,
|
||||
do_screen_and_monitor_relative_constraints (window,
|
||||
info->usable_screen_region,
|
||||
info,
|
||||
check_only);
|
||||
@ -1381,7 +1381,7 @@ constrain_partially_onscreen (MetaWindow *window,
|
||||
return TRUE;
|
||||
|
||||
/* Exit early if we know the constraint won't apply--note that this constraint
|
||||
* is only meant for normal windows (e.g. we don't want docks to be shoved
|
||||
* is only meant for normal windows (e.g. we don't want docks to be shoved
|
||||
* "onscreen" by their own strut).
|
||||
*/
|
||||
if (window->type == META_WINDOW_DESKTOP ||
|
||||
@ -1423,13 +1423,13 @@ constrain_partially_onscreen (MetaWindow *window,
|
||||
*/
|
||||
meta_rectangle_expand_region_conditionally (info->usable_screen_region,
|
||||
horiz_amount_offscreen,
|
||||
horiz_amount_offscreen,
|
||||
horiz_amount_offscreen,
|
||||
top_amount,
|
||||
bottom_amount,
|
||||
horiz_amount_onscreen,
|
||||
vert_amount_onscreen);
|
||||
retval =
|
||||
do_screen_and_monitor_relative_constraints (window,
|
||||
do_screen_and_monitor_relative_constraints (window,
|
||||
info->usable_screen_region,
|
||||
info,
|
||||
check_only);
|
||||
|
@ -2,10 +2,10 @@
|
||||
|
||||
/* Mutter size/position constraints */
|
||||
|
||||
/*
|
||||
/*
|
||||
* Copyright (C) 2002 Red Hat, Inc.
|
||||
* Copyright (C) 2005 Elijah Newren
|
||||
*
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 of the
|
||||
@ -15,7 +15,7 @@
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
@ -2,11 +2,11 @@
|
||||
|
||||
/* Mutter interface used by GTK+ UI to talk to core */
|
||||
|
||||
/*
|
||||
/*
|
||||
* Copyright (C) 2001 Havoc Pennington
|
||||
* Copyright (C) 2003 Rob Adams
|
||||
* Copyright (C) 2004-2006 Elijah Newren
|
||||
*
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 of the
|
||||
@ -16,7 +16,7 @@
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
@ -46,7 +46,7 @@ get_window (Display *xdisplay,
|
||||
{
|
||||
MetaDisplay *display;
|
||||
MetaWindow *window;
|
||||
|
||||
|
||||
display = meta_display_for_x_display (xdisplay);
|
||||
window = meta_display_lookup_x_window (display, frame_xwindow);
|
||||
|
||||
@ -92,14 +92,14 @@ meta_core_get (Display *xdisplay,
|
||||
}
|
||||
|
||||
while (request != META_CORE_GET_END) {
|
||||
|
||||
|
||||
gpointer answer = va_arg (args, gpointer);
|
||||
|
||||
switch (request) {
|
||||
case META_CORE_WINDOW_HAS_FRAME:
|
||||
*((gboolean*)answer) = window != NULL && window->frame != NULL;
|
||||
if (!*((gboolean*)answer)) goto out; /* see above */
|
||||
break;
|
||||
break;
|
||||
case META_CORE_GET_CLIENT_WIDTH:
|
||||
*((gint*)answer) = window->rect.width;
|
||||
break;
|
||||
@ -111,7 +111,7 @@ meta_core_get (Display *xdisplay,
|
||||
break;
|
||||
case META_CORE_GET_FRAME_FLAGS:
|
||||
*((MetaFrameFlags*)answer) = meta_frame_get_flags (window->frame);
|
||||
break;
|
||||
break;
|
||||
case META_CORE_GET_FRAME_TYPE:
|
||||
*((MetaFrameType*)answer) = meta_window_get_frame_type (window);
|
||||
break;
|
||||
@ -157,7 +157,7 @@ meta_core_get (Display *xdisplay,
|
||||
}
|
||||
|
||||
request = va_arg (args, MetaCoreGetType);
|
||||
}
|
||||
}
|
||||
|
||||
out:
|
||||
va_end (args);
|
||||
@ -189,21 +189,21 @@ lower_window_and_transients (MetaWindow *window,
|
||||
* (Borrowed from window.c.)
|
||||
*/
|
||||
if (window->screen->active_workspace &&
|
||||
meta_window_located_on_workspace (window,
|
||||
meta_window_located_on_workspace (window,
|
||||
window->screen->active_workspace))
|
||||
{
|
||||
GList* link;
|
||||
link = g_list_find (window->screen->active_workspace->mru_list,
|
||||
link = g_list_find (window->screen->active_workspace->mru_list,
|
||||
window);
|
||||
g_assert (link);
|
||||
|
||||
window->screen->active_workspace->mru_list =
|
||||
window->screen->active_workspace->mru_list =
|
||||
g_list_remove_link (window->screen->active_workspace->mru_list,
|
||||
link);
|
||||
g_list_free (link);
|
||||
|
||||
window->screen->active_workspace->mru_list =
|
||||
g_list_append (window->screen->active_workspace->mru_list,
|
||||
window->screen->active_workspace->mru_list =
|
||||
g_list_append (window->screen->active_workspace->mru_list,
|
||||
window);
|
||||
}
|
||||
}
|
||||
@ -235,7 +235,7 @@ meta_core_user_focus (Display *xdisplay,
|
||||
guint32 timestamp)
|
||||
{
|
||||
MetaWindow *window = get_window (xdisplay, frame_xwindow);
|
||||
|
||||
|
||||
meta_window_focus (window, timestamp);
|
||||
}
|
||||
|
||||
@ -323,7 +323,7 @@ meta_core_delete (Display *xdisplay,
|
||||
guint32 timestamp)
|
||||
{
|
||||
MetaWindow *window = get_window (xdisplay, frame_xwindow);
|
||||
|
||||
|
||||
meta_window_delete (window, timestamp);
|
||||
}
|
||||
|
||||
@ -343,7 +343,7 @@ meta_core_shade (Display *xdisplay,
|
||||
guint32 timestamp)
|
||||
{
|
||||
MetaWindow *window = get_window (xdisplay, frame_xwindow);
|
||||
|
||||
|
||||
meta_window_shade (window, timestamp);
|
||||
}
|
||||
|
||||
@ -404,7 +404,7 @@ meta_core_show_window_menu (Display *xdisplay,
|
||||
guint32 timestamp)
|
||||
{
|
||||
MetaWindow *window = get_window (xdisplay, frame_xwindow);
|
||||
|
||||
|
||||
if (meta_prefs_get_raise_on_click ())
|
||||
meta_window_raise (window);
|
||||
meta_window_focus (window, timestamp);
|
||||
@ -421,7 +421,7 @@ meta_core_get_menu_accelerator (MetaMenuOp menu_op,
|
||||
const char *name;
|
||||
|
||||
name = NULL;
|
||||
|
||||
|
||||
switch (menu_op)
|
||||
{
|
||||
case META_MENU_OP_NONE:
|
||||
@ -462,25 +462,25 @@ meta_core_get_menu_accelerator (MetaMenuOp menu_op,
|
||||
break;
|
||||
case 3:
|
||||
name = "move-to-workspace-3";
|
||||
break;
|
||||
break;
|
||||
case 4:
|
||||
name = "move-to-workspace-4";
|
||||
break;
|
||||
break;
|
||||
case 5:
|
||||
name = "move-to-workspace-5";
|
||||
break;
|
||||
break;
|
||||
case 6:
|
||||
name = "move-to-workspace-6";
|
||||
break;
|
||||
break;
|
||||
case 7:
|
||||
name = "move-to-workspace-7";
|
||||
break;
|
||||
break;
|
||||
case 8:
|
||||
name = "move-to-workspace-8";
|
||||
break;
|
||||
break;
|
||||
case 9:
|
||||
name = "move-to-workspace-9";
|
||||
break;
|
||||
break;
|
||||
case 10:
|
||||
name = "move-to-workspace-10";
|
||||
break;
|
||||
@ -554,12 +554,12 @@ meta_core_begin_grab_op (Display *xdisplay,
|
||||
MetaWindow *window = get_window (xdisplay, frame_xwindow);
|
||||
MetaDisplay *display;
|
||||
MetaScreen *screen;
|
||||
|
||||
|
||||
display = meta_display_for_x_display (xdisplay);
|
||||
screen = display->screen;
|
||||
|
||||
g_assert (screen != NULL);
|
||||
|
||||
|
||||
return meta_display_begin_grab_op (display, screen, window,
|
||||
op, pointer_already_grabbed,
|
||||
frame_action,
|
||||
@ -572,7 +572,7 @@ meta_core_end_grab_op (Display *xdisplay,
|
||||
guint32 timestamp)
|
||||
{
|
||||
MetaDisplay *display;
|
||||
|
||||
|
||||
display = meta_display_for_x_display (xdisplay);
|
||||
|
||||
meta_display_end_grab_op (display, timestamp);
|
||||
@ -582,7 +582,7 @@ MetaGrabOp
|
||||
meta_core_get_grab_op (Display *xdisplay)
|
||||
{
|
||||
MetaDisplay *display;
|
||||
|
||||
|
||||
display = meta_display_for_x_display (xdisplay);
|
||||
|
||||
return display->grab_op;
|
||||
@ -593,7 +593,7 @@ meta_core_grab_buttons (Display *xdisplay,
|
||||
Window frame_xwindow)
|
||||
{
|
||||
MetaDisplay *display;
|
||||
|
||||
|
||||
display = meta_display_for_x_display (xdisplay);
|
||||
|
||||
meta_verbose ("Grabbing buttons on frame 0x%lx\n", frame_xwindow);
|
||||
|
@ -2,10 +2,10 @@
|
||||
|
||||
/* Mutter interface used by GTK+ UI to talk to core */
|
||||
|
||||
/*
|
||||
/*
|
||||
* Copyright (C) 2001 Havoc Pennington
|
||||
* Copyright (C) 2005 Elijah Newren
|
||||
*
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 of the
|
||||
@ -15,7 +15,7 @@
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
@ -2,10 +2,10 @@
|
||||
|
||||
/* Mutter window deletion */
|
||||
|
||||
/*
|
||||
/*
|
||||
* Copyright (C) 2001, 2002 Havoc Pennington
|
||||
* Copyright (C) 2004 Elijah Newren
|
||||
*
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 of the
|
||||
@ -15,7 +15,7 @@
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
@ -72,7 +72,7 @@ delete_ping_timeout_func (MetaWindow *window,
|
||||
char *window_title;
|
||||
gchar *window_content, *tmp;
|
||||
GPid dialog_pid;
|
||||
|
||||
|
||||
meta_topic (META_DEBUG_PING,
|
||||
"Got delete ping timeout for %s\n",
|
||||
window->desc);
|
||||
@ -149,7 +149,7 @@ meta_window_delete (MetaWindow *window,
|
||||
|
||||
if (window->has_focus)
|
||||
{
|
||||
/* FIXME Clean this up someday
|
||||
/* FIXME Clean this up someday
|
||||
* http://bugzilla.gnome.org/show_bug.cgi?id=108706
|
||||
*/
|
||||
#if 0
|
||||
@ -198,7 +198,7 @@ meta_window_present_delete_dialog (MetaWindow *window, guint32 timestamp)
|
||||
meta_topic (META_DEBUG_PING,
|
||||
"Presenting existing ping dialog for %s\n",
|
||||
window->desc);
|
||||
|
||||
|
||||
if (window->dialog_pid >= 0)
|
||||
{
|
||||
GSList *windows;
|
||||
@ -207,7 +207,7 @@ meta_window_present_delete_dialog (MetaWindow *window, guint32 timestamp)
|
||||
/* Activate transient for window that belongs to
|
||||
* mutter-dialog
|
||||
*/
|
||||
|
||||
|
||||
windows = meta_display_list_windows (window->display, META_LIST_DEFAULT);
|
||||
tmp = windows;
|
||||
while (tmp != NULL)
|
||||
@ -220,7 +220,7 @@ meta_window_present_delete_dialog (MetaWindow *window, guint32 timestamp)
|
||||
meta_window_activate (w, timestamp);
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
tmp = tmp->next;
|
||||
}
|
||||
|
||||
|
@ -2,12 +2,12 @@
|
||||
|
||||
/* Mutter X display handler */
|
||||
|
||||
/*
|
||||
/*
|
||||
* Copyright (C) 2001 Havoc Pennington
|
||||
* Copyright (C) 2002 Red Hat, Inc.
|
||||
* Copyright (C) 2003 Rob Adams
|
||||
* Copyright (C) 2004-2006 Elijah Newren
|
||||
*
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 of the
|
||||
@ -17,7 +17,7 @@
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
@ -85,7 +85,7 @@ typedef enum {
|
||||
struct _MetaDisplay
|
||||
{
|
||||
GObject parent_instance;
|
||||
|
||||
|
||||
char *name;
|
||||
Display *xdisplay;
|
||||
|
||||
@ -143,7 +143,7 @@ struct _MetaDisplay
|
||||
* multiple events with the same serial.
|
||||
*/
|
||||
guint focused_by_us : 1;
|
||||
|
||||
|
||||
/*< private-ish >*/
|
||||
MetaScreen *screen;
|
||||
GHashTable *xids;
|
||||
@ -157,7 +157,7 @@ struct _MetaDisplay
|
||||
*/
|
||||
unsigned long ignored_crossing_serials[N_IGNORED_CROSSING_SERIALS];
|
||||
Window ungrab_should_not_cause_focus_window;
|
||||
|
||||
|
||||
guint32 current_time;
|
||||
|
||||
/* We maintain a sequence counter, incremented for each #MetaWindow
|
||||
@ -181,7 +181,7 @@ struct _MetaDisplay
|
||||
|
||||
/* Alt+click button grabs */
|
||||
ClutterModifierType window_grab_modifiers;
|
||||
|
||||
|
||||
/* current window operation */
|
||||
MetaGrabOp grab_op;
|
||||
MetaWindow *grab_window;
|
||||
@ -234,7 +234,7 @@ struct _MetaDisplay
|
||||
gboolean overlay_key_only_pressed;
|
||||
MetaKeyCombo *iso_next_group_combos;
|
||||
int n_iso_next_group_combos;
|
||||
|
||||
|
||||
/* Monitor cache */
|
||||
unsigned int monitor_cache_invalidated : 1;
|
||||
|
||||
|
@ -1,11 +1,11 @@
|
||||
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
|
||||
|
||||
/*
|
||||
/*
|
||||
* Copyright (C) 2001 Havoc Pennington
|
||||
* Copyright (C) 2002, 2003, 2004 Red Hat, Inc.
|
||||
* Copyright (C) 2003, 2004 Rob Adams
|
||||
* Copyright (C) 2004-2006 Elijah Newren
|
||||
*
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 of the
|
||||
@ -15,7 +15,7 @@
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
@ -441,11 +441,11 @@ meta_display_open (void)
|
||||
#undef item
|
||||
};
|
||||
Atom atoms[G_N_ELEMENTS(atom_names)];
|
||||
|
||||
|
||||
meta_verbose ("Opening display '%s'\n", XDisplayName (NULL));
|
||||
|
||||
xdisplay = meta_ui_get_display ();
|
||||
|
||||
|
||||
if (xdisplay == NULL)
|
||||
{
|
||||
meta_warning (_("Failed to open X Window System display '%s'\n"),
|
||||
@ -458,12 +458,12 @@ meta_display_open (void)
|
||||
|
||||
if (meta_is_syncing ())
|
||||
XSynchronize (xdisplay, True);
|
||||
|
||||
|
||||
g_assert (the_display == NULL);
|
||||
the_display = g_object_new (META_TYPE_DISPLAY, NULL);
|
||||
|
||||
the_display->closing = 0;
|
||||
|
||||
|
||||
/* here we use XDisplayName which is what the user
|
||||
* probably put in, vs. DisplayString(display) which is
|
||||
* canonicalized by XOpenDisplay()
|
||||
@ -484,7 +484,7 @@ meta_display_open (void)
|
||||
the_display->mouse_mode = TRUE; /* Only relevant for mouse or sloppy focus */
|
||||
the_display->allow_terminal_deactivation = TRUE; /* Only relevant for when a
|
||||
terminal has the focus */
|
||||
|
||||
|
||||
meta_bell_init (the_display);
|
||||
|
||||
meta_display_init_keys (the_display);
|
||||
@ -497,7 +497,7 @@ meta_display_open (void)
|
||||
XInternAtoms (the_display->xdisplay, atom_names, G_N_ELEMENTS (atom_names),
|
||||
False, atoms);
|
||||
{
|
||||
int i = 0;
|
||||
int i = 0;
|
||||
#define item(x) the_display->atom_##x = atoms[i++];
|
||||
#include <meta/atomnames.h>
|
||||
#undef item
|
||||
@ -507,7 +507,7 @@ meta_display_open (void)
|
||||
meta_display_init_window_prop_hooks (the_display);
|
||||
the_display->group_prop_hooks = NULL;
|
||||
meta_display_init_group_prop_hooks (the_display);
|
||||
|
||||
|
||||
/* Offscreen unmapped window used for _NET_SUPPORTING_WM_CHECK,
|
||||
* created in screen_new
|
||||
*/
|
||||
@ -520,9 +520,9 @@ meta_display_open (void)
|
||||
|
||||
the_display->window_with_menu = NULL;
|
||||
the_display->window_menu = NULL;
|
||||
|
||||
|
||||
the_display->screen = NULL;
|
||||
|
||||
|
||||
#ifdef HAVE_STARTUP_NOTIFICATION
|
||||
the_display->sn_display = sn_display_new (the_display->xdisplay,
|
||||
sn_error_trap_push,
|
||||
@ -543,14 +543,14 @@ meta_display_open (void)
|
||||
++i;
|
||||
}
|
||||
the_display->ungrab_should_not_cause_focus_window = None;
|
||||
|
||||
|
||||
the_display->current_time = CurrentTime;
|
||||
the_display->sentinel_counter = 0;
|
||||
|
||||
the_display->grab_resize_timeout_id = 0;
|
||||
the_display->grab_have_keyboard = FALSE;
|
||||
|
||||
#ifdef HAVE_XKB
|
||||
|
||||
#ifdef HAVE_XKB
|
||||
the_display->last_bell_time = 0;
|
||||
#endif
|
||||
|
||||
@ -565,14 +565,14 @@ meta_display_open (void)
|
||||
int major, minor;
|
||||
|
||||
the_display->have_xsync = FALSE;
|
||||
|
||||
|
||||
the_display->xsync_error_base = 0;
|
||||
the_display->xsync_event_base = 0;
|
||||
|
||||
/* I don't think we really have to fill these in */
|
||||
major = SYNC_MAJOR_VERSION;
|
||||
minor = SYNC_MINOR_VERSION;
|
||||
|
||||
|
||||
if (!XSyncQueryExtension (the_display->xdisplay,
|
||||
&the_display->xsync_event_base,
|
||||
&the_display->xsync_error_base) ||
|
||||
@ -596,10 +596,10 @@ meta_display_open (void)
|
||||
|
||||
{
|
||||
the_display->have_shape = FALSE;
|
||||
|
||||
|
||||
the_display->shape_error_base = 0;
|
||||
the_display->shape_event_base = 0;
|
||||
|
||||
|
||||
if (!XShapeQueryExtension (the_display->xdisplay,
|
||||
&the_display->shape_event_base,
|
||||
&the_display->shape_error_base))
|
||||
@ -609,7 +609,7 @@ meta_display_open (void)
|
||||
}
|
||||
else
|
||||
the_display->have_shape = TRUE;
|
||||
|
||||
|
||||
meta_verbose ("Attempted to init Shape, found error base %d event base %d\n",
|
||||
the_display->shape_error_base,
|
||||
the_display->shape_event_base);
|
||||
@ -627,7 +627,7 @@ meta_display_open (void)
|
||||
{
|
||||
the_display->composite_error_base = 0;
|
||||
the_display->composite_event_base = 0;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
the_display->composite_major_version = 0;
|
||||
@ -647,7 +647,7 @@ meta_display_open (void)
|
||||
|
||||
meta_verbose ("Attempted to init Composite, found error base %d event base %d "
|
||||
"extn ver %d %d\n",
|
||||
the_display->composite_error_base,
|
||||
the_display->composite_error_base,
|
||||
the_display->composite_event_base,
|
||||
the_display->composite_major_version,
|
||||
the_display->composite_minor_version);
|
||||
@ -663,12 +663,12 @@ meta_display_open (void)
|
||||
{
|
||||
the_display->damage_error_base = 0;
|
||||
the_display->damage_event_base = 0;
|
||||
}
|
||||
}
|
||||
else
|
||||
the_display->have_damage = TRUE;
|
||||
|
||||
meta_verbose ("Attempted to init Damage, found error base %d event base %d\n",
|
||||
the_display->damage_error_base,
|
||||
the_display->damage_error_base,
|
||||
the_display->damage_event_base);
|
||||
|
||||
the_display->xfixes_error_base = 0;
|
||||
@ -691,7 +691,7 @@ meta_display_open (void)
|
||||
}
|
||||
|
||||
meta_verbose ("Attempted to init XFixes, found error base %d event base %d\n",
|
||||
the_display->xfixes_error_base,
|
||||
the_display->xfixes_error_base,
|
||||
the_display->xfixes_event_base);
|
||||
}
|
||||
|
||||
@ -751,7 +751,7 @@ meta_display_open (void)
|
||||
the_display->leader_window,
|
||||
the_display->atom__GNOME_WM_KEYBINDINGS,
|
||||
gnome_wm_keybindings);
|
||||
|
||||
|
||||
meta_prop_set_utf8_string_hint (the_display,
|
||||
the_display->leader_window,
|
||||
the_display->atom__MUTTER_VERSION,
|
||||
@ -937,7 +937,7 @@ meta_display_list_windows (MetaDisplay *display,
|
||||
GSList *next;
|
||||
|
||||
next = tmp->next;
|
||||
|
||||
|
||||
if (next &&
|
||||
next->data == tmp->data)
|
||||
{
|
||||
@ -948,7 +948,7 @@ meta_display_list_windows (MetaDisplay *display,
|
||||
|
||||
if (tmp == winlist)
|
||||
winlist = next;
|
||||
|
||||
|
||||
g_slist_free_1 (tmp);
|
||||
|
||||
/* leave prev unchanged */
|
||||
@ -957,7 +957,7 @@ meta_display_list_windows (MetaDisplay *display,
|
||||
{
|
||||
prev = tmp;
|
||||
}
|
||||
|
||||
|
||||
tmp = next;
|
||||
}
|
||||
|
||||
@ -979,7 +979,7 @@ meta_display_close (MetaDisplay *display,
|
||||
display->closing += 1;
|
||||
|
||||
meta_prefs_remove_listener (prefs_changed_callback, display);
|
||||
|
||||
|
||||
meta_display_remove_autoraise_callback (display);
|
||||
|
||||
if (display->focus_timeout_id)
|
||||
@ -988,7 +988,7 @@ meta_display_close (MetaDisplay *display,
|
||||
|
||||
/* Stop caring about events */
|
||||
meta_display_free_events (display);
|
||||
|
||||
|
||||
meta_screen_free (display->screen, timestamp);
|
||||
|
||||
#ifdef HAVE_STARTUP_NOTIFICATION
|
||||
@ -998,7 +998,7 @@ meta_display_close (MetaDisplay *display,
|
||||
display->sn_display = NULL;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
/* Must be after all calls to meta_window_unmanage() since they
|
||||
* unregister windows
|
||||
*/
|
||||
@ -1011,14 +1011,14 @@ meta_display_close (MetaDisplay *display,
|
||||
|
||||
meta_display_free_window_prop_hooks (display);
|
||||
meta_display_free_group_prop_hooks (display);
|
||||
|
||||
|
||||
g_free (display->name);
|
||||
|
||||
meta_display_shutdown_keys (display);
|
||||
|
||||
if (display->compositor)
|
||||
meta_compositor_destroy (display->compositor);
|
||||
|
||||
|
||||
g_object_unref (display);
|
||||
the_display = NULL;
|
||||
|
||||
@ -1054,7 +1054,7 @@ meta_display_ungrab (MetaDisplay *display)
|
||||
{
|
||||
if (display->server_grab_count == 0)
|
||||
meta_bug ("Ungrabbed non-grabbed server\n");
|
||||
|
||||
|
||||
display->server_grab_count -= 1;
|
||||
if (display->server_grab_count == 0)
|
||||
{
|
||||
@ -1090,7 +1090,7 @@ meta_display_for_x_display (Display *xdisplay)
|
||||
|
||||
meta_warning ("Could not find display for X display %p, probably going to crash\n",
|
||||
xdisplay);
|
||||
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
@ -1115,8 +1115,8 @@ meta_grab_op_is_mouse (MetaGrabOp op)
|
||||
{
|
||||
case META_GRAB_OP_MOVING:
|
||||
case META_GRAB_OP_RESIZING_SE:
|
||||
case META_GRAB_OP_RESIZING_S:
|
||||
case META_GRAB_OP_RESIZING_SW:
|
||||
case META_GRAB_OP_RESIZING_S:
|
||||
case META_GRAB_OP_RESIZING_SW:
|
||||
case META_GRAB_OP_RESIZING_N:
|
||||
case META_GRAB_OP_RESIZING_NE:
|
||||
case META_GRAB_OP_RESIZING_NW:
|
||||
@ -1157,8 +1157,8 @@ meta_grab_op_is_resizing (MetaGrabOp op)
|
||||
switch (op)
|
||||
{
|
||||
case META_GRAB_OP_RESIZING_SE:
|
||||
case META_GRAB_OP_RESIZING_S:
|
||||
case META_GRAB_OP_RESIZING_SW:
|
||||
case META_GRAB_OP_RESIZING_S:
|
||||
case META_GRAB_OP_RESIZING_SW:
|
||||
case META_GRAB_OP_RESIZING_N:
|
||||
case META_GRAB_OP_RESIZING_NE:
|
||||
case META_GRAB_OP_RESIZING_NW:
|
||||
@ -1188,7 +1188,7 @@ meta_grab_op_is_moving (MetaGrabOp op)
|
||||
case META_GRAB_OP_MOVING:
|
||||
case META_GRAB_OP_KEYBOARD_MOVING:
|
||||
return TRUE;
|
||||
|
||||
|
||||
default:
|
||||
return FALSE;
|
||||
}
|
||||
@ -1282,7 +1282,7 @@ guint32
|
||||
meta_display_get_current_time_roundtrip (MetaDisplay *display)
|
||||
{
|
||||
guint32 timestamp;
|
||||
|
||||
|
||||
timestamp = meta_display_get_current_time (display);
|
||||
if (timestamp == CurrentTime)
|
||||
{
|
||||
@ -1323,7 +1323,7 @@ meta_display_add_ignored_crossing_serial (MetaDisplay *display,
|
||||
/* don't add the same serial more than once */
|
||||
if (display->ignored_crossing_serials[N_IGNORED_CROSSING_SERIALS-1] == serial)
|
||||
return;
|
||||
|
||||
|
||||
/* shift serials to the left */
|
||||
i = 0;
|
||||
while (i < (N_IGNORED_CROSSING_SERIALS - 1))
|
||||
@ -1335,7 +1335,7 @@ meta_display_add_ignored_crossing_serial (MetaDisplay *display,
|
||||
display->ignored_crossing_serials[i] = serial;
|
||||
}
|
||||
|
||||
static gboolean
|
||||
static gboolean
|
||||
window_raise_with_delay_callback (void *data)
|
||||
{
|
||||
MetaWindow *window = data;
|
||||
@ -1345,8 +1345,8 @@ window_raise_with_delay_callback (void *data)
|
||||
|
||||
/* If we aren't already on top, check whether the pointer is inside
|
||||
* the window and raise the window if so.
|
||||
*/
|
||||
if (meta_stack_get_top (window->screen->stack) != window)
|
||||
*/
|
||||
if (meta_stack_get_top (window->screen->stack) != window)
|
||||
{
|
||||
int x, y, root_x, root_y;
|
||||
Window root, child;
|
||||
@ -1367,8 +1367,8 @@ window_raise_with_delay_callback (void *data)
|
||||
if (same_screen && point_in_window)
|
||||
meta_window_raise (window);
|
||||
else
|
||||
meta_topic (META_DEBUG_FOCUS,
|
||||
"Pointer not inside window, not raising %s\n",
|
||||
meta_topic (META_DEBUG_FOCUS,
|
||||
"Pointer not inside window, not raising %s\n",
|
||||
window->desc);
|
||||
}
|
||||
|
||||
@ -1379,15 +1379,15 @@ void
|
||||
meta_display_queue_autoraise_callback (MetaDisplay *display,
|
||||
MetaWindow *window)
|
||||
{
|
||||
meta_topic (META_DEBUG_FOCUS,
|
||||
"Queuing an autoraise timeout for %s with delay %d\n",
|
||||
window->desc,
|
||||
meta_topic (META_DEBUG_FOCUS,
|
||||
"Queuing an autoraise timeout for %s with delay %d\n",
|
||||
window->desc,
|
||||
meta_prefs_get_auto_raise_delay ());
|
||||
|
||||
|
||||
if (display->autoraise_timeout_id != 0)
|
||||
g_source_remove (display->autoraise_timeout_id);
|
||||
|
||||
display->autoraise_timeout_id =
|
||||
display->autoraise_timeout_id =
|
||||
g_timeout_add_full (G_PRIORITY_DEFAULT,
|
||||
meta_prefs_get_auto_raise_delay (),
|
||||
window_raise_with_delay_callback,
|
||||
@ -1561,7 +1561,7 @@ meta_display_register_x_window (MetaDisplay *display,
|
||||
MetaWindow *window)
|
||||
{
|
||||
g_return_if_fail (g_hash_table_lookup (display->xids, xwindowp) == NULL);
|
||||
|
||||
|
||||
g_hash_table_insert (display->xids, xwindowp, window);
|
||||
}
|
||||
|
||||
@ -1991,7 +1991,7 @@ meta_change_button_grab (MetaDisplay *display,
|
||||
mods = (XIGrabModifiers) { modmask | ignored_mask, 0 };
|
||||
|
||||
/* GrabModeSync means freeze until XAllowEvents */
|
||||
|
||||
|
||||
if (grab)
|
||||
XIGrabButton (xdisplay,
|
||||
META_VIRTUAL_CORE_POINTER_ID,
|
||||
@ -2011,7 +2011,7 @@ meta_change_button_grab (MetaDisplay *display,
|
||||
void
|
||||
meta_display_grab_window_buttons (MetaDisplay *display,
|
||||
Window xwindow)
|
||||
{
|
||||
{
|
||||
MetaBackend *backend = meta_get_backend ();
|
||||
|
||||
/* Do nothing under non-X11 backends */
|
||||
@ -2024,7 +2024,7 @@ meta_display_grab_window_buttons (MetaDisplay *display,
|
||||
* Grab Alt + Shift + button1 for snap-moving window.
|
||||
*/
|
||||
meta_verbose ("Grabbing window buttons for 0x%lx\n", xwindow);
|
||||
|
||||
|
||||
/* FIXME If we ignored errors here instead of spewing, we could
|
||||
* put one big error trap around the loop and avoid a bunch of
|
||||
* XSync()
|
||||
@ -2039,8 +2039,8 @@ meta_display_grab_window_buttons (MetaDisplay *display,
|
||||
meta_change_button_grab (display, xwindow,
|
||||
TRUE,
|
||||
FALSE,
|
||||
i, display->window_grab_modifiers);
|
||||
|
||||
i, display->window_grab_modifiers);
|
||||
|
||||
/* This is for debugging, since I end up moving the Xnest
|
||||
* otherwise ;-)
|
||||
*/
|
||||
@ -2079,7 +2079,7 @@ meta_display_ungrab_window_buttons (MetaDisplay *display,
|
||||
|
||||
if (display->window_grab_modifiers == 0)
|
||||
return;
|
||||
|
||||
|
||||
debug = g_getenv ("MUTTER_DEBUG_BUTTON_GRABS") != NULL;
|
||||
i = 1;
|
||||
while (i < 4)
|
||||
@ -2087,11 +2087,11 @@ meta_display_ungrab_window_buttons (MetaDisplay *display,
|
||||
meta_change_button_grab (display, xwindow,
|
||||
FALSE, FALSE, i,
|
||||
display->window_grab_modifiers);
|
||||
|
||||
|
||||
if (debug)
|
||||
meta_change_button_grab (display, xwindow,
|
||||
FALSE, FALSE, i, ControlMask);
|
||||
|
||||
|
||||
++i;
|
||||
}
|
||||
}
|
||||
@ -2125,18 +2125,18 @@ meta_display_grab_focus_window_button (MetaDisplay *display,
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
if (window->have_focus_click_grab)
|
||||
{
|
||||
meta_verbose (" (well, not grabbing since we already have the grab)\n");
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
/* FIXME If we ignored errors here instead of spewing, we could
|
||||
* put one big error trap around the loop and avoid a bunch of
|
||||
* XSync()
|
||||
*/
|
||||
|
||||
|
||||
{
|
||||
int i = 1;
|
||||
while (i < MAX_FOCUS_BUTTON)
|
||||
@ -2145,7 +2145,7 @@ meta_display_grab_focus_window_button (MetaDisplay *display,
|
||||
window->xwindow,
|
||||
TRUE, TRUE,
|
||||
i, 0);
|
||||
|
||||
|
||||
++i;
|
||||
}
|
||||
|
||||
@ -2167,14 +2167,14 @@ meta_display_ungrab_focus_window_button (MetaDisplay *display,
|
||||
|
||||
if (!window->have_focus_click_grab)
|
||||
return;
|
||||
|
||||
|
||||
{
|
||||
int i = 1;
|
||||
while (i < MAX_FOCUS_BUTTON)
|
||||
{
|
||||
meta_change_button_grab (display, window->xwindow,
|
||||
FALSE, FALSE, i, 0);
|
||||
|
||||
|
||||
++i;
|
||||
}
|
||||
|
||||
@ -2219,14 +2219,14 @@ meta_display_queue_retheme_all_windows (MetaDisplay *display)
|
||||
while (tmp != NULL)
|
||||
{
|
||||
MetaWindow *window = tmp->data;
|
||||
|
||||
|
||||
meta_window_queue (window, META_QUEUE_MOVE_RESIZE);
|
||||
meta_window_frame_size_changed (window);
|
||||
if (window->frame)
|
||||
{
|
||||
meta_frame_queue_draw (window->frame);
|
||||
}
|
||||
|
||||
|
||||
tmp = tmp->next;
|
||||
}
|
||||
|
||||
@ -2512,7 +2512,7 @@ find_tab_forward (MetaDisplay *display,
|
||||
return window;
|
||||
|
||||
tmp = tmp->next;
|
||||
}
|
||||
}
|
||||
|
||||
return NULL;
|
||||
}
|
||||
@ -2530,7 +2530,7 @@ find_tab_backward (MetaDisplay *display,
|
||||
g_return_val_if_fail (workspace != NULL, NULL);
|
||||
|
||||
tmp = start;
|
||||
if (skip_last)
|
||||
if (skip_last)
|
||||
tmp = tmp->prev;
|
||||
while (tmp != NULL)
|
||||
{
|
||||
@ -2638,7 +2638,7 @@ meta_display_get_tab_list (MetaDisplay *display,
|
||||
|
||||
g_list_free (global_mru_list);
|
||||
g_slist_free (windows);
|
||||
|
||||
|
||||
return tab_list;
|
||||
}
|
||||
|
||||
@ -2647,8 +2647,8 @@ meta_display_get_tab_list (MetaDisplay *display,
|
||||
* @display: a #MetaDisplay
|
||||
* @type: type of tab list
|
||||
* @workspace: origin workspace
|
||||
* @window: (allow-none): starting window
|
||||
* @backward: If %TRUE, look for the previous window.
|
||||
* @window: (allow-none): starting window
|
||||
* @backward: If %TRUE, look for the previous window.
|
||||
*
|
||||
* Determine the next window that should be displayed for Alt-TAB
|
||||
* functionality.
|
||||
@ -2670,11 +2670,11 @@ meta_display_get_tab_next (MetaDisplay *display,
|
||||
|
||||
if (tab_list == NULL)
|
||||
return NULL;
|
||||
|
||||
|
||||
if (window != NULL)
|
||||
{
|
||||
g_assert (window->display == display);
|
||||
|
||||
|
||||
if (backward)
|
||||
ret = find_tab_backward (display, type, workspace, g_list_find (tab_list, window), TRUE);
|
||||
else
|
||||
@ -2682,7 +2682,7 @@ meta_display_get_tab_next (MetaDisplay *display,
|
||||
}
|
||||
else
|
||||
{
|
||||
skip = display->focus_window != NULL &&
|
||||
skip = display->focus_window != NULL &&
|
||||
tab_list->data == display->focus_window;
|
||||
if (backward)
|
||||
ret = find_tab_backward (display, type, workspace, tab_list, skip);
|
||||
@ -2713,7 +2713,7 @@ meta_display_get_tab_current (MetaDisplay *display,
|
||||
MetaWindow *window;
|
||||
|
||||
window = display->focus_window;
|
||||
|
||||
|
||||
if (window != NULL &&
|
||||
IN_TAB_CHAIN (window, type) &&
|
||||
(workspace == NULL ||
|
||||
@ -2727,7 +2727,7 @@ int
|
||||
meta_resize_gravity_from_grab_op (MetaGrabOp op)
|
||||
{
|
||||
int gravity;
|
||||
|
||||
|
||||
gravity = -1;
|
||||
switch (op)
|
||||
{
|
||||
@ -2809,7 +2809,7 @@ meta_display_unmanage_windows_for_screen (MetaDisplay *display,
|
||||
if (!window->unmanaging)
|
||||
meta_window_unmanage (window, timestamp);
|
||||
g_object_unref (window);
|
||||
|
||||
|
||||
tmp = tmp->next;
|
||||
}
|
||||
g_slist_free (winlist);
|
||||
@ -2859,7 +2859,7 @@ meta_display_devirtualize_modifiers (MetaDisplay *display,
|
||||
unsigned int *mask)
|
||||
{
|
||||
*mask = 0;
|
||||
|
||||
|
||||
if (modifiers & META_VIRTUAL_SHIFT_MASK)
|
||||
*mask |= ShiftMask;
|
||||
if (modifiers & META_VIRTUAL_CONTROL_MASK)
|
||||
@ -2879,7 +2879,7 @@ meta_display_devirtualize_modifiers (MetaDisplay *display,
|
||||
if (modifiers & META_VIRTUAL_MOD4_MASK)
|
||||
*mask |= Mod4Mask;
|
||||
if (modifiers & META_VIRTUAL_MOD5_MASK)
|
||||
*mask |= Mod5Mask;
|
||||
*mask |= Mod5Mask;
|
||||
}
|
||||
|
||||
static void
|
||||
@ -2887,11 +2887,11 @@ update_window_grab_modifiers (MetaDisplay *display)
|
||||
{
|
||||
MetaVirtualModifier virtual_mods;
|
||||
unsigned int mods;
|
||||
|
||||
|
||||
virtual_mods = meta_prefs_get_mouse_button_mods ();
|
||||
meta_display_devirtualize_modifiers (display, virtual_mods,
|
||||
&mods);
|
||||
|
||||
|
||||
display->window_grab_modifiers = mods;
|
||||
}
|
||||
|
||||
@ -2900,7 +2900,7 @@ prefs_changed_callback (MetaPreference pref,
|
||||
void *data)
|
||||
{
|
||||
MetaDisplay *display = data;
|
||||
|
||||
|
||||
/* It may not be obvious why we regrab on focus mode
|
||||
* change; it's because we handle focus clicks a
|
||||
* bit differently for the different focus modes.
|
||||
@ -2911,9 +2911,9 @@ prefs_changed_callback (MetaPreference pref,
|
||||
MetaDisplay *display = data;
|
||||
GSList *windows;
|
||||
GSList *tmp;
|
||||
|
||||
|
||||
windows = meta_display_list_windows (display, META_LIST_DEFAULT);
|
||||
|
||||
|
||||
/* Ungrab all */
|
||||
tmp = windows;
|
||||
while (tmp != NULL)
|
||||
@ -2960,13 +2960,13 @@ meta_display_increment_focus_sentinel (MetaDisplay *display)
|
||||
unsigned long data[1];
|
||||
|
||||
data[0] = meta_display_get_current_time (display);
|
||||
|
||||
|
||||
XChangeProperty (display->xdisplay,
|
||||
display->screen->xroot,
|
||||
display->atom__MUTTER_SENTINEL,
|
||||
XA_CARDINAL,
|
||||
32, PropModeReplace, (guchar*) data, 1);
|
||||
|
||||
|
||||
display->sentinel_counter += 1;
|
||||
}
|
||||
|
||||
@ -3015,7 +3015,7 @@ meta_display_sanity_check_timestamps (MetaDisplay *display,
|
||||
while (tmp != NULL)
|
||||
{
|
||||
MetaWindow *window = tmp->data;
|
||||
|
||||
|
||||
if (XSERVER_TIME_IS_BEFORE (timestamp, window->net_wm_user_time))
|
||||
{
|
||||
meta_warning ("%s appears to be one of the offending windows "
|
||||
@ -3032,7 +3032,7 @@ meta_display_sanity_check_timestamps (MetaDisplay *display,
|
||||
}
|
||||
|
||||
void
|
||||
meta_display_set_input_focus_window (MetaDisplay *display,
|
||||
meta_display_set_input_focus_window (MetaDisplay *display,
|
||||
MetaWindow *window,
|
||||
gboolean focus_frame,
|
||||
guint32 timestamp)
|
||||
@ -3188,7 +3188,7 @@ meta_display_get_focus_window (MetaDisplay *display)
|
||||
return display->focus_window;
|
||||
}
|
||||
|
||||
int
|
||||
int
|
||||
meta_display_get_damage_event_base (MetaDisplay *display)
|
||||
{
|
||||
return display->damage_event_base;
|
||||
|
@ -2,9 +2,9 @@
|
||||
|
||||
/* Edge resistance for move/resize operations */
|
||||
|
||||
/*
|
||||
/*
|
||||
* Copyright (C) 2005, 2006 Elijah Newren
|
||||
*
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 of the
|
||||
@ -14,7 +14,7 @@
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
@ -245,8 +245,8 @@ find_nearest_position (const GArray *edges,
|
||||
{
|
||||
edge = g_array_index (edges, MetaEdge*, i);
|
||||
compare = horizontal ? edge->rect.x : edge->rect.y;
|
||||
|
||||
edges_align = horizontal ?
|
||||
|
||||
edges_align = horizontal ?
|
||||
meta_rectangle_vert_overlap (&edge->rect, new_rect) :
|
||||
meta_rectangle_horiz_overlap (&edge->rect, new_rect);
|
||||
|
||||
@ -269,8 +269,8 @@ find_nearest_position (const GArray *edges,
|
||||
{
|
||||
edge = g_array_index (edges, MetaEdge*, i);
|
||||
compare = horizontal ? edge->rect.x : edge->rect.y;
|
||||
|
||||
edges_align = horizontal ?
|
||||
|
||||
edges_align = horizontal ?
|
||||
meta_rectangle_vert_overlap (&edge->rect, new_rect) :
|
||||
meta_rectangle_horiz_overlap (&edge->rect, new_rect);
|
||||
|
||||
@ -433,7 +433,7 @@ apply_edge_resistance (MetaWindow *window,
|
||||
if (!resistance_data->timeout_setup &&
|
||||
timeout_length_ms != 0)
|
||||
{
|
||||
resistance_data->timeout_id =
|
||||
resistance_data->timeout_id =
|
||||
g_timeout_add (timeout_length_ms,
|
||||
edge_resistance_timeout,
|
||||
resistance_data);
|
||||
@ -536,7 +536,7 @@ apply_edge_snapping (int old_pos,
|
||||
* display->grab_edge_resistance_data MUST already be setup or calling this
|
||||
* function will cause a crash.
|
||||
*/
|
||||
static gboolean
|
||||
static gboolean
|
||||
apply_edge_resistance_to_each_side (MetaDisplay *display,
|
||||
MetaWindow *window,
|
||||
const MetaRectangle *old_outer,
|
||||
@ -658,7 +658,7 @@ apply_edge_resistance_to_each_side (MetaDisplay *display,
|
||||
}
|
||||
|
||||
/* Determine whether anything changed, and save the changes */
|
||||
modified_rect = meta_rect (new_left,
|
||||
modified_rect = meta_rect (new_left,
|
||||
new_top,
|
||||
new_right - new_left,
|
||||
new_bottom - new_top);
|
||||
@ -754,7 +754,7 @@ meta_display_cleanup_edges (MetaDisplay *display)
|
||||
}
|
||||
|
||||
static int
|
||||
stupid_sort_requiring_extra_pointer_dereference (gconstpointer a,
|
||||
stupid_sort_requiring_extra_pointer_dereference (gconstpointer a,
|
||||
gconstpointer b)
|
||||
{
|
||||
const MetaEdge * const *a_edge = a;
|
||||
@ -779,7 +779,7 @@ cache_edges (MetaDisplay *display,
|
||||
#ifdef WITH_VERBOSE_MODE
|
||||
if (meta_is_verbose())
|
||||
{
|
||||
int max_edges = MAX (MAX( g_list_length (window_edges),
|
||||
int max_edges = MAX (MAX( g_list_length (window_edges),
|
||||
g_list_length (monitor_edges)),
|
||||
g_list_length (screen_edges));
|
||||
char big_buffer[(EDGE_LENGTH+2)*max_edges];
|
||||
@ -916,13 +916,13 @@ cache_edges (MetaDisplay *display,
|
||||
* avoided this sort by sticking them into the array with some simple
|
||||
* merging of the lists).
|
||||
*/
|
||||
g_array_sort (display->grab_edge_resistance_data->left_edges,
|
||||
g_array_sort (display->grab_edge_resistance_data->left_edges,
|
||||
stupid_sort_requiring_extra_pointer_dereference);
|
||||
g_array_sort (display->grab_edge_resistance_data->right_edges,
|
||||
g_array_sort (display->grab_edge_resistance_data->right_edges,
|
||||
stupid_sort_requiring_extra_pointer_dereference);
|
||||
g_array_sort (display->grab_edge_resistance_data->top_edges,
|
||||
g_array_sort (display->grab_edge_resistance_data->top_edges,
|
||||
stupid_sort_requiring_extra_pointer_dereference);
|
||||
g_array_sort (display->grab_edge_resistance_data->bottom_edges,
|
||||
g_array_sort (display->grab_edge_resistance_data->bottom_edges,
|
||||
stupid_sort_requiring_extra_pointer_dereference);
|
||||
}
|
||||
|
||||
@ -986,7 +986,7 @@ compute_resistance_and_snapping_edges (MetaDisplay *display)
|
||||
new_rect = g_new (MetaRectangle, 1);
|
||||
meta_window_get_frame_rect (cur_window, new_rect);
|
||||
obscuring_windows = g_slist_prepend (obscuring_windows, new_rect);
|
||||
window_stacking =
|
||||
window_stacking =
|
||||
g_slist_prepend (window_stacking, GINT_TO_POINTER (stack_position));
|
||||
}
|
||||
|
||||
@ -1026,7 +1026,7 @@ compute_resistance_and_snapping_edges (MetaDisplay *display)
|
||||
* is offscreen (we also don't care about parts of edges covered
|
||||
* by other windows or DOCKS, but that's handled below).
|
||||
*/
|
||||
meta_rectangle_intersect (&cur_rect,
|
||||
meta_rectangle_intersect (&cur_rect,
|
||||
&display->screen->rect,
|
||||
&reduced);
|
||||
|
||||
@ -1052,7 +1052,7 @@ compute_resistance_and_snapping_edges (MetaDisplay *display)
|
||||
new_edge->side_type = META_SIDE_LEFT;
|
||||
new_edge->edge_type = META_EDGE_WINDOW;
|
||||
new_edges = g_list_prepend (new_edges, new_edge);
|
||||
|
||||
|
||||
/* Top side of this window is resistance for the bottom edge of
|
||||
* the window being moved.
|
||||
*/
|
||||
@ -1077,7 +1077,7 @@ compute_resistance_and_snapping_edges (MetaDisplay *display)
|
||||
/* Update the remaining windows to only those at a higher
|
||||
* stacking position than this one.
|
||||
*/
|
||||
while (rem_win_stacking &&
|
||||
while (rem_win_stacking &&
|
||||
stack_position >= GPOINTER_TO_INT (rem_win_stacking->data))
|
||||
{
|
||||
rem_windows = rem_windows->next;
|
||||
@ -1085,7 +1085,7 @@ compute_resistance_and_snapping_edges (MetaDisplay *display)
|
||||
}
|
||||
|
||||
/* Remove edge portions overlapped by rem_windows and rem_docks */
|
||||
new_edges =
|
||||
new_edges =
|
||||
meta_rectangle_remove_intersections_with_boxes_from_edges (
|
||||
new_edges,
|
||||
rem_windows);
|
||||
@ -1107,7 +1107,7 @@ compute_resistance_and_snapping_edges (MetaDisplay *display)
|
||||
/* FIXME: Shouldn't there be a helper function to make this one line of code
|
||||
* to free a list instead of four ugly ones?
|
||||
*/
|
||||
g_slist_foreach (obscuring_windows,
|
||||
g_slist_foreach (obscuring_windows,
|
||||
(void (*)(gpointer,gpointer))&g_free, /* ew, for ugly */
|
||||
NULL);
|
||||
g_slist_free (obscuring_windows);
|
||||
@ -1205,7 +1205,7 @@ meta_window_edge_resistance_for_move (MetaWindow *window,
|
||||
else
|
||||
smaller_y_change = bottom_change;
|
||||
|
||||
*new_x = old_x + smaller_x_change +
|
||||
*new_x = old_x + smaller_x_change +
|
||||
(BOX_LEFT (*reference) - BOX_LEFT (old_outer));
|
||||
*new_y = old_y + smaller_y_change +
|
||||
(BOX_TOP (*reference) - BOX_TOP (old_outer));
|
||||
@ -1239,7 +1239,7 @@ meta_window_edge_resistance_for_resize (MetaWindow *window,
|
||||
meta_window_get_frame_rect (window, &old_outer);
|
||||
proposed_outer_width = old_outer.width + (*new_width - old_width);
|
||||
proposed_outer_height = old_outer.height + (*new_height - old_height);
|
||||
meta_rectangle_resize_with_gravity (&old_outer,
|
||||
meta_rectangle_resize_with_gravity (&old_outer,
|
||||
&new_outer,
|
||||
gravity,
|
||||
proposed_outer_width,
|
||||
|
@ -2,9 +2,9 @@
|
||||
|
||||
/* Edge resistance for move/resize operations */
|
||||
|
||||
/*
|
||||
/*
|
||||
* Copyright (C) 2005 Elijah Newren
|
||||
*
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 of the
|
||||
@ -14,7 +14,7 @@
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
@ -1,9 +1,9 @@
|
||||
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
|
||||
|
||||
/*
|
||||
/*
|
||||
* Copyright (C) 2001 Havoc Pennington, error trapping inspired by GDK
|
||||
* code copyrighted by the GTK team.
|
||||
*
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 of the
|
||||
@ -13,7 +13,7 @@
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
@ -2,11 +2,11 @@
|
||||
|
||||
/* Mutter X window decorations */
|
||||
|
||||
/*
|
||||
/*
|
||||
* Copyright (C) 2001 Havoc Pennington
|
||||
* Copyright (C) 2003, 2004 Red Hat, Inc.
|
||||
* Copyright (C) 2005 Elijah Newren
|
||||
*
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 of the
|
||||
@ -16,7 +16,7 @@
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
@ -43,10 +43,10 @@ meta_window_ensure_frame (MetaWindow *window)
|
||||
Visual *visual;
|
||||
gulong create_serial;
|
||||
MetaStackWindow stack_window;
|
||||
|
||||
|
||||
if (window->frame)
|
||||
return;
|
||||
|
||||
|
||||
frame = g_new (MetaFrame, 1);
|
||||
|
||||
frame->window = window;
|
||||
@ -61,7 +61,7 @@ meta_window_ensure_frame (MetaWindow *window)
|
||||
|
||||
frame->is_flashing = FALSE;
|
||||
frame->borders_cached = FALSE;
|
||||
|
||||
|
||||
meta_verbose ("Framing window %s: visual %s default, depth %d default depth %d\n",
|
||||
window->desc,
|
||||
XVisualIDFromVisual (window->xvisual) ==
|
||||
@ -71,7 +71,7 @@ meta_window_ensure_frame (MetaWindow *window)
|
||||
meta_verbose ("Frame geometry %d,%d %dx%d\n",
|
||||
frame->rect.x, frame->rect.y,
|
||||
frame->rect.width, frame->rect.height);
|
||||
|
||||
|
||||
/* Default depth/visual handles clients with weird visuals; they can
|
||||
* always be children of the root depth/visual obviously, but
|
||||
* e.g. DRI games can't be children of a parent that has the same
|
||||
@ -80,7 +80,7 @@ meta_window_ensure_frame (MetaWindow *window)
|
||||
* We look for an ARGB visual if we can find one, otherwise use
|
||||
* the default of NULL.
|
||||
*/
|
||||
|
||||
|
||||
/* Special case for depth 32 windows (assumed to be ARGB),
|
||||
* we use the window's visual. Otherwise we just use the system visual.
|
||||
*/
|
||||
@ -88,7 +88,7 @@ meta_window_ensure_frame (MetaWindow *window)
|
||||
visual = window->xvisual;
|
||||
else
|
||||
visual = NULL;
|
||||
|
||||
|
||||
frame->xwindow = meta_ui_create_frame_window (window->screen->ui,
|
||||
window->display->xdisplay,
|
||||
visual,
|
||||
@ -108,7 +108,7 @@ meta_window_ensure_frame (MetaWindow *window)
|
||||
attrs.event_mask = EVENT_MASK;
|
||||
XChangeWindowAttributes (window->display->xdisplay,
|
||||
frame->xwindow, CWEventMask, &attrs);
|
||||
|
||||
|
||||
meta_display_register_x_window (window->display, &frame->xwindow, window);
|
||||
|
||||
meta_error_trap_push (window->display);
|
||||
@ -136,7 +136,7 @@ meta_window_ensure_frame (MetaWindow *window)
|
||||
window->rect.y);
|
||||
/* FIXME handle this error */
|
||||
meta_error_trap_pop (window->display);
|
||||
|
||||
|
||||
/* stick frame to the window */
|
||||
window->frame = frame;
|
||||
|
||||
@ -145,7 +145,7 @@ meta_window_ensure_frame (MetaWindow *window)
|
||||
*/
|
||||
meta_ui_update_frame_style (window->screen->ui, frame->xwindow);
|
||||
meta_ui_reset_frame_bg (window->screen->ui, frame->xwindow);
|
||||
|
||||
|
||||
if (window->title)
|
||||
meta_ui_set_frame_title (window->screen->ui,
|
||||
window->frame->xwindow,
|
||||
@ -163,18 +163,18 @@ meta_window_destroy_frame (MetaWindow *window)
|
||||
MetaFrame *frame;
|
||||
MetaFrameBorders borders;
|
||||
MetaStackWindow stack_window;
|
||||
|
||||
|
||||
if (window->frame == NULL)
|
||||
return;
|
||||
|
||||
meta_verbose ("Unframing window %s\n", window->desc);
|
||||
|
||||
|
||||
frame = window->frame;
|
||||
|
||||
meta_frame_calc_borders (frame, &borders);
|
||||
|
||||
|
||||
meta_bell_notify_frame_destroy (frame);
|
||||
|
||||
|
||||
/* Unparent the client window; it may be destroyed,
|
||||
* thus the error trap.
|
||||
*/
|
||||
@ -209,7 +209,7 @@ meta_window_destroy_frame (MetaWindow *window)
|
||||
|
||||
meta_display_unregister_x_window (window->display,
|
||||
frame->xwindow);
|
||||
|
||||
|
||||
window->frame = NULL;
|
||||
if (window->frame_bounds)
|
||||
{
|
||||
@ -219,9 +219,9 @@ meta_window_destroy_frame (MetaWindow *window)
|
||||
|
||||
/* Move keybindings to window instead of frame */
|
||||
meta_window_grab_keys (window);
|
||||
|
||||
|
||||
g_free (frame);
|
||||
|
||||
|
||||
/* Put our state back where it should be */
|
||||
meta_window_queue (window, META_QUEUE_CALC_SHOWING);
|
||||
meta_window_queue (window, META_QUEUE_MOVE_RESIZE);
|
||||
@ -244,20 +244,20 @@ meta_frame_get_flags (MetaFrame *frame)
|
||||
else
|
||||
{
|
||||
flags |= META_FRAME_ALLOWS_MENU;
|
||||
|
||||
|
||||
if (frame->window->has_close_func)
|
||||
flags |= META_FRAME_ALLOWS_DELETE;
|
||||
|
||||
|
||||
if (frame->window->has_maximize_func)
|
||||
flags |= META_FRAME_ALLOWS_MAXIMIZE;
|
||||
|
||||
|
||||
if (frame->window->has_minimize_func)
|
||||
flags |= META_FRAME_ALLOWS_MINIMIZE;
|
||||
|
||||
|
||||
if (frame->window->has_shade_func)
|
||||
flags |= META_FRAME_ALLOWS_SHADE;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if (META_WINDOW_ALLOWS_MOVE (frame->window))
|
||||
flags |= META_FRAME_ALLOWS_MOVE;
|
||||
|
||||
@ -266,7 +266,7 @@ meta_frame_get_flags (MetaFrame *frame)
|
||||
|
||||
if (META_WINDOW_ALLOWS_VERTICAL_RESIZE (frame->window))
|
||||
flags |= META_FRAME_ALLOWS_VERTICAL_RESIZE;
|
||||
|
||||
|
||||
if (meta_window_appears_focused (frame->window))
|
||||
flags |= META_FRAME_HAS_FOCUS;
|
||||
|
||||
@ -296,7 +296,7 @@ meta_frame_get_flags (MetaFrame *frame)
|
||||
|
||||
if (frame->window->wm_state_above)
|
||||
flags |= META_FRAME_ABOVE;
|
||||
|
||||
|
||||
return flags;
|
||||
}
|
||||
|
||||
@ -418,7 +418,7 @@ meta_frame_set_screen_cursor (MetaFrame *frame,
|
||||
if (cursor == META_CURSOR_DEFAULT)
|
||||
XUndefineCursor (frame->window->display->xdisplay, frame->xwindow);
|
||||
else
|
||||
{
|
||||
{
|
||||
xcursor = meta_display_create_x_cursor (frame->window->display, cursor);
|
||||
XDefineCursor (frame->window->display->xdisplay, frame->xwindow, xcursor);
|
||||
XFlush (frame->window->display->xdisplay);
|
||||
|
@ -2,9 +2,9 @@
|
||||
|
||||
/* Mutter X window decorations */
|
||||
|
||||
/*
|
||||
/*
|
||||
* Copyright (C) 2001 Havoc Pennington
|
||||
*
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 of the
|
||||
@ -14,7 +14,7 @@
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
@ -7,9 +7,9 @@
|
||||
* the one to close a window. It also deals with incoming key events.
|
||||
*/
|
||||
|
||||
/*
|
||||
/*
|
||||
* Copyright (C) 2001 Havoc Pennington
|
||||
*
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 of the
|
||||
@ -19,7 +19,7 @@
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
@ -2,10 +2,10 @@
|
||||
|
||||
/* Mutter main() */
|
||||
|
||||
/*
|
||||
/*
|
||||
* Copyright (C) 2001 Havoc Pennington
|
||||
* Copyright (C) 2006 Elijah Newren
|
||||
*
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 of the
|
||||
@ -15,7 +15,7 @@
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
@ -160,7 +160,7 @@ meta_print_self_identity (void)
|
||||
g_date_strftime (buf, sizeof (buf), "%x", &d);
|
||||
meta_verbose ("Mutter version %s running on %s\n",
|
||||
VERSION, buf);
|
||||
|
||||
|
||||
/* Locale and encoding. */
|
||||
g_get_charset (&charset);
|
||||
meta_verbose ("Running in locale \"%s\" with encoding \"%s\"\n",
|
||||
@ -343,7 +343,7 @@ meta_init (void)
|
||||
g_get_home_dir ());
|
||||
|
||||
meta_print_self_identity ();
|
||||
|
||||
|
||||
#ifdef HAVE_INTROSPECTION
|
||||
g_irepository_prepend_search_path (MUTTER_PKGLIBDIR);
|
||||
#endif
|
||||
@ -358,13 +358,13 @@ meta_init (void)
|
||||
meta_select_display (opt_display_name);
|
||||
|
||||
meta_set_syncing (opt_sync || (g_getenv ("MUTTER_SYNC") != NULL));
|
||||
|
||||
|
||||
if (opt_replace_wm)
|
||||
meta_set_replace_current_wm (TRUE);
|
||||
|
||||
if (opt_save_file && opt_client_id)
|
||||
meta_fatal ("Can't specify both SM save file and SM client id\n");
|
||||
|
||||
|
||||
meta_main_loop = g_main_loop_new (NULL, FALSE);
|
||||
|
||||
meta_ui_init ();
|
||||
@ -455,7 +455,7 @@ meta_run (void)
|
||||
|
||||
if (g_getenv ("MUTTER_G_FATAL_WARNINGS") != NULL)
|
||||
g_log_set_always_fatal (G_LOG_LEVEL_MASK);
|
||||
|
||||
|
||||
meta_ui_set_current_theme (meta_prefs_get_theme ());
|
||||
|
||||
/* Try to find some theme that'll work if the theme preference
|
||||
@ -464,37 +464,37 @@ meta_run (void)
|
||||
*/
|
||||
if (!meta_ui_have_a_theme ())
|
||||
meta_ui_set_current_theme ("Simple");
|
||||
|
||||
|
||||
if (!meta_ui_have_a_theme ())
|
||||
{
|
||||
const char *dir_entry = NULL;
|
||||
GError *err = NULL;
|
||||
GDir *themes_dir = NULL;
|
||||
|
||||
|
||||
if (!(themes_dir = g_dir_open (MUTTER_DATADIR"/themes", 0, &err)))
|
||||
{
|
||||
meta_fatal (_("Failed to scan themes directory: %s\n"), err->message);
|
||||
g_error_free (err);
|
||||
}
|
||||
else
|
||||
}
|
||||
else
|
||||
{
|
||||
while (((dir_entry = g_dir_read_name (themes_dir)) != NULL) &&
|
||||
while (((dir_entry = g_dir_read_name (themes_dir)) != NULL) &&
|
||||
(!meta_ui_have_a_theme ()))
|
||||
{
|
||||
meta_ui_set_current_theme (dir_entry);
|
||||
}
|
||||
|
||||
|
||||
g_dir_close (themes_dir);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (!meta_ui_have_a_theme ())
|
||||
meta_fatal (_("Could not find a theme! Be sure %s exists and contains the usual themes.\n"),
|
||||
MUTTER_DATADIR"/themes");
|
||||
|
||||
if (!meta_display_open ())
|
||||
meta_exit (META_EXIT_ERROR);
|
||||
|
||||
|
||||
g_main_loop_run (meta_main_loop);
|
||||
|
||||
meta_finalize ();
|
||||
|
@ -12,7 +12,7 @@
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
108
src/core/place.c
108
src/core/place.c
@ -2,12 +2,12 @@
|
||||
|
||||
/* Mutter window placement */
|
||||
|
||||
/*
|
||||
/*
|
||||
* Copyright (C) 2001 Havoc Pennington
|
||||
* Copyright (C) 2002, 2003 Red Hat, Inc.
|
||||
* Copyright (C) 2003 Rob Adams
|
||||
* Copyright (C) 2005 Elijah Newren
|
||||
*
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 of the
|
||||
@ -17,7 +17,7 @@
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
@ -57,11 +57,11 @@ northwestcmp (gconstpointer a, gconstpointer b)
|
||||
ay = a_frame.y;
|
||||
bx = b_frame.x;
|
||||
by = b_frame.y;
|
||||
|
||||
|
||||
/* probably there's a fast good-enough-guess we could use here. */
|
||||
from_origin_a = sqrt (ax * ax + ay * ay);
|
||||
from_origin_b = sqrt (bx * bx + by * by);
|
||||
|
||||
|
||||
if (from_origin_a < from_origin_b)
|
||||
return -1;
|
||||
else if (from_origin_a > from_origin_b)
|
||||
@ -88,16 +88,16 @@ find_next_cascade (MetaWindow *window,
|
||||
int cascade_stage;
|
||||
MetaRectangle work_area;
|
||||
int current;
|
||||
|
||||
|
||||
sorted = g_list_copy (windows);
|
||||
sorted = g_list_sort (sorted, northwestcmp);
|
||||
|
||||
/* This is a "fuzzy" cascade algorithm.
|
||||
/* This is a "fuzzy" cascade algorithm.
|
||||
* For each window in the list, we find where we'd cascade a
|
||||
* new window after it. If a window is already nearly at that
|
||||
* position, we move on.
|
||||
*/
|
||||
|
||||
|
||||
/* arbitrary-ish threshold, honors user attempts to
|
||||
* manually cascade.
|
||||
*/
|
||||
@ -115,7 +115,7 @@ find_next_cascade (MetaWindow *window,
|
||||
x_threshold = CASCADE_FUZZ;
|
||||
y_threshold = CASCADE_FUZZ;
|
||||
}
|
||||
|
||||
|
||||
/* Find furthest-SE origin of all workspaces.
|
||||
* cascade_x, cascade_y are the target position
|
||||
* of NW corner of window frame.
|
||||
@ -126,13 +126,13 @@ find_next_cascade (MetaWindow *window,
|
||||
|
||||
cascade_x = MAX (0, work_area.x);
|
||||
cascade_y = MAX (0, work_area.y);
|
||||
|
||||
|
||||
/* Find first cascade position that's not used. */
|
||||
|
||||
meta_window_get_frame_rect (window, &frame_rect);
|
||||
window_width = frame_rect.width;
|
||||
window_height = frame_rect.height;
|
||||
|
||||
|
||||
cascade_stage = 0;
|
||||
tmp = sorted;
|
||||
while (tmp != NULL)
|
||||
@ -140,14 +140,14 @@ find_next_cascade (MetaWindow *window,
|
||||
MetaWindow *w;
|
||||
MetaRectangle w_frame_rect;
|
||||
int wx, wy;
|
||||
|
||||
|
||||
w = tmp->data;
|
||||
|
||||
/* we want frame position, not window position */
|
||||
meta_window_get_frame_rect (w, &w_frame_rect);
|
||||
wx = w_frame_rect.x;
|
||||
wy = w_frame_rect.y;
|
||||
|
||||
|
||||
if (ABS (wx - cascade_x) < x_threshold &&
|
||||
ABS (wy - cascade_y) < y_threshold)
|
||||
{
|
||||
@ -158,7 +158,7 @@ find_next_cascade (MetaWindow *window,
|
||||
meta_window_get_position (w, &wx, &wy);
|
||||
cascade_x = wx;
|
||||
cascade_y = wy;
|
||||
|
||||
|
||||
/* If we go off the screen, start over with a new cascade */
|
||||
if (((cascade_x + window_width) >
|
||||
(work_area.x + work_area.width)) ||
|
||||
@ -167,11 +167,11 @@ find_next_cascade (MetaWindow *window,
|
||||
{
|
||||
cascade_x = MAX (0, work_area.x);
|
||||
cascade_y = MAX (0, work_area.y);
|
||||
|
||||
|
||||
#define CASCADE_INTERVAL 50 /* space between top-left corners of cascades */
|
||||
cascade_stage += 1;
|
||||
cascade_x += CASCADE_INTERVAL * cascade_stage;
|
||||
|
||||
|
||||
/* start over with a new cascade translated to the right, unless
|
||||
* we are out of space
|
||||
*/
|
||||
@ -193,14 +193,14 @@ find_next_cascade (MetaWindow *window,
|
||||
{
|
||||
/* Keep searching for a further-down-the-diagonal window. */
|
||||
}
|
||||
|
||||
|
||||
tmp = tmp->next;
|
||||
}
|
||||
|
||||
/* cascade_x and cascade_y will match the last window in the list
|
||||
* that was "in the way" (in the approximate cascade diagonal)
|
||||
*/
|
||||
|
||||
|
||||
g_list_free (sorted);
|
||||
|
||||
*new_x = cascade_x;
|
||||
@ -376,12 +376,12 @@ rectangle_overlaps_some_window (MetaRectangle *rect,
|
||||
{
|
||||
GList *tmp;
|
||||
MetaRectangle dest;
|
||||
|
||||
|
||||
tmp = windows;
|
||||
while (tmp != NULL)
|
||||
{
|
||||
MetaWindow *other = tmp->data;
|
||||
MetaRectangle other_rect;
|
||||
MetaRectangle other_rect;
|
||||
|
||||
switch (other->type)
|
||||
{
|
||||
@ -405,12 +405,12 @@ rectangle_overlaps_some_window (MetaRectangle *rect,
|
||||
case META_WINDOW_TOOLBAR:
|
||||
case META_WINDOW_MENU:
|
||||
meta_window_get_frame_rect (other, &other_rect);
|
||||
|
||||
|
||||
if (meta_rectangle_intersect (rect, &other_rect, &dest))
|
||||
return TRUE;
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
tmp = tmp->next;
|
||||
}
|
||||
|
||||
@ -503,20 +503,20 @@ find_first_fit (MetaWindow *window,
|
||||
* the bottom of each existing window, and then to the right
|
||||
* of each existing window, aligned with the left/top of the
|
||||
* existing window in each of those cases.
|
||||
*/
|
||||
*/
|
||||
int retval;
|
||||
GList *below_sorted;
|
||||
GList *right_sorted;
|
||||
GList *tmp;
|
||||
MetaRectangle rect;
|
||||
MetaRectangle work_area;
|
||||
|
||||
|
||||
retval = FALSE;
|
||||
|
||||
/* Below each window */
|
||||
below_sorted = g_list_copy (windows);
|
||||
below_sorted = g_list_sort (below_sorted, leftmost_cmp);
|
||||
below_sorted = g_list_sort (below_sorted, topmost_cmp);
|
||||
below_sorted = g_list_sort (below_sorted, topmost_cmp);
|
||||
|
||||
/* To the right of each window */
|
||||
right_sorted = g_list_copy (windows);
|
||||
@ -545,9 +545,9 @@ find_first_fit (MetaWindow *window,
|
||||
{
|
||||
*new_x = rect.x;
|
||||
*new_y = rect.y;
|
||||
|
||||
|
||||
retval = TRUE;
|
||||
|
||||
|
||||
goto out;
|
||||
}
|
||||
|
||||
@ -559,18 +559,18 @@ find_first_fit (MetaWindow *window,
|
||||
MetaRectangle frame_rect;
|
||||
|
||||
meta_window_get_frame_rect (w, &frame_rect);
|
||||
|
||||
|
||||
rect.x = frame_rect.x;
|
||||
rect.y = frame_rect.y + frame_rect.height;
|
||||
|
||||
|
||||
if (meta_rectangle_contains_rect (&work_area, &rect) &&
|
||||
!rectangle_overlaps_some_window (&rect, below_sorted))
|
||||
{
|
||||
*new_x = rect.x;
|
||||
*new_y = rect.y;
|
||||
|
||||
|
||||
retval = TRUE;
|
||||
|
||||
|
||||
goto out;
|
||||
}
|
||||
|
||||
@ -583,26 +583,26 @@ find_first_fit (MetaWindow *window,
|
||||
{
|
||||
MetaWindow *w = tmp->data;
|
||||
MetaRectangle frame_rect;
|
||||
|
||||
|
||||
meta_window_get_frame_rect (w, &frame_rect);
|
||||
|
||||
|
||||
rect.x = frame_rect.x + frame_rect.width;
|
||||
rect.y = frame_rect.y;
|
||||
|
||||
|
||||
if (meta_rectangle_contains_rect (&work_area, &rect) &&
|
||||
!rectangle_overlaps_some_window (&rect, right_sorted))
|
||||
{
|
||||
*new_x = rect.x;
|
||||
*new_y = rect.y;
|
||||
|
||||
|
||||
retval = TRUE;
|
||||
|
||||
|
||||
goto out;
|
||||
}
|
||||
|
||||
tmp = tmp->next;
|
||||
}
|
||||
|
||||
|
||||
out:
|
||||
|
||||
g_list_free (below_sorted);
|
||||
@ -632,7 +632,7 @@ meta_window_place (MetaWindow *window,
|
||||
case META_WINDOW_MODAL_DIALOG:
|
||||
case META_WINDOW_SPLASHSCREEN:
|
||||
break;
|
||||
|
||||
|
||||
/* Assume the app knows best how to place these, no placement
|
||||
* algorithm ever (other than "leave them as-is")
|
||||
*/
|
||||
@ -675,7 +675,7 @@ meta_window_place (MetaWindow *window,
|
||||
case META_WINDOW_MODAL_DIALOG:
|
||||
case META_WINDOW_SPLASHSCREEN:
|
||||
break;
|
||||
|
||||
|
||||
/* Assume the app knows best how to place these. */
|
||||
case META_WINDOW_DESKTOP:
|
||||
case META_WINDOW_DOCK:
|
||||
@ -702,7 +702,7 @@ meta_window_place (MetaWindow *window,
|
||||
else
|
||||
{
|
||||
/* workarounds enabled */
|
||||
|
||||
|
||||
if ((window->size_hints.flags & PPosition) ||
|
||||
(window->size_hints.flags & USPosition))
|
||||
{
|
||||
@ -739,17 +739,17 @@ meta_window_place (MetaWindow *window,
|
||||
|
||||
meta_topic (META_DEBUG_PLACEMENT, "Centered window %s over transient parent\n",
|
||||
window->desc);
|
||||
|
||||
|
||||
avoid_being_obscured_as_second_modal_dialog (window, &x, &y);
|
||||
|
||||
goto done;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* FIXME UTILITY with transient set should be stacked up
|
||||
* on the sides of the parent window or something.
|
||||
*/
|
||||
|
||||
|
||||
if (window_place_centered (window))
|
||||
{
|
||||
/* Center on current monitor */
|
||||
@ -769,13 +769,13 @@ meta_window_place (MetaWindow *window,
|
||||
|
||||
x += xi->rect.x;
|
||||
y += xi->rect.y;
|
||||
|
||||
|
||||
meta_topic (META_DEBUG_PLACEMENT, "Centered window %s on screen %d monitor %d\n",
|
||||
window->desc, window->screen->number, xi->number);
|
||||
|
||||
goto done_check_denied_focus;
|
||||
}
|
||||
|
||||
|
||||
/* Find windows that matter (not minimized, on same workspace
|
||||
* as placed window, may be shaded - if shaded we pretend it isn't
|
||||
* for placement purposes)
|
||||
@ -783,7 +783,7 @@ meta_window_place (MetaWindow *window,
|
||||
{
|
||||
GSList *all_windows;
|
||||
GSList *tmp;
|
||||
|
||||
|
||||
all_windows = meta_display_list_windows (window->display, META_LIST_DEFAULT);
|
||||
|
||||
tmp = all_windows;
|
||||
@ -804,7 +804,7 @@ meta_window_place (MetaWindow *window,
|
||||
|
||||
/* Warning, this is a round trip! */
|
||||
xi = meta_screen_get_current_monitor_info (window->screen);
|
||||
|
||||
|
||||
/* "Origin" placement algorithm */
|
||||
x = xi->rect.x;
|
||||
y = xi->rect.y;
|
||||
@ -816,7 +816,7 @@ meta_window_place (MetaWindow *window,
|
||||
|
||||
/* Maximize windows if they are too big for their work area (bit of
|
||||
* a hack here). Assume undecorated windows probably don't intend to
|
||||
* be maximized.
|
||||
* be maximized.
|
||||
*/
|
||||
if (window->has_maximize_func && window->decorated &&
|
||||
!window->fullscreen)
|
||||
@ -826,9 +826,9 @@ meta_window_place (MetaWindow *window,
|
||||
|
||||
meta_window_get_work_area_for_monitor (window,
|
||||
xi->number,
|
||||
&workarea);
|
||||
&workarea);
|
||||
meta_window_get_frame_rect (window, &frame_rect);
|
||||
|
||||
|
||||
/* If the window is bigger than the screen, then automaximize. Do NOT
|
||||
* auto-maximize the directions independently. See #419810.
|
||||
*/
|
||||
@ -839,10 +839,10 @@ meta_window_place (MetaWindow *window,
|
||||
}
|
||||
}
|
||||
|
||||
/* If no placement has been done, revert to cascade to avoid
|
||||
/* If no placement has been done, revert to cascade to avoid
|
||||
* fully overlapping window (e.g. starting multiple terminals)
|
||||
* */
|
||||
if (x == xi->rect.x && y == xi->rect.y)
|
||||
if (x == xi->rect.x && y == xi->rect.y)
|
||||
find_next_cascade (window, windows, x, y, &x, &y);
|
||||
|
||||
done_check_denied_focus:
|
||||
@ -886,10 +886,10 @@ meta_window_place (MetaWindow *window,
|
||||
if (!found_fit)
|
||||
find_most_freespace (window, focus_window, x, y, &x, &y);
|
||||
}
|
||||
|
||||
|
||||
done:
|
||||
g_list_free (windows);
|
||||
|
||||
|
||||
done_no_constraints:
|
||||
|
||||
*new_x = x;
|
||||
|
@ -2,9 +2,9 @@
|
||||
|
||||
/* Mutter window placement */
|
||||
|
||||
/*
|
||||
/*
|
||||
* Copyright (C) 2001 Havoc Pennington
|
||||
*
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 of the
|
||||
@ -14,7 +14,7 @@
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
@ -1,6 +1,6 @@
|
||||
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
|
||||
|
||||
/*
|
||||
/*
|
||||
* Copyright (C) 2001 Havoc Pennington, Copyright (C) 2002 Red Hat Inc.
|
||||
* Copyright (C) 2006 Elijah Newren
|
||||
* Copyright (C) 2008 Thomas Thurman
|
||||
@ -15,7 +15,7 @@
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
@ -615,7 +615,7 @@ handle_preference_init_int (void)
|
||||
{
|
||||
MetaIntPreference *cursor = preferences_int;
|
||||
|
||||
|
||||
|
||||
while (cursor->base.key != NULL)
|
||||
{
|
||||
if (cursor->target)
|
||||
@ -671,7 +671,7 @@ handle_preference_update_bool (GSettings *settings,
|
||||
* store the current value away.
|
||||
*/
|
||||
old_value = *((gboolean *) cursor->target);
|
||||
|
||||
|
||||
/* Now look it up... */
|
||||
*((gboolean *) cursor->target) =
|
||||
g_settings_get_boolean (SETTINGS (cursor->base.schema), key);
|
||||
@ -802,7 +802,7 @@ handle_preference_update_int (GSettings *settings,
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/****************************************************************************/
|
||||
/* Listeners. */
|
||||
/****************************************************************************/
|
||||
@ -851,7 +851,7 @@ meta_prefs_remove_listener (MetaPrefsChangedFunc func,
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
tmp = tmp->next;
|
||||
}
|
||||
|
||||
@ -866,9 +866,9 @@ emit_changed (MetaPreference pref)
|
||||
|
||||
meta_topic (META_DEBUG_PREFS, "Notifying listeners that pref %s changed\n",
|
||||
meta_preference_to_string (pref));
|
||||
|
||||
|
||||
copy = g_list_copy (listeners);
|
||||
|
||||
|
||||
tmp = copy;
|
||||
|
||||
while (tmp != NULL)
|
||||
@ -890,24 +890,24 @@ changed_idle_handler (gpointer data)
|
||||
GList *copy;
|
||||
|
||||
changed_idle = 0;
|
||||
|
||||
|
||||
copy = g_list_copy (changes); /* reentrancy paranoia */
|
||||
|
||||
g_list_free (changes);
|
||||
changes = NULL;
|
||||
|
||||
|
||||
tmp = copy;
|
||||
while (tmp != NULL)
|
||||
{
|
||||
MetaPreference pref = GPOINTER_TO_INT (tmp->data);
|
||||
|
||||
emit_changed (pref);
|
||||
|
||||
|
||||
tmp = tmp->next;
|
||||
}
|
||||
|
||||
g_list_free (copy);
|
||||
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
@ -915,7 +915,7 @@ static void
|
||||
queue_changed (MetaPreference pref)
|
||||
{
|
||||
meta_topic (META_DEBUG_PREFS, "Queueing change of pref %s\n",
|
||||
meta_preference_to_string (pref));
|
||||
meta_preference_to_string (pref));
|
||||
|
||||
if (g_list_find (changes, GINT_TO_POINTER (pref)) == NULL)
|
||||
changes = g_list_prepend (changes, GINT_TO_POINTER (pref));
|
||||
@ -931,7 +931,7 @@ queue_changed (MetaPreference pref)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/****************************************************************************/
|
||||
/* Initialisation. */
|
||||
/****************************************************************************/
|
||||
@ -1117,7 +1117,7 @@ meta_prefs_override_preference_schema (const char *key, const char *schema)
|
||||
do_override (overridden->key, overridden->new_schema);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/****************************************************************************/
|
||||
/* Updates. */
|
||||
/****************************************************************************/
|
||||
@ -1194,7 +1194,7 @@ static void
|
||||
maybe_give_disable_workarounds_warning (void)
|
||||
{
|
||||
static gboolean first_disable = TRUE;
|
||||
|
||||
|
||||
if (first_disable && disable_workarounds)
|
||||
{
|
||||
first_disable = FALSE;
|
||||
@ -1261,7 +1261,7 @@ meta_prefs_get_cursor_size (void)
|
||||
return cursor_size;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/****************************************************************************/
|
||||
/* Handlers for string preferences. */
|
||||
/****************************************************************************/
|
||||
@ -1345,7 +1345,7 @@ mouse_button_mods_handler (GVariant *value,
|
||||
{
|
||||
meta_topic (META_DEBUG_KEYBINDINGS,
|
||||
"Failed to parse new GSettings value\n");
|
||||
|
||||
|
||||
meta_warning ("\"%s\" found in configuration database is "
|
||||
"not a valid value for mouse button modifier\n",
|
||||
string_value);
|
||||
@ -1369,7 +1369,7 @@ mouse_button_mods_handler (GVariant *value,
|
||||
static gboolean
|
||||
button_layout_equal (const MetaButtonLayout *a,
|
||||
const MetaButtonLayout *b)
|
||||
{
|
||||
{
|
||||
int i;
|
||||
|
||||
i = 0;
|
||||
@ -1410,7 +1410,7 @@ button_function_from_string (const char *str)
|
||||
return META_BUTTON_FUNCTION_ABOVE;
|
||||
else if (strcmp (str, "stick") == 0)
|
||||
return META_BUTTON_FUNCTION_STICK;
|
||||
else
|
||||
else
|
||||
/* don't know; give up */
|
||||
return META_BUTTON_FUNCTION_LAST;
|
||||
}
|
||||
@ -1535,7 +1535,7 @@ button_layout_handler (GVariant *value,
|
||||
new_layout.right_buttons_has_spacer[i] = FALSE;
|
||||
++i;
|
||||
}
|
||||
|
||||
|
||||
buttons = g_strsplit (sides[1], ",", -1);
|
||||
i = 0;
|
||||
b = 0;
|
||||
@ -1571,7 +1571,7 @@ button_layout_handler (GVariant *value,
|
||||
buttons[b]);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
++b;
|
||||
}
|
||||
|
||||
@ -1585,13 +1585,13 @@ button_layout_handler (GVariant *value,
|
||||
}
|
||||
|
||||
g_strfreev (sides);
|
||||
|
||||
|
||||
/* Invert the button layout for RTL languages */
|
||||
if (meta_ui_get_direction() == META_UI_DIRECTION_RTL)
|
||||
{
|
||||
MetaButtonLayout rtl_layout;
|
||||
int j;
|
||||
|
||||
|
||||
for (i = 0; new_layout.left_buttons[i] != META_BUTTON_FUNCTION_LAST; i++);
|
||||
for (j = 0; j < i; j++)
|
||||
{
|
||||
@ -1606,7 +1606,7 @@ button_layout_handler (GVariant *value,
|
||||
rtl_layout.right_buttons[j] = META_BUTTON_FUNCTION_LAST;
|
||||
rtl_layout.right_buttons_has_spacer[j] = FALSE;
|
||||
}
|
||||
|
||||
|
||||
for (i = 0; new_layout.right_buttons[i] != META_BUTTON_FUNCTION_LAST; i++);
|
||||
for (j = 0; j < i; j++)
|
||||
{
|
||||
@ -1751,7 +1751,7 @@ meta_preference_to_string (MetaPreference pref)
|
||||
|
||||
case META_PREF_RAISE_ON_CLICK:
|
||||
return "RAISE_ON_CLICK";
|
||||
|
||||
|
||||
case META_PREF_THEME:
|
||||
return "THEME";
|
||||
|
||||
@ -1778,7 +1778,7 @@ meta_preference_to_string (MetaPreference pref)
|
||||
|
||||
case META_PREF_AUTO_RAISE:
|
||||
return "AUTO_RAISE";
|
||||
|
||||
|
||||
case META_PREF_AUTO_RAISE_DELAY:
|
||||
return "AUTO_RAISE_DELAY";
|
||||
|
||||
@ -2021,7 +2021,7 @@ meta_prefs_change_workspace_name (int num,
|
||||
{
|
||||
GVariantBuilder builder;
|
||||
int n_workspace_names, i;
|
||||
|
||||
|
||||
g_return_if_fail (num >= 0);
|
||||
|
||||
meta_topic (META_DEBUG_PREFS,
|
||||
@ -2181,7 +2181,7 @@ meta_prefs_get_keybindings ()
|
||||
return g_hash_table_get_values (key_bindings);
|
||||
}
|
||||
|
||||
void
|
||||
void
|
||||
meta_prefs_get_overlay_binding (MetaKeyCombo *combo)
|
||||
{
|
||||
*combo = overlay_key_combo;
|
||||
|
@ -9,11 +9,11 @@
|
||||
* which the rest of the world is allowed to use.)
|
||||
*/
|
||||
|
||||
/*
|
||||
/*
|
||||
* Copyright (C) 2001 Havoc Pennington
|
||||
* Copyright (C) 2003 Rob Adams
|
||||
* Copyright (C) 2004-2006 Elijah Newren
|
||||
*
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 of the
|
||||
@ -23,7 +23,7 @@
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
@ -73,7 +73,7 @@ struct _MetaScreen
|
||||
* any actual clients
|
||||
*/
|
||||
Window no_focus_window;
|
||||
|
||||
|
||||
GList *workspaces;
|
||||
|
||||
MetaStack *stack;
|
||||
@ -110,11 +110,11 @@ struct _MetaScreen
|
||||
MetaScreenCorner starting_corner;
|
||||
guint vertical_workspaces : 1;
|
||||
guint workspace_layout_overridden : 1;
|
||||
|
||||
|
||||
guint keys_grabbed : 1;
|
||||
|
||||
|
||||
int closing;
|
||||
|
||||
|
||||
/* Instead of unmapping withdrawn windows we can leave them mapped
|
||||
* and restack them below a guard window. When using a compositor
|
||||
* this allows us to provide live previews of unmapped windows */
|
||||
|
@ -1,13 +1,13 @@
|
||||
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
|
||||
|
||||
/*
|
||||
/*
|
||||
* Copyright (C) 2001, 2002 Havoc Pennington
|
||||
* Copyright (C) 2002, 2003 Red Hat Inc.
|
||||
* Some ICCCM manager selection code derived from fvwm2,
|
||||
* Copyright (C) 2001 Dominik Vogt, Matthias Clasen, and fvwm2 team
|
||||
* Copyright (C) 2003 Rob Adams
|
||||
* Copyright (C) 2004-2006 Elijah Newren
|
||||
*
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 of the
|
||||
@ -17,7 +17,7 @@
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
@ -267,7 +267,7 @@ set_wm_check_hint (MetaScreen *screen)
|
||||
unsigned long data[1];
|
||||
|
||||
g_return_val_if_fail (screen->display->leader_window != None, 0);
|
||||
|
||||
|
||||
data[0] = screen->display->leader_window;
|
||||
|
||||
XChangeProperty (screen->display->xdisplay, screen->xroot,
|
||||
@ -281,7 +281,7 @@ set_wm_check_hint (MetaScreen *screen)
|
||||
static void
|
||||
unset_wm_check_hint (MetaScreen *screen)
|
||||
{
|
||||
XDeleteProperty (screen->display->xdisplay, screen->xroot,
|
||||
XDeleteProperty (screen->display->xdisplay, screen->xroot,
|
||||
screen->display->atom__NET_SUPPORTING_WM_CHECK);
|
||||
}
|
||||
|
||||
@ -303,7 +303,7 @@ set_supported_hint (MetaScreen *screen)
|
||||
XA_ATOM,
|
||||
32, PropModeReplace,
|
||||
(guchar*) atoms, G_N_ELEMENTS(atoms));
|
||||
|
||||
|
||||
return Success;
|
||||
}
|
||||
|
||||
@ -327,12 +327,12 @@ set_wm_icon_size_hint (MetaScreen *screen)
|
||||
vals[4] = 0;
|
||||
vals[5] = 0;
|
||||
#undef LEGACY_ICON_SIZE
|
||||
|
||||
|
||||
XChangeProperty (screen->display->xdisplay, screen->xroot,
|
||||
screen->display->atom_WM_ICON_SIZE,
|
||||
XA_CARDINAL,
|
||||
32, PropModeReplace, (guchar*) vals, N_VALS);
|
||||
|
||||
|
||||
return Success;
|
||||
#undef N_VALS
|
||||
}
|
||||
@ -411,7 +411,7 @@ reload_monitor_infos (MetaScreen *screen)
|
||||
MetaWorkspace *space = tmp->data;
|
||||
|
||||
meta_workspace_invalidate_work_area (space);
|
||||
|
||||
|
||||
tmp = tmp->next;
|
||||
}
|
||||
|
||||
@ -506,16 +506,16 @@ meta_screen_new (MetaDisplay *display,
|
||||
guint32 manager_timestamp;
|
||||
gulong current_workspace;
|
||||
MetaMonitorManager *manager;
|
||||
|
||||
|
||||
replace_current_wm = meta_get_replace_current_wm ();
|
||||
|
||||
|
||||
/* Only display->name, display->xdisplay, and display->error_traps
|
||||
* can really be used in this function, since normally screens are
|
||||
* created from the MetaDisplay constructor
|
||||
*/
|
||||
|
||||
|
||||
xdisplay = display->xdisplay;
|
||||
|
||||
|
||||
meta_verbose ("Trying screen %d on display '%s'\n",
|
||||
number, display->name);
|
||||
|
||||
@ -532,14 +532,14 @@ meta_screen_new (MetaDisplay *display,
|
||||
}
|
||||
|
||||
sprintf (buf, "WM_S%d", number);
|
||||
wm_sn_atom = XInternAtom (xdisplay, buf, False);
|
||||
|
||||
wm_sn_atom = XInternAtom (xdisplay, buf, False);
|
||||
|
||||
current_wm_sn_owner = XGetSelectionOwner (xdisplay, wm_sn_atom);
|
||||
|
||||
if (current_wm_sn_owner != None)
|
||||
{
|
||||
XSetWindowAttributes attrs;
|
||||
|
||||
|
||||
if (!replace_current_wm)
|
||||
{
|
||||
meta_warning (_("Screen %d on display \"%s\" already has a window manager; try using the --replace option to replace the current window manager.\n"),
|
||||
@ -563,7 +563,7 @@ meta_screen_new (MetaDisplay *display,
|
||||
new_wm_sn_owner = meta_create_offscreen_window (xdisplay, xroot, NoEventMask);
|
||||
|
||||
manager_timestamp = timestamp;
|
||||
|
||||
|
||||
XSetSelectionOwner (xdisplay, wm_sn_atom, new_wm_sn_owner,
|
||||
manager_timestamp);
|
||||
|
||||
@ -573,14 +573,14 @@ meta_screen_new (MetaDisplay *display,
|
||||
number, display->name);
|
||||
|
||||
XDestroyWindow (xdisplay, new_wm_sn_owner);
|
||||
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
||||
{
|
||||
/* Send client message indicating that we are now the WM */
|
||||
XClientMessageEvent ev;
|
||||
|
||||
|
||||
ev.type = ClientMessage;
|
||||
ev.window = xroot;
|
||||
ev.message_type = display->atom_MANAGER;
|
||||
@ -597,7 +597,7 @@ meta_screen_new (MetaDisplay *display,
|
||||
XEvent event;
|
||||
|
||||
/* We sort of block infinitely here which is probably lame. */
|
||||
|
||||
|
||||
meta_verbose ("Waiting for old window manager to exit\n");
|
||||
do
|
||||
{
|
||||
@ -606,7 +606,7 @@ meta_screen_new (MetaDisplay *display,
|
||||
}
|
||||
while (event.type != DestroyNotify);
|
||||
}
|
||||
|
||||
|
||||
/* select our root window events */
|
||||
meta_error_trap_push (display);
|
||||
|
||||
@ -651,13 +651,13 @@ meta_screen_new (MetaDisplay *display,
|
||||
number, display->name);
|
||||
|
||||
XDestroyWindow (xdisplay, new_wm_sn_owner);
|
||||
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
||||
screen = g_object_new (META_TYPE_SCREEN, NULL);
|
||||
screen->closing = 0;
|
||||
|
||||
|
||||
screen->display = display;
|
||||
screen->number = number;
|
||||
screen->screen_name = get_screen_name (display, number);
|
||||
@ -681,8 +681,8 @@ meta_screen_new (MetaDisplay *display,
|
||||
screen->wm_sn_atom = wm_sn_atom;
|
||||
screen->wm_sn_timestamp = manager_timestamp;
|
||||
|
||||
screen->wm_cm_selection_window = meta_create_offscreen_window (xdisplay,
|
||||
xroot,
|
||||
screen->wm_cm_selection_window = meta_create_offscreen_window (xdisplay,
|
||||
xroot,
|
||||
NoEventMask);
|
||||
screen->work_area_later = 0;
|
||||
screen->check_fullscreen_later = 0;
|
||||
@ -699,18 +699,18 @@ meta_screen_new (MetaDisplay *display,
|
||||
|
||||
meta_screen_set_cursor (screen, META_CURSOR_DEFAULT);
|
||||
|
||||
/* Handle creating a no_focus_window for this screen */
|
||||
/* Handle creating a no_focus_window for this screen */
|
||||
screen->no_focus_window =
|
||||
meta_create_offscreen_window (display->xdisplay,
|
||||
screen->xroot,
|
||||
FocusChangeMask|KeyPressMask|KeyReleaseMask);
|
||||
XMapWindow (display->xdisplay, screen->no_focus_window);
|
||||
/* Done with no_focus_window stuff */
|
||||
|
||||
|
||||
set_wm_icon_size_hint (screen);
|
||||
|
||||
|
||||
set_supported_hint (screen);
|
||||
|
||||
|
||||
set_wm_check_hint (screen);
|
||||
|
||||
set_desktop_viewport_hint (screen);
|
||||
@ -729,13 +729,13 @@ meta_screen_new (MetaDisplay *display,
|
||||
(int) current_workspace);
|
||||
else
|
||||
meta_verbose ("No _NET_CURRENT_DESKTOP present\n");
|
||||
|
||||
|
||||
/* Screens must have at least one workspace at all times,
|
||||
* so create that required workspace.
|
||||
*/
|
||||
meta_workspace_activate (meta_workspace_new (screen), timestamp);
|
||||
update_num_workspaces (screen, timestamp);
|
||||
|
||||
|
||||
set_workspace_names (screen);
|
||||
|
||||
screen->keys_grabbed = FALSE;
|
||||
@ -765,10 +765,10 @@ meta_screen_new (MetaDisplay *display,
|
||||
/* Switch to the _NET_CURRENT_DESKTOP workspace */
|
||||
{
|
||||
MetaWorkspace *space;
|
||||
|
||||
|
||||
space = meta_screen_get_workspace_by_index (screen,
|
||||
current_workspace);
|
||||
|
||||
|
||||
if (space != NULL)
|
||||
meta_workspace_activate (space, timestamp);
|
||||
}
|
||||
@ -788,15 +788,15 @@ meta_screen_free (MetaScreen *screen,
|
||||
display = screen->display;
|
||||
|
||||
screen->closing += 1;
|
||||
|
||||
|
||||
meta_display_grab (display);
|
||||
|
||||
meta_compositor_unmanage (screen->display->compositor);
|
||||
|
||||
|
||||
meta_display_unmanage_windows_for_screen (display, screen, timestamp);
|
||||
|
||||
|
||||
meta_prefs_remove_listener (prefs_changed_callback, screen);
|
||||
|
||||
|
||||
meta_screen_ungrab_keys (screen);
|
||||
|
||||
#ifdef HAVE_STARTUP_NOTIFICATION
|
||||
@ -816,7 +816,7 @@ meta_screen_free (MetaScreen *screen,
|
||||
screen->sn_context = NULL;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
meta_ui_free (screen->ui);
|
||||
|
||||
meta_stack_free (screen->stack);
|
||||
@ -832,7 +832,7 @@ meta_screen_free (MetaScreen *screen,
|
||||
|
||||
XDestroyWindow (screen->display->xdisplay,
|
||||
screen->wm_sn_selection_window);
|
||||
|
||||
|
||||
if (screen->work_area_later != 0)
|
||||
meta_later_remove (screen->work_area_later);
|
||||
if (screen->check_fullscreen_later != 0)
|
||||
@ -887,7 +887,7 @@ prefs_changed_callback (MetaPreference pref,
|
||||
gpointer data)
|
||||
{
|
||||
MetaScreen *screen = data;
|
||||
|
||||
|
||||
if ((pref == META_PREF_NUM_WORKSPACES ||
|
||||
pref == META_PREF_DYNAMIC_WORKSPACES) &&
|
||||
!meta_prefs_get_dynamic_workspaces ())
|
||||
@ -895,7 +895,7 @@ prefs_changed_callback (MetaPreference pref,
|
||||
/* GSettings doesn't provide timestamps, but luckily update_num_workspaces
|
||||
* often doesn't need it...
|
||||
*/
|
||||
guint32 timestamp =
|
||||
guint32 timestamp =
|
||||
meta_display_get_current_time_roundtrip (screen->display);
|
||||
update_num_workspaces (screen, timestamp);
|
||||
}
|
||||
@ -917,7 +917,7 @@ get_screen_name (MetaDisplay *display,
|
||||
char *p;
|
||||
char *dname;
|
||||
char *scr;
|
||||
|
||||
|
||||
/* DisplayString gives us a sort of canonical display,
|
||||
* vs. the user-entered name from XDisplayName()
|
||||
*/
|
||||
@ -932,7 +932,7 @@ get_screen_name (MetaDisplay *display,
|
||||
if (p)
|
||||
*p = '\0';
|
||||
}
|
||||
|
||||
|
||||
scr = g_strdup_printf ("%s.%d", dname, number);
|
||||
|
||||
g_free (dname);
|
||||
@ -955,7 +955,7 @@ static void
|
||||
listify_func (gpointer key, gpointer value, gpointer data)
|
||||
{
|
||||
GSList **listp;
|
||||
|
||||
|
||||
listp = data;
|
||||
|
||||
*listp = g_slist_prepend (*listp, value);
|
||||
@ -981,14 +981,14 @@ meta_screen_foreach_window (MetaScreen *screen,
|
||||
/* If we end up doing this often, just keeping a list
|
||||
* of windows might be sensible.
|
||||
*/
|
||||
|
||||
|
||||
winlist = NULL;
|
||||
g_hash_table_foreach (screen->display->xids,
|
||||
listify_func,
|
||||
&winlist);
|
||||
|
||||
|
||||
winlist = g_slist_sort (winlist, ptrcmp);
|
||||
|
||||
|
||||
tmp = winlist;
|
||||
while (tmp != NULL)
|
||||
{
|
||||
@ -1005,7 +1005,7 @@ meta_screen_foreach_window (MetaScreen *screen,
|
||||
!window->override_redirect)
|
||||
(* func) (screen, window, data);
|
||||
}
|
||||
|
||||
|
||||
tmp = tmp->next;
|
||||
}
|
||||
g_slist_free (winlist);
|
||||
@ -1039,7 +1039,7 @@ meta_screen_get_workspace_by_index (MetaScreen *screen,
|
||||
/* should be robust, idx is maybe from an app */
|
||||
if (idx < 0)
|
||||
return NULL;
|
||||
|
||||
|
||||
i = 0;
|
||||
tmp = screen->workspaces;
|
||||
while (tmp != NULL)
|
||||
@ -1258,7 +1258,7 @@ update_num_workspaces (MetaScreen *screen,
|
||||
GList *extras;
|
||||
MetaWorkspace *last_remaining;
|
||||
gboolean need_change_space;
|
||||
|
||||
|
||||
if (meta_prefs_get_dynamic_workspaces ())
|
||||
{
|
||||
int n_items;
|
||||
@ -1301,14 +1301,14 @@ update_num_workspaces (MetaScreen *screen,
|
||||
extras = g_list_prepend (extras, w);
|
||||
else
|
||||
last_remaining = w;
|
||||
|
||||
|
||||
++i;
|
||||
tmp = tmp->next;
|
||||
}
|
||||
old_num = i;
|
||||
|
||||
g_assert (last_remaining);
|
||||
|
||||
|
||||
/* Get rid of the extra workspaces by moving all their windows
|
||||
* to last_remaining, then activating last_remaining if
|
||||
* one of the removed workspaces was active. This will be a bit
|
||||
@ -1321,11 +1321,11 @@ update_num_workspaces (MetaScreen *screen,
|
||||
{
|
||||
MetaWorkspace *w = tmp->data;
|
||||
|
||||
meta_workspace_relocate_windows (w, last_remaining);
|
||||
meta_workspace_relocate_windows (w, last_remaining);
|
||||
|
||||
if (w == screen->active_workspace)
|
||||
need_change_space = TRUE;
|
||||
|
||||
|
||||
tmp = tmp->next;
|
||||
}
|
||||
|
||||
@ -1551,7 +1551,7 @@ meta_screen_get_monitor_for_window (MetaScreen *screen,
|
||||
MetaWindow *window)
|
||||
{
|
||||
MetaRectangle window_rect;
|
||||
|
||||
|
||||
meta_window_get_frame_rect (window, &window_rect);
|
||||
|
||||
return meta_screen_get_monitor_for_rect (screen, &window_rect);
|
||||
@ -1565,7 +1565,7 @@ meta_screen_get_monitor_index_for_rect (MetaScreen *screen,
|
||||
return monitor->number;
|
||||
}
|
||||
|
||||
const MetaMonitorInfo*
|
||||
const MetaMonitorInfo*
|
||||
meta_screen_get_monitor_neighbor (MetaScreen *screen,
|
||||
int which_monitor,
|
||||
MetaScreenDirection direction)
|
||||
@ -1578,23 +1578,23 @@ meta_screen_get_monitor_neighbor (MetaScreen *screen,
|
||||
{
|
||||
current = screen->monitor_infos + i;
|
||||
|
||||
if ((direction == META_SCREEN_RIGHT &&
|
||||
if ((direction == META_SCREEN_RIGHT &&
|
||||
current->rect.x == input->rect.x + input->rect.width &&
|
||||
meta_rectangle_vert_overlap(¤t->rect, &input->rect)) ||
|
||||
(direction == META_SCREEN_LEFT &&
|
||||
(direction == META_SCREEN_LEFT &&
|
||||
input->rect.x == current->rect.x + current->rect.width &&
|
||||
meta_rectangle_vert_overlap(¤t->rect, &input->rect)) ||
|
||||
(direction == META_SCREEN_UP &&
|
||||
(direction == META_SCREEN_UP &&
|
||||
input->rect.y == current->rect.y + current->rect.height &&
|
||||
meta_rectangle_horiz_overlap(¤t->rect, &input->rect)) ||
|
||||
(direction == META_SCREEN_DOWN &&
|
||||
(direction == META_SCREEN_DOWN &&
|
||||
current->rect.y == input->rect.y + input->rect.height &&
|
||||
meta_rectangle_horiz_overlap(¤t->rect, &input->rect)))
|
||||
{
|
||||
return current;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
@ -1634,7 +1634,7 @@ meta_screen_get_natural_monitor_list (MetaScreen *screen,
|
||||
|
||||
while (!g_queue_is_empty (monitor_queue))
|
||||
{
|
||||
current = (const MetaMonitorInfo*)
|
||||
current = (const MetaMonitorInfo*)
|
||||
g_queue_pop_head (monitor_queue);
|
||||
|
||||
(*monitors_list)[cur++] = current->number;
|
||||
@ -1775,10 +1775,10 @@ meta_screen_get_current_monitor (MetaScreen *screen)
|
||||
|
||||
if (screen->n_monitor_infos == 1)
|
||||
return 0;
|
||||
|
||||
|
||||
/* Sadly, we have to do it this way. Yuck.
|
||||
*/
|
||||
|
||||
|
||||
if (screen->display->monitor_cache_invalidated)
|
||||
{
|
||||
int x, y;
|
||||
@ -1858,7 +1858,7 @@ meta_screen_update_workspace_layout (MetaScreen *screen)
|
||||
|
||||
if (screen->workspace_layout_overridden)
|
||||
return;
|
||||
|
||||
|
||||
list = NULL;
|
||||
n_items = 0;
|
||||
|
||||
@ -1870,7 +1870,7 @@ meta_screen_update_workspace_layout (MetaScreen *screen)
|
||||
if (n_items == 3 || n_items == 4)
|
||||
{
|
||||
int cols, rows;
|
||||
|
||||
|
||||
switch (list[0])
|
||||
{
|
||||
case _NET_WM_ORIENTATION_HORZ:
|
||||
@ -1897,7 +1897,7 @@ meta_screen_update_workspace_layout (MetaScreen *screen)
|
||||
screen->rows_of_workspaces = rows;
|
||||
else
|
||||
screen->rows_of_workspaces = -1;
|
||||
|
||||
|
||||
if (cols > 0)
|
||||
screen->columns_of_workspaces = cols;
|
||||
else
|
||||
@ -2007,10 +2007,10 @@ set_workspace_names (MetaScreen *screen)
|
||||
strlen (name) + 1);
|
||||
else
|
||||
g_string_append_len (flattened, "", 1);
|
||||
|
||||
|
||||
++i;
|
||||
}
|
||||
|
||||
|
||||
meta_error_trap_push (screen->display);
|
||||
XChangeProperty (screen->display->xdisplay,
|
||||
screen->xroot,
|
||||
@ -2019,7 +2019,7 @@ set_workspace_names (MetaScreen *screen)
|
||||
8, PropModeReplace,
|
||||
(unsigned char *)flattened->str, flattened->len);
|
||||
meta_error_trap_pop (screen->display);
|
||||
|
||||
|
||||
g_string_free (flattened, TRUE);
|
||||
}
|
||||
|
||||
@ -2033,7 +2033,7 @@ meta_screen_update_workspace_names (MetaScreen *screen)
|
||||
/* this updates names in prefs when the root window property changes,
|
||||
* iff the new property contents don't match what's already in prefs
|
||||
*/
|
||||
|
||||
|
||||
names = NULL;
|
||||
n_names = 0;
|
||||
if (!meta_prop_get_utf8_list (screen->display,
|
||||
@ -2053,10 +2053,10 @@ meta_screen_update_workspace_names (MetaScreen *screen)
|
||||
"Setting workspace %d name to \"%s\" due to _NET_DESKTOP_NAMES change\n",
|
||||
i, names[i] ? names[i] : "null");
|
||||
meta_prefs_change_workspace_name (i, names[i]);
|
||||
|
||||
|
||||
++i;
|
||||
}
|
||||
|
||||
|
||||
g_strfreev (names);
|
||||
}
|
||||
|
||||
@ -2073,7 +2073,7 @@ meta_create_offscreen_window (Display *xdisplay,
|
||||
*/
|
||||
attrs.override_redirect = True;
|
||||
attrs.event_mask = valuemask;
|
||||
|
||||
|
||||
return XCreateWindow (xdisplay,
|
||||
parent,
|
||||
-100, -100, 1, 1,
|
||||
@ -2092,12 +2092,12 @@ set_work_area_hint (MetaScreen *screen)
|
||||
GList *tmp_list;
|
||||
unsigned long *data, *tmp;
|
||||
MetaRectangle area;
|
||||
|
||||
|
||||
num_workspaces = meta_screen_get_n_workspaces (screen);
|
||||
data = g_new (unsigned long, num_workspaces * 4);
|
||||
tmp_list = screen->workspaces;
|
||||
tmp = data;
|
||||
|
||||
|
||||
while (tmp_list != NULL)
|
||||
{
|
||||
MetaWorkspace *workspace = tmp_list->data;
|
||||
@ -2112,10 +2112,10 @@ set_work_area_hint (MetaScreen *screen)
|
||||
|
||||
tmp += 4;
|
||||
}
|
||||
|
||||
|
||||
tmp_list = tmp_list->next;
|
||||
}
|
||||
|
||||
|
||||
meta_error_trap_push (screen->display);
|
||||
XChangeProperty (screen->display->xdisplay, screen->xroot,
|
||||
screen->display->atom__NET_WORKAREA,
|
||||
@ -2132,11 +2132,11 @@ set_work_area_later_func (MetaScreen *screen)
|
||||
{
|
||||
meta_topic (META_DEBUG_WORKAREA,
|
||||
"Running work area hint computation function\n");
|
||||
|
||||
|
||||
screen->work_area_later = 0;
|
||||
|
||||
|
||||
set_work_area_hint (screen);
|
||||
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
@ -2188,7 +2188,7 @@ meta_screen_calc_workspace_layout (MetaScreen *screen,
|
||||
int *grid;
|
||||
int i, r, c;
|
||||
int current_row, current_col;
|
||||
|
||||
|
||||
rows = screen->rows_of_workspaces;
|
||||
cols = screen->columns_of_workspaces;
|
||||
if (rows <= 0 && cols <= 0)
|
||||
@ -2206,58 +2206,58 @@ meta_screen_calc_workspace_layout (MetaScreen *screen,
|
||||
cols = 1;
|
||||
|
||||
g_assert (rows != 0 && cols != 0);
|
||||
|
||||
|
||||
grid_area = rows * cols;
|
||||
|
||||
|
||||
meta_verbose ("Getting layout rows = %d cols = %d current = %d "
|
||||
"num_spaces = %d vertical = %s corner = %s\n",
|
||||
rows, cols, current_space, num_workspaces,
|
||||
screen->vertical_workspaces ? "(true)" : "(false)",
|
||||
meta_screen_corner_to_string (screen->starting_corner));
|
||||
|
||||
/* ok, we want to setup the distances in the workspace array to go
|
||||
* in each direction. Remember, there are many ways that a workspace
|
||||
* array can be setup.
|
||||
* see http://www.freedesktop.org/standards/wm-spec/1.2/html/x109.html
|
||||
* and look at the _NET_DESKTOP_LAYOUT section for details.
|
||||
|
||||
/* ok, we want to setup the distances in the workspace array to go
|
||||
* in each direction. Remember, there are many ways that a workspace
|
||||
* array can be setup.
|
||||
* see http://www.freedesktop.org/standards/wm-spec/1.2/html/x109.html
|
||||
* and look at the _NET_DESKTOP_LAYOUT section for details.
|
||||
* For instance:
|
||||
*/
|
||||
/* starting_corner = META_SCREEN_TOPLEFT
|
||||
/* starting_corner = META_SCREEN_TOPLEFT
|
||||
* vertical_workspaces = 0 vertical_workspaces=1
|
||||
* 1234 1357
|
||||
* 5678 2468
|
||||
*
|
||||
* starting_corner = META_SCREEN_TOPRIGHT
|
||||
* 1234 1357
|
||||
* 5678 2468
|
||||
*
|
||||
* starting_corner = META_SCREEN_TOPRIGHT
|
||||
* vertical_workspaces = 0 vertical_workspaces=1
|
||||
* 4321 7531
|
||||
* 8765 8642
|
||||
*
|
||||
* starting_corner = META_SCREEN_BOTTOMLEFT
|
||||
* 4321 7531
|
||||
* 8765 8642
|
||||
*
|
||||
* starting_corner = META_SCREEN_BOTTOMLEFT
|
||||
* vertical_workspaces = 0 vertical_workspaces=1
|
||||
* 5678 2468
|
||||
* 1234 1357
|
||||
*
|
||||
* starting_corner = META_SCREEN_BOTTOMRIGHT
|
||||
* 5678 2468
|
||||
* 1234 1357
|
||||
*
|
||||
* starting_corner = META_SCREEN_BOTTOMRIGHT
|
||||
* vertical_workspaces = 0 vertical_workspaces=1
|
||||
* 8765 8642
|
||||
* 4321 7531
|
||||
* 8765 8642
|
||||
* 4321 7531
|
||||
*
|
||||
*/
|
||||
/* keep in mind that we could have a ragged layout, e.g. the "8"
|
||||
* in the above grids could be missing
|
||||
*/
|
||||
|
||||
|
||||
|
||||
grid = g_new (int, grid_area);
|
||||
|
||||
current_row = -1;
|
||||
current_col = -1;
|
||||
i = 0;
|
||||
|
||||
switch (screen->starting_corner)
|
||||
|
||||
switch (screen->starting_corner)
|
||||
{
|
||||
case META_SCREEN_TOPLEFT:
|
||||
if (screen->vertical_workspaces)
|
||||
if (screen->vertical_workspaces)
|
||||
{
|
||||
c = 0;
|
||||
while (c < cols)
|
||||
@ -2289,7 +2289,7 @@ meta_screen_calc_workspace_layout (MetaScreen *screen,
|
||||
}
|
||||
break;
|
||||
case META_SCREEN_TOPRIGHT:
|
||||
if (screen->vertical_workspaces)
|
||||
if (screen->vertical_workspaces)
|
||||
{
|
||||
c = cols - 1;
|
||||
while (c >= 0)
|
||||
@ -2321,7 +2321,7 @@ meta_screen_calc_workspace_layout (MetaScreen *screen,
|
||||
}
|
||||
break;
|
||||
case META_SCREEN_BOTTOMLEFT:
|
||||
if (screen->vertical_workspaces)
|
||||
if (screen->vertical_workspaces)
|
||||
{
|
||||
c = 0;
|
||||
while (c < cols)
|
||||
@ -2353,7 +2353,7 @@ meta_screen_calc_workspace_layout (MetaScreen *screen,
|
||||
}
|
||||
break;
|
||||
case META_SCREEN_BOTTOMRIGHT:
|
||||
if (screen->vertical_workspaces)
|
||||
if (screen->vertical_workspaces)
|
||||
{
|
||||
c = cols - 1;
|
||||
while (c >= 0)
|
||||
@ -2384,12 +2384,12 @@ meta_screen_calc_workspace_layout (MetaScreen *screen,
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (i != grid_area)
|
||||
meta_bug ("did not fill in the whole workspace grid in %s (%d filled)\n",
|
||||
G_STRFUNC, i);
|
||||
|
||||
|
||||
current_row = 0;
|
||||
current_col = 0;
|
||||
r = 0;
|
||||
@ -2525,7 +2525,7 @@ meta_screen_update_showing_desktop_hint (MetaScreen *screen)
|
||||
unsigned long data[1];
|
||||
|
||||
data[0] = screen->active_workspace->showing_desktop ? 1 : 0;
|
||||
|
||||
|
||||
meta_error_trap_push (screen->display);
|
||||
XChangeProperty (screen->display->xdisplay, screen->xroot,
|
||||
screen->display->atom__NET_SHOWING_DESKTOP,
|
||||
@ -2553,7 +2553,7 @@ queue_windows_showing (MetaScreen *screen)
|
||||
|
||||
if (w->screen == screen)
|
||||
meta_window_queue (w, META_QUEUE_CALC_SHOWING);
|
||||
|
||||
|
||||
tmp = tmp->next;
|
||||
}
|
||||
|
||||
@ -2568,32 +2568,32 @@ meta_screen_minimize_all_on_active_workspace_except (MetaScreen *screen,
|
||||
GList *tmp;
|
||||
|
||||
windows = screen->active_workspace->windows;
|
||||
|
||||
|
||||
tmp = windows;
|
||||
while (tmp != NULL)
|
||||
{
|
||||
MetaWindow *w = tmp->data;
|
||||
|
||||
|
||||
if (w->screen == screen &&
|
||||
w->has_minimize_func &&
|
||||
w != keep)
|
||||
meta_window_minimize (w);
|
||||
|
||||
|
||||
tmp = tmp->next;
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
meta_screen_show_desktop (MetaScreen *screen,
|
||||
meta_screen_show_desktop (MetaScreen *screen,
|
||||
guint32 timestamp)
|
||||
{
|
||||
GList *windows;
|
||||
|
||||
if (screen->active_workspace->showing_desktop)
|
||||
return;
|
||||
|
||||
|
||||
screen->active_workspace->showing_desktop = TRUE;
|
||||
|
||||
|
||||
queue_windows_showing (screen);
|
||||
|
||||
/* Focus the most recently used META_WINDOW_DESKTOP window, if there is one;
|
||||
@ -2603,18 +2603,18 @@ meta_screen_show_desktop (MetaScreen *screen,
|
||||
while (windows != NULL)
|
||||
{
|
||||
MetaWindow *w = windows->data;
|
||||
|
||||
if (w->screen == screen &&
|
||||
|
||||
if (w->screen == screen &&
|
||||
w->type == META_WINDOW_DESKTOP)
|
||||
{
|
||||
meta_window_focus (w, timestamp);
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
windows = windows->next;
|
||||
}
|
||||
|
||||
|
||||
|
||||
meta_screen_update_showing_desktop_hint (screen);
|
||||
}
|
||||
|
||||
@ -2685,7 +2685,7 @@ remove_sequence (MetaScreen *screen,
|
||||
meta_topic (META_DEBUG_STARTUP,
|
||||
"Removing sequence %s\n",
|
||||
sn_startup_sequence_get_id (sequence));
|
||||
|
||||
|
||||
screen->startup_sequences = g_slist_remove (screen->startup_sequences,
|
||||
sequence);
|
||||
|
||||
@ -2722,7 +2722,7 @@ collect_timed_out_foreach (void *element,
|
||||
SnStartupSequence *sequence = element;
|
||||
long tv_sec, tv_usec;
|
||||
double elapsed;
|
||||
|
||||
|
||||
sn_startup_sequence_get_last_active_time (sequence, &tv_sec, &tv_usec);
|
||||
|
||||
elapsed =
|
||||
@ -2733,7 +2733,7 @@ collect_timed_out_foreach (void *element,
|
||||
"Sequence used %g seconds vs. %g max: %s\n",
|
||||
elapsed, (double) STARTUP_TIMEOUT,
|
||||
sn_startup_sequence_get_id (sequence));
|
||||
|
||||
|
||||
if (elapsed > STARTUP_TIMEOUT)
|
||||
ctod->list = g_slist_prepend (ctod->list, sequence);
|
||||
}
|
||||
@ -2744,7 +2744,7 @@ startup_sequence_timeout (void *data)
|
||||
MetaScreen *screen = data;
|
||||
CollectTimedOutData ctod;
|
||||
GSList *tmp;
|
||||
|
||||
|
||||
ctod.list = NULL;
|
||||
g_get_current_time (&ctod.now);
|
||||
g_slist_foreach (screen->startup_sequences,
|
||||
@ -2759,14 +2759,14 @@ startup_sequence_timeout (void *data)
|
||||
meta_topic (META_DEBUG_STARTUP,
|
||||
"Timed out sequence %s\n",
|
||||
sn_startup_sequence_get_id (sequence));
|
||||
|
||||
|
||||
sn_startup_sequence_complete (sequence);
|
||||
|
||||
|
||||
tmp = tmp->next;
|
||||
}
|
||||
|
||||
g_slist_free (ctod.list);
|
||||
|
||||
|
||||
if (screen->startup_sequences != NULL)
|
||||
{
|
||||
return TRUE;
|
||||
@ -2785,7 +2785,7 @@ meta_screen_sn_event (SnMonitorEvent *event,
|
||||
{
|
||||
MetaScreen *screen;
|
||||
SnStartupSequence *sequence;
|
||||
|
||||
|
||||
screen = user_data;
|
||||
|
||||
sequence = sn_monitor_event_get_startup_sequence (event);
|
||||
@ -2799,7 +2799,7 @@ meta_screen_sn_event (SnMonitorEvent *event,
|
||||
const char *wmclass;
|
||||
|
||||
wmclass = sn_startup_sequence_get_wmclass (sequence);
|
||||
|
||||
|
||||
meta_topic (META_DEBUG_STARTUP,
|
||||
"Received startup initiated for %s wmclass %s\n",
|
||||
sn_startup_sequence_get_id (sequence),
|
||||
@ -2865,7 +2865,7 @@ meta_screen_apply_startup_properties (MetaScreen *screen,
|
||||
const char *startup_id;
|
||||
GSList *tmp;
|
||||
SnStartupSequence *sequence;
|
||||
|
||||
|
||||
/* Does the window have a startup ID stored? */
|
||||
startup_id = meta_window_get_startup_id (window);
|
||||
|
||||
@ -2873,7 +2873,7 @@ meta_screen_apply_startup_properties (MetaScreen *screen,
|
||||
"Applying startup props to %s id \"%s\"\n",
|
||||
window->desc,
|
||||
startup_id ? startup_id : "(none)");
|
||||
|
||||
|
||||
sequence = NULL;
|
||||
if (startup_id == NULL)
|
||||
{
|
||||
@ -2904,11 +2904,11 @@ meta_screen_apply_startup_properties (MetaScreen *screen,
|
||||
"Ending legacy sequence %s due to window %s\n",
|
||||
sn_startup_sequence_get_id (sequence),
|
||||
window->desc);
|
||||
|
||||
|
||||
sn_startup_sequence_complete (sequence);
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
tmp = tmp->next;
|
||||
}
|
||||
}
|
||||
@ -2916,7 +2916,7 @@ meta_screen_apply_startup_properties (MetaScreen *screen,
|
||||
/* Still no startup ID? Bail. */
|
||||
if (startup_id == NULL)
|
||||
return FALSE;
|
||||
|
||||
|
||||
/* We might get this far and not know the sequence ID (if the window
|
||||
* already had a startup ID stored), so let's look for one if we don't
|
||||
* already know it.
|
||||
@ -2927,15 +2927,15 @@ meta_screen_apply_startup_properties (MetaScreen *screen,
|
||||
while (tmp != NULL)
|
||||
{
|
||||
const char *id;
|
||||
|
||||
|
||||
id = sn_startup_sequence_get_id (tmp->data);
|
||||
|
||||
|
||||
if (strcmp (id, startup_id) == 0)
|
||||
{
|
||||
sequence = tmp->data;
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
tmp = tmp->next;
|
||||
}
|
||||
}
|
||||
@ -2943,7 +2943,7 @@ meta_screen_apply_startup_properties (MetaScreen *screen,
|
||||
if (sequence != NULL)
|
||||
{
|
||||
gboolean changed_something = FALSE;
|
||||
|
||||
|
||||
meta_topic (META_DEBUG_STARTUP,
|
||||
"Found startup sequence for window %s ID \"%s\"\n",
|
||||
window->desc, startup_id);
|
||||
@ -2956,7 +2956,7 @@ meta_screen_apply_startup_properties (MetaScreen *screen,
|
||||
meta_topic (META_DEBUG_STARTUP,
|
||||
"Setting initial window workspace to %d based on startup info\n",
|
||||
space);
|
||||
|
||||
|
||||
window->initial_workspace_set = TRUE;
|
||||
window->initial_workspace = space;
|
||||
changed_something = TRUE;
|
||||
@ -2969,7 +2969,7 @@ meta_screen_apply_startup_properties (MetaScreen *screen,
|
||||
meta_topic (META_DEBUG_STARTUP,
|
||||
"Setting initial window timestamp to %u based on startup info\n",
|
||||
timestamp);
|
||||
|
||||
|
||||
window->initial_timestamp_set = TRUE;
|
||||
window->initial_timestamp = timestamp;
|
||||
changed_something = TRUE;
|
||||
@ -2983,7 +2983,7 @@ meta_screen_apply_startup_properties (MetaScreen *screen,
|
||||
"Did not find startup sequence for window %s ID \"%s\"\n",
|
||||
window->desc, startup_id);
|
||||
}
|
||||
|
||||
|
||||
#endif /* HAVE_STARTUP_NOTIFICATION */
|
||||
|
||||
return FALSE;
|
||||
@ -2998,10 +2998,10 @@ meta_screen_get_screen_number (MetaScreen *screen)
|
||||
/**
|
||||
* meta_screen_get_display:
|
||||
* @screen: A #MetaScreen
|
||||
*
|
||||
*
|
||||
* Retrieve the display associated with screen.
|
||||
*
|
||||
* Returns: (transfer none): Display
|
||||
* Returns: (transfer none): Display
|
||||
*/
|
||||
MetaDisplay *
|
||||
meta_screen_get_display (MetaScreen *screen)
|
||||
@ -3028,7 +3028,7 @@ meta_screen_get_xroot (MetaScreen *screen)
|
||||
*
|
||||
* Retrieve the size of the screen.
|
||||
*/
|
||||
void
|
||||
void
|
||||
meta_screen_get_size (MetaScreen *screen,
|
||||
int *width,
|
||||
int *height)
|
||||
@ -3052,7 +3052,7 @@ meta_screen_set_cm_selection (MetaScreen *screen)
|
||||
g_snprintf (selection, sizeof(selection), "_NET_WM_CM_S%d", screen->number);
|
||||
meta_verbose ("Setting selection: %s\n", selection);
|
||||
a = XInternAtom (screen->display->xdisplay, selection, FALSE);
|
||||
XSetSelectionOwner (screen->display->xdisplay, a,
|
||||
XSetSelectionOwner (screen->display->xdisplay, a,
|
||||
screen->wm_cm_selection_window, screen->wm_cm_timestamp);
|
||||
}
|
||||
|
||||
@ -3141,11 +3141,11 @@ meta_screen_set_active_workspace_hint (MetaScreen *screen)
|
||||
*/
|
||||
if (screen->closing > 0)
|
||||
return;
|
||||
|
||||
|
||||
data[0] = meta_workspace_index (screen->active_workspace);
|
||||
|
||||
meta_verbose ("Setting _NET_CURRENT_DESKTOP to %lu\n", data[0]);
|
||||
|
||||
|
||||
meta_error_trap_push (screen->display);
|
||||
XChangeProperty (screen->display->xdisplay, screen->xroot,
|
||||
screen->display->atom__NET_CURRENT_DESKTOP,
|
||||
|
@ -921,7 +921,7 @@ resync_verified_stack_with_xserver_stack (MetaStackTracker *tracker)
|
||||
MetaStackWindow new;
|
||||
MetaStackWindow *expected;
|
||||
int expected_index;
|
||||
|
||||
|
||||
/* If the current window corresponds to a window that's not
|
||||
* in xserver_stack any more then the least disruptive thing
|
||||
* we can do is to simply remove it and take another look at
|
||||
|
192
src/core/stack.c
192
src/core/stack.c
@ -5,12 +5,12 @@
|
||||
* @short_description: Which windows cover which other windows
|
||||
*/
|
||||
|
||||
/*
|
||||
/*
|
||||
* Copyright (C) 2001 Havoc Pennington
|
||||
* Copyright (C) 2002, 2003 Red Hat, Inc.
|
||||
* Copyright (C) 2004 Rob Adams
|
||||
* Copyright (C) 2004, 2005 Elijah Newren
|
||||
*
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 of the
|
||||
@ -20,7 +20,7 @@
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
@ -67,7 +67,7 @@ MetaStack*
|
||||
meta_stack_new (MetaScreen *screen)
|
||||
{
|
||||
MetaStack *stack;
|
||||
|
||||
|
||||
stack = g_new (MetaStack, 1);
|
||||
|
||||
stack->screen = screen;
|
||||
@ -85,7 +85,7 @@ meta_stack_new (MetaScreen *screen)
|
||||
stack->need_resort = FALSE;
|
||||
stack->need_relayer = FALSE;
|
||||
stack->need_constrain = FALSE;
|
||||
|
||||
|
||||
return stack;
|
||||
}
|
||||
|
||||
@ -107,7 +107,7 @@ meta_stack_free (MetaStack *stack)
|
||||
|
||||
if (stack->last_all_root_children_stacked)
|
||||
free_last_all_root_children_stacked_cache (stack);
|
||||
|
||||
|
||||
g_free (stack);
|
||||
}
|
||||
|
||||
@ -119,7 +119,7 @@ meta_stack_add (MetaStack *stack,
|
||||
|
||||
if (window->stack_position >= 0)
|
||||
meta_bug ("Window %s had stack position already\n", window->desc);
|
||||
|
||||
|
||||
stack->added = g_list_prepend (stack->added, window);
|
||||
|
||||
window->stack_position = stack->n_positions;
|
||||
@ -127,7 +127,7 @@ meta_stack_add (MetaStack *stack,
|
||||
meta_topic (META_DEBUG_STACK,
|
||||
"Window %s has stack_position initialized to %d\n",
|
||||
window->desc, window->stack_position);
|
||||
|
||||
|
||||
stack_sync_to_xserver (stack);
|
||||
meta_stack_update_window_tile_matches (stack, window->screen->active_workspace);
|
||||
}
|
||||
@ -148,7 +148,7 @@ meta_stack_remove (MetaStack *stack,
|
||||
meta_window_set_stack_position_no_sync (window,
|
||||
stack->n_positions - 1);
|
||||
window->stack_position = -1;
|
||||
stack->n_positions -= 1;
|
||||
stack->n_positions -= 1;
|
||||
|
||||
/* We don't know if it's been moved from "added" to "stack" yet */
|
||||
stack->added = g_list_remove (stack->added, window);
|
||||
@ -163,7 +163,7 @@ meta_stack_remove (MetaStack *stack,
|
||||
if (window->frame)
|
||||
stack->removed = g_list_prepend (stack->removed,
|
||||
GUINT_TO_POINTER (window->frame->xwindow));
|
||||
|
||||
|
||||
stack_sync_to_xserver (stack);
|
||||
meta_stack_update_window_tile_matches (stack, window->screen->active_workspace);
|
||||
}
|
||||
@ -173,7 +173,7 @@ meta_stack_update_layer (MetaStack *stack,
|
||||
MetaWindow *window)
|
||||
{
|
||||
stack->need_relayer = TRUE;
|
||||
|
||||
|
||||
stack_sync_to_xserver (stack);
|
||||
meta_stack_update_window_tile_matches (stack, window->screen->active_workspace);
|
||||
}
|
||||
@ -183,7 +183,7 @@ meta_stack_update_transient (MetaStack *stack,
|
||||
MetaWindow *window)
|
||||
{
|
||||
stack->need_constrain = TRUE;
|
||||
|
||||
|
||||
stack_sync_to_xserver (stack);
|
||||
meta_stack_update_window_tile_matches (stack, window->screen->active_workspace);
|
||||
}
|
||||
@ -240,7 +240,7 @@ meta_stack_lower (MetaStack *stack,
|
||||
return;
|
||||
|
||||
meta_window_set_stack_position_no_sync (window, min_stack_position);
|
||||
|
||||
|
||||
stack_sync_to_xserver (stack);
|
||||
meta_stack_update_window_tile_matches (stack, window->screen->active_workspace);
|
||||
}
|
||||
@ -255,7 +255,7 @@ void
|
||||
meta_stack_thaw (MetaStack *stack)
|
||||
{
|
||||
g_return_if_fail (stack->freeze_count > 0);
|
||||
|
||||
|
||||
stack->freeze_count -= 1;
|
||||
stack_sync_to_xserver (stack);
|
||||
meta_stack_update_window_tile_matches (stack, NULL);
|
||||
@ -333,7 +333,7 @@ get_standalone_layer (MetaWindow *window)
|
||||
case META_WINDOW_OVERRIDE_OTHER:
|
||||
layer = META_LAYER_OVERRIDE_REDIRECT;
|
||||
break;
|
||||
default:
|
||||
default:
|
||||
meta_window_foreach_transient (window,
|
||||
is_focused_foreach,
|
||||
&focused_transient);
|
||||
@ -369,16 +369,16 @@ get_maximum_layer_in_group (MetaWindow *window)
|
||||
GSList *tmp;
|
||||
MetaStackLayer max;
|
||||
MetaStackLayer layer;
|
||||
|
||||
|
||||
max = META_LAYER_DESKTOP;
|
||||
|
||||
|
||||
group = meta_window_get_group (window);
|
||||
|
||||
if (group != NULL)
|
||||
members = meta_group_list_windows (group);
|
||||
else
|
||||
members = NULL;
|
||||
|
||||
|
||||
tmp = members;
|
||||
while (tmp != NULL)
|
||||
{
|
||||
@ -390,12 +390,12 @@ get_maximum_layer_in_group (MetaWindow *window)
|
||||
if (layer > max)
|
||||
max = layer;
|
||||
}
|
||||
|
||||
|
||||
tmp = tmp->next;
|
||||
}
|
||||
|
||||
g_slist_free (members);
|
||||
|
||||
|
||||
return max;
|
||||
}
|
||||
|
||||
@ -405,7 +405,7 @@ compute_layer (MetaWindow *window)
|
||||
MetaStackLayer old_layer = window->layer;
|
||||
|
||||
window->layer = get_standalone_layer (window);
|
||||
|
||||
|
||||
/* We can only do promotion-due-to-group for dialogs and other
|
||||
* transients, or weird stuff happens like the desktop window and
|
||||
* nautilus windows getting in the same layer, or all gnome-terminal
|
||||
@ -422,11 +422,11 @@ compute_layer (MetaWindow *window)
|
||||
* and a dialog transient for the normal window; you don't want the dialog
|
||||
* above the dock if it wouldn't normally be.
|
||||
*/
|
||||
|
||||
|
||||
MetaStackLayer group_max;
|
||||
|
||||
|
||||
group_max = get_maximum_layer_in_group (window);
|
||||
|
||||
|
||||
if (group_max > window->layer)
|
||||
{
|
||||
meta_topic (META_DEBUG_STACK,
|
||||
@ -467,10 +467,10 @@ compare_window_position (void *a,
|
||||
else
|
||||
return 0; /* not reached */
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Stacking constraints
|
||||
*
|
||||
*
|
||||
* Assume constraints of the form "AB" meaning "window A must be
|
||||
* below window B"
|
||||
*
|
||||
@ -487,14 +487,14 @@ compare_window_position (void *a,
|
||||
* apply BC: ABC
|
||||
*
|
||||
* but apply constraints in the wrong order and it breaks:
|
||||
*
|
||||
*
|
||||
* start: BCA
|
||||
* apply BC: BCA
|
||||
* apply AB: CAB
|
||||
*
|
||||
* We make a directed graph of the constraints by linking
|
||||
* from "above windows" to "below windows as follows:
|
||||
*
|
||||
*
|
||||
* AB -> BC -> CD
|
||||
* \
|
||||
* CE
|
||||
@ -519,7 +519,7 @@ struct Constraint
|
||||
|
||||
/* used to create the graph. */
|
||||
GSList *next_nodes;
|
||||
|
||||
|
||||
/* constraint has been applied, used
|
||||
* to detect cycles.
|
||||
*/
|
||||
@ -547,7 +547,7 @@ add_constraint (Constraint **constraints,
|
||||
Constraint *c;
|
||||
|
||||
g_assert (above->screen == below->screen);
|
||||
|
||||
|
||||
/* check if constraint is a duplicate */
|
||||
c = constraints[below->stack_position];
|
||||
while (c != NULL)
|
||||
@ -574,7 +574,7 @@ create_constraints (Constraint **constraints,
|
||||
GList *windows)
|
||||
{
|
||||
GList *tmp;
|
||||
|
||||
|
||||
tmp = windows;
|
||||
while (tmp != NULL)
|
||||
{
|
||||
@ -587,7 +587,7 @@ create_constraints (Constraint **constraints,
|
||||
tmp = tmp->next;
|
||||
continue;
|
||||
}
|
||||
|
||||
|
||||
if (WINDOW_TRANSIENT_FOR_WHOLE_GROUP (w))
|
||||
{
|
||||
GSList *group_windows;
|
||||
@ -600,9 +600,9 @@ create_constraints (Constraint **constraints,
|
||||
group_windows = meta_group_list_windows (group);
|
||||
else
|
||||
group_windows = NULL;
|
||||
|
||||
|
||||
tmp2 = group_windows;
|
||||
|
||||
|
||||
while (tmp2 != NULL)
|
||||
{
|
||||
MetaWindow *group_window = tmp2->data;
|
||||
@ -614,7 +614,7 @@ create_constraints (Constraint **constraints,
|
||||
tmp2 = tmp2->next;
|
||||
continue;
|
||||
}
|
||||
|
||||
|
||||
#if 0
|
||||
/* old way of doing it */
|
||||
if (!(meta_window_is_ancestor_of_transient (w, group_window)) &&
|
||||
@ -630,7 +630,7 @@ create_constraints (Constraint **constraints,
|
||||
w->desc, group_window->desc);
|
||||
add_constraint (constraints, w, group_window);
|
||||
}
|
||||
|
||||
|
||||
tmp2 = tmp2->next;
|
||||
}
|
||||
|
||||
@ -640,7 +640,7 @@ create_constraints (Constraint **constraints,
|
||||
!w->transient_parent_is_root_window)
|
||||
{
|
||||
MetaWindow *parent;
|
||||
|
||||
|
||||
parent =
|
||||
meta_display_lookup_x_window (w->display, w->xtransient_for);
|
||||
|
||||
@ -652,7 +652,7 @@ create_constraints (Constraint **constraints,
|
||||
add_constraint (constraints, w, parent);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
tmp = tmp->next;
|
||||
}
|
||||
}
|
||||
@ -671,12 +671,12 @@ graph_constraints (Constraint **constraints,
|
||||
/* If we have "A below B" and "B below C" then AB -> BC so we
|
||||
* add BC to next_nodes in AB.
|
||||
*/
|
||||
|
||||
|
||||
c = constraints[i];
|
||||
while (c != NULL)
|
||||
{
|
||||
Constraint *n;
|
||||
|
||||
|
||||
g_assert (c->below->stack_position == i);
|
||||
|
||||
/* Constraints where ->above is below are our
|
||||
@ -689,10 +689,10 @@ graph_constraints (Constraint **constraints,
|
||||
n);
|
||||
/* c is a previous node of n */
|
||||
n->has_prev = TRUE;
|
||||
|
||||
|
||||
n = n->next;
|
||||
}
|
||||
|
||||
|
||||
c = c->next;
|
||||
}
|
||||
|
||||
@ -710,16 +710,16 @@ free_constraints (Constraint **constraints,
|
||||
while (i < n_constraints)
|
||||
{
|
||||
Constraint *c;
|
||||
|
||||
|
||||
c = constraints[i];
|
||||
while (c != NULL)
|
||||
{
|
||||
Constraint *next = c->next;
|
||||
|
||||
|
||||
g_slist_free (c->next_nodes);
|
||||
|
||||
g_free (c);
|
||||
|
||||
|
||||
c = next;
|
||||
}
|
||||
|
||||
@ -730,7 +730,7 @@ free_constraints (Constraint **constraints,
|
||||
static void
|
||||
ensure_above (MetaWindow *above,
|
||||
MetaWindow *below)
|
||||
{
|
||||
{
|
||||
if (WINDOW_HAS_TRANSIENT_TYPE(above) &&
|
||||
above->layer < below->layer)
|
||||
{
|
||||
@ -758,10 +758,10 @@ traverse_constraint (Constraint *c)
|
||||
|
||||
if (c->applied)
|
||||
return;
|
||||
|
||||
|
||||
ensure_above (c->above, c->below);
|
||||
c->applied = TRUE;
|
||||
|
||||
|
||||
tmp = c->next_nodes;
|
||||
while (tmp != NULL)
|
||||
{
|
||||
@ -785,13 +785,13 @@ apply_constraints (Constraint **constraints,
|
||||
while (i < n_constraints)
|
||||
{
|
||||
Constraint *c;
|
||||
|
||||
|
||||
c = constraints[i];
|
||||
while (c != NULL)
|
||||
{
|
||||
if (!c->has_prev)
|
||||
heads = g_slist_prepend (heads, c);
|
||||
|
||||
|
||||
c = c->next;
|
||||
}
|
||||
|
||||
@ -805,7 +805,7 @@ apply_constraints (Constraint **constraints,
|
||||
Constraint *c = tmp->data;
|
||||
|
||||
traverse_constraint (c);
|
||||
|
||||
|
||||
tmp = tmp->next;
|
||||
}
|
||||
|
||||
@ -826,7 +826,7 @@ stack_do_window_deletions (MetaStack *stack)
|
||||
*/
|
||||
GList *tmp;
|
||||
int i;
|
||||
|
||||
|
||||
tmp = stack->removed;
|
||||
while (tmp != NULL)
|
||||
{
|
||||
@ -840,7 +840,7 @@ stack_do_window_deletions (MetaStack *stack)
|
||||
while (i > 0)
|
||||
{
|
||||
--i;
|
||||
|
||||
|
||||
/* there's no guarantee we'll actually find windows to
|
||||
* remove, e.g. the same xwindow could have been
|
||||
* added/removed before we ever synced, and we put
|
||||
@ -877,34 +877,34 @@ stack_do_window_additions (MetaStack *stack)
|
||||
meta_topic (META_DEBUG_STACK,
|
||||
"Adding %d windows to sorted list\n",
|
||||
n_added);
|
||||
|
||||
|
||||
old_size = stack->xwindows->len;
|
||||
g_array_set_size (stack->xwindows, old_size + n_added);
|
||||
|
||||
|
||||
end = &g_array_index (stack->xwindows, Window, old_size);
|
||||
|
||||
/* stack->added has the most recent additions at the
|
||||
* front of the list, so we need to reverse it
|
||||
*/
|
||||
stack->added = g_list_reverse (stack->added);
|
||||
|
||||
|
||||
i = 0;
|
||||
tmp = stack->added;
|
||||
while (tmp != NULL)
|
||||
{
|
||||
MetaWindow *w;
|
||||
|
||||
|
||||
w = tmp->data;
|
||||
|
||||
|
||||
end[i] = w->xwindow;
|
||||
|
||||
/* add to the main list */
|
||||
stack->sorted = g_list_prepend (stack->sorted, w);
|
||||
|
||||
|
||||
++i;
|
||||
tmp = tmp->next;
|
||||
}
|
||||
|
||||
|
||||
stack->need_resort = TRUE; /* may not be needed as we add to top */
|
||||
stack->need_constrain = TRUE;
|
||||
stack->need_relayer = TRUE;
|
||||
@ -923,13 +923,13 @@ static void
|
||||
stack_do_relayer (MetaStack *stack)
|
||||
{
|
||||
GList *tmp;
|
||||
|
||||
|
||||
if (!stack->need_relayer)
|
||||
return;
|
||||
|
||||
|
||||
meta_topic (META_DEBUG_STACK,
|
||||
"Recomputing layers\n");
|
||||
|
||||
|
||||
tmp = stack->sorted;
|
||||
|
||||
while (tmp != NULL)
|
||||
@ -954,7 +954,7 @@ stack_do_relayer (MetaStack *stack)
|
||||
* not layer
|
||||
*/
|
||||
}
|
||||
|
||||
|
||||
tmp = tmp->next;
|
||||
}
|
||||
|
||||
@ -973,7 +973,7 @@ stack_do_constrain (MetaStack *stack)
|
||||
Constraint **constraints;
|
||||
|
||||
/* It'd be nice if this were all faster, probably */
|
||||
|
||||
|
||||
if (!stack->need_constrain)
|
||||
return;
|
||||
|
||||
@ -988,10 +988,10 @@ stack_do_constrain (MetaStack *stack)
|
||||
graph_constraints (constraints, stack->n_positions);
|
||||
|
||||
apply_constraints (constraints, stack->n_positions);
|
||||
|
||||
|
||||
free_constraints (constraints, stack->n_positions);
|
||||
g_free (constraints);
|
||||
|
||||
|
||||
stack->need_constrain = FALSE;
|
||||
}
|
||||
|
||||
@ -1005,10 +1005,10 @@ stack_do_resort (MetaStack *stack)
|
||||
{
|
||||
if (!stack->need_resort)
|
||||
return;
|
||||
|
||||
|
||||
meta_topic (META_DEBUG_STACK,
|
||||
"Sorting stack list\n");
|
||||
|
||||
|
||||
stack->sorted = g_list_sort (stack->sorted,
|
||||
(GCompareFunc) compare_window_position);
|
||||
|
||||
@ -1248,12 +1248,12 @@ stack_sync_to_xserver (MetaStack *stack)
|
||||
GArray *x11_hidden_stack_windows;
|
||||
int n_override_redirect = 0;
|
||||
MetaStackWindow guard_stack_window;
|
||||
|
||||
|
||||
/* Bail out if frozen */
|
||||
if (stack->freeze_count > 0)
|
||||
return;
|
||||
|
||||
meta_topic (META_DEBUG_STACK, "Syncing window stack to server\n");
|
||||
|
||||
meta_topic (META_DEBUG_STACK, "Syncing window stack to server\n");
|
||||
|
||||
stack_ensure_sorted (stack);
|
||||
|
||||
@ -1284,7 +1284,7 @@ stack_sync_to_xserver (MetaStack *stack)
|
||||
MetaStackWindow stack_window;
|
||||
|
||||
stack_window.any.type = w->client_type;
|
||||
|
||||
|
||||
meta_topic (META_DEBUG_STACK, "%u:%d - %s ",
|
||||
w->layer, w->stack_position, w->desc);
|
||||
|
||||
@ -1293,7 +1293,7 @@ stack_sync_to_xserver (MetaStack *stack)
|
||||
n_override_redirect++;
|
||||
else
|
||||
g_array_prepend_val (x11_stacked, w->xwindow);
|
||||
|
||||
|
||||
if (w->frame)
|
||||
top_level_window = w->frame->xwindow;
|
||||
else
|
||||
@ -1336,12 +1336,12 @@ stack_sync_to_xserver (MetaStack *stack)
|
||||
if (x11_stacked->len != stack->xwindows->len - n_override_redirect)
|
||||
meta_bug ("%u windows stacked, %u windows exist in stack\n",
|
||||
x11_stacked->len, stack->xwindows->len);
|
||||
|
||||
|
||||
/* Sync to server */
|
||||
|
||||
meta_topic (META_DEBUG_STACK, "Restacking %u windows\n",
|
||||
all_root_children_stacked->len);
|
||||
|
||||
|
||||
meta_error_trap_push (stack->screen->display);
|
||||
|
||||
if (stack->last_all_root_children_stacked == NULL)
|
||||
@ -1425,7 +1425,7 @@ stack_sync_to_xserver (MetaStack *stack)
|
||||
/* In this case we have an X window that we need to
|
||||
* put below a wayland window and this is the
|
||||
* topmost X window. */
|
||||
|
||||
|
||||
/* In X terms (because this is the topmost X window)
|
||||
* we want to
|
||||
* raise_window_relative_to_managed_windows() to
|
||||
@ -1452,7 +1452,7 @@ stack_sync_to_xserver (MetaStack *stack)
|
||||
* *newp, then we fail to restack *newp; but on
|
||||
* unmanaging last_xwindow, we'll fix it up.
|
||||
*/
|
||||
|
||||
|
||||
meta_topic (META_DEBUG_STACK, "Placing window 0x%lx below 0x%lx\n",
|
||||
newp->any.type == META_WINDOW_CLIENT_TYPE_X11 ? newp->x11.xwindow : 0,
|
||||
last_xwindow);
|
||||
@ -1572,7 +1572,7 @@ stack_sync_to_xserver (MetaStack *stack)
|
||||
* get removed from the stacking list when we unmanage it
|
||||
* and we'll fix stacking at that time.
|
||||
*/
|
||||
|
||||
|
||||
/* Sync _NET_CLIENT_LIST and _NET_CLIENT_LIST_STACKING */
|
||||
|
||||
XChangeProperty (stack->screen->display->xdisplay,
|
||||
@ -1633,9 +1633,9 @@ meta_stack_get_above (MetaStack *stack,
|
||||
{
|
||||
GList *link;
|
||||
MetaWindow *above;
|
||||
|
||||
|
||||
stack_ensure_sorted (stack);
|
||||
|
||||
|
||||
link = g_list_find (stack->sorted, window);
|
||||
if (link == NULL)
|
||||
return NULL;
|
||||
@ -1658,7 +1658,7 @@ meta_stack_get_below (MetaStack *stack,
|
||||
{
|
||||
GList *link;
|
||||
MetaWindow *below;
|
||||
|
||||
|
||||
stack_ensure_sorted (stack);
|
||||
|
||||
link = g_list_find (stack->sorted, window);
|
||||
@ -1667,7 +1667,7 @@ meta_stack_get_below (MetaStack *stack,
|
||||
return NULL;
|
||||
if (link->next == NULL)
|
||||
return NULL;
|
||||
|
||||
|
||||
below = link->next->data;
|
||||
|
||||
if (only_within_layer &&
|
||||
@ -1801,22 +1801,22 @@ meta_stack_list_windows (MetaStack *stack,
|
||||
{
|
||||
GList *workspace_windows = NULL;
|
||||
GList *link;
|
||||
|
||||
|
||||
stack_ensure_sorted (stack); /* do adds/removes */
|
||||
|
||||
|
||||
link = stack->sorted;
|
||||
|
||||
|
||||
while (link)
|
||||
{
|
||||
MetaWindow *window = link->data;
|
||||
|
||||
|
||||
if (window &&
|
||||
(workspace == NULL || meta_window_located_on_workspace (window, workspace)))
|
||||
{
|
||||
workspace_windows = g_list_prepend (workspace_windows,
|
||||
window);
|
||||
}
|
||||
|
||||
|
||||
link = link->next;
|
||||
}
|
||||
|
||||
@ -1833,7 +1833,7 @@ meta_stack_windows_cmp (MetaStack *stack,
|
||||
/* -1 means a below b */
|
||||
|
||||
stack_ensure_sorted (stack); /* update constraints, layers */
|
||||
|
||||
|
||||
if (window_a->layer < window_b->layer)
|
||||
return -1;
|
||||
else if (window_a->layer > window_b->layer)
|
||||
@ -1883,7 +1883,7 @@ compare_pointers (gconstpointer a,
|
||||
return 1;
|
||||
else if (a < b)
|
||||
return -1;
|
||||
else
|
||||
else
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -1921,7 +1921,7 @@ meta_stack_set_positions (MetaStack *stack,
|
||||
|
||||
/* Make sure any adds or removes aren't in limbo -- is this needed? */
|
||||
stack_ensure_sorted (stack);
|
||||
|
||||
|
||||
if (!lists_contain_same_windows (windows, stack->sorted))
|
||||
{
|
||||
meta_warning ("This list of windows has somehow changed; not resetting "
|
||||
@ -1934,7 +1934,7 @@ meta_stack_set_positions (MetaStack *stack,
|
||||
|
||||
stack->need_resort = TRUE;
|
||||
stack->need_constrain = TRUE;
|
||||
|
||||
|
||||
i = 0;
|
||||
tmp = windows;
|
||||
while (tmp != NULL)
|
||||
@ -1943,7 +1943,7 @@ meta_stack_set_positions (MetaStack *stack,
|
||||
w->stack_position = i++;
|
||||
tmp = tmp->next;
|
||||
}
|
||||
|
||||
|
||||
meta_topic (META_DEBUG_STACK,
|
||||
"Reset the stack positions of (nearly) all windows\n");
|
||||
|
||||
@ -1957,7 +1957,7 @@ meta_window_set_stack_position_no_sync (MetaWindow *window,
|
||||
{
|
||||
int low, high, delta;
|
||||
GList *tmp;
|
||||
|
||||
|
||||
g_return_if_fail (window->screen->stack != NULL);
|
||||
g_return_if_fail (window->stack_position >= 0);
|
||||
g_return_if_fail (position >= 0);
|
||||
@ -1972,7 +1972,7 @@ meta_window_set_stack_position_no_sync (MetaWindow *window,
|
||||
|
||||
window->screen->stack->need_resort = TRUE;
|
||||
window->screen->stack->need_constrain = TRUE;
|
||||
|
||||
|
||||
if (position < window->stack_position)
|
||||
{
|
||||
low = position;
|
||||
@ -1997,7 +1997,7 @@ meta_window_set_stack_position_no_sync (MetaWindow *window,
|
||||
|
||||
tmp = tmp->next;
|
||||
}
|
||||
|
||||
|
||||
window->stack_position = position;
|
||||
|
||||
meta_topic (META_DEBUG_STACK,
|
||||
|
@ -1,9 +1,9 @@
|
||||
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
|
||||
|
||||
/*
|
||||
/*
|
||||
* Copyright (C) 2001 Havoc Pennington
|
||||
* Copyright (C) 2005 Elijah Newren
|
||||
*
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 of the
|
||||
@ -13,7 +13,7 @@
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
@ -26,7 +26,7 @@
|
||||
* @short_description: Which windows cover which other windows
|
||||
*
|
||||
* There are two factors that determine window position.
|
||||
*
|
||||
*
|
||||
* One is window->stack_position, which is a unique integer
|
||||
* indicating how windows are ordered with respect to one
|
||||
* another. The ordering here transcends layers; it isn't changed
|
||||
@ -34,7 +34,7 @@
|
||||
* windows from one layer to another, while preserving the relative
|
||||
* order of the moved windows. Also, it allows us to restore
|
||||
* the stacking order from a saved session.
|
||||
*
|
||||
*
|
||||
* However when actually stacking windows on the screen, the
|
||||
* layer overrides the stack_position; windows are first sorted
|
||||
* by layer, then by stack_position within each layer.
|
||||
@ -82,7 +82,7 @@ struct _MetaStack
|
||||
* The order of the elements in this list is not important.
|
||||
*/
|
||||
GList *removed;
|
||||
|
||||
|
||||
/**
|
||||
* If this is zero, the local stack oughtn't to be brought up to date with
|
||||
* the X server's stack, because it is in the middle of being updated.
|
||||
|
@ -2,9 +2,9 @@
|
||||
|
||||
/* Mutter box operation testing program */
|
||||
|
||||
/*
|
||||
/*
|
||||
* Copyright (C) 2005 Elijah Newren
|
||||
*
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 of the
|
||||
@ -14,7 +14,7 @@
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
@ -363,7 +363,7 @@ test_merge_regions ()
|
||||
* uniformly distributed location of center of struts (within screen)
|
||||
* merge all regions that are possible
|
||||
* print stats on problem setup
|
||||
* number of (non-completely-occluded?) struts
|
||||
* number of (non-completely-occluded?) struts
|
||||
* percentage of screen covered
|
||||
* length of resulting non-minimal spanning set
|
||||
* length of resulting minimal spanning set
|
||||
@ -508,11 +508,11 @@ test_merge_regions ()
|
||||
compare = compare->next;
|
||||
}
|
||||
|
||||
printf (" Num rectangles contained in others : %d\n",
|
||||
printf (" Num rectangles contained in others : %d\n",
|
||||
num_contains);
|
||||
printf (" Num rectangles partially contained in others: %d\n",
|
||||
printf (" Num rectangles partially contained in others: %d\n",
|
||||
num_part_contains);
|
||||
printf (" Num rectangles adjacent to others : %d\n",
|
||||
printf (" Num rectangles adjacent to others : %d\n",
|
||||
num_adjacent);
|
||||
printf (" Num rectangles merged with others : %d\n",
|
||||
num_merged);
|
||||
@ -583,9 +583,9 @@ test_regions_okay ()
|
||||
GList* region;
|
||||
GList* tmp;
|
||||
|
||||
/*************************************************************/
|
||||
/*************************************************************/
|
||||
/* Make sure test region 0 has the right spanning rectangles */
|
||||
/*************************************************************/
|
||||
/*************************************************************/
|
||||
region = get_screen_region (0);
|
||||
tmp = NULL;
|
||||
tmp = g_list_prepend (tmp, new_meta_rect (0, 0, 1600, 1200));
|
||||
@ -593,9 +593,9 @@ test_regions_okay ()
|
||||
meta_rectangle_free_list_and_elements (tmp);
|
||||
meta_rectangle_free_list_and_elements (region);
|
||||
|
||||
/*************************************************************/
|
||||
/*************************************************************/
|
||||
/* Make sure test region 1 has the right spanning rectangles */
|
||||
/*************************************************************/
|
||||
/*************************************************************/
|
||||
region = get_screen_region (1);
|
||||
tmp = NULL;
|
||||
tmp = g_list_prepend (tmp, new_meta_rect (0, 20, 400, 1180));
|
||||
@ -606,7 +606,7 @@ test_regions_okay ()
|
||||
|
||||
/*************************************************************/
|
||||
/* Make sure test region 2 has the right spanning rectangles */
|
||||
/*************************************************************/
|
||||
/*************************************************************/
|
||||
region = get_screen_region (2);
|
||||
tmp = NULL;
|
||||
tmp = g_list_prepend (tmp, new_meta_rect ( 0, 20, 300, 1180));
|
||||
@ -620,7 +620,7 @@ test_regions_okay ()
|
||||
|
||||
/*************************************************************/
|
||||
/* Make sure test region 3 has the right spanning rectangles */
|
||||
/*************************************************************/
|
||||
/*************************************************************/
|
||||
region = get_screen_region (3);
|
||||
tmp = NULL;
|
||||
tmp = g_list_prepend (tmp, new_meta_rect ( 380, 675, 420, 525)); /* 220500 */
|
||||
@ -646,7 +646,7 @@ test_regions_okay ()
|
||||
|
||||
/*************************************************************/
|
||||
/* Make sure test region 4 has the right spanning rectangles */
|
||||
/*************************************************************/
|
||||
/*************************************************************/
|
||||
region = get_screen_region (4);
|
||||
tmp = NULL;
|
||||
tmp = g_list_prepend (tmp, new_meta_rect ( 800, 20, 800, 1180));
|
||||
@ -656,7 +656,7 @@ test_regions_okay ()
|
||||
|
||||
/*************************************************************/
|
||||
/* Make sure test region 5 has the right spanning rectangles */
|
||||
/*************************************************************/
|
||||
/*************************************************************/
|
||||
printf ("The next test intentionally causes a warning, "
|
||||
"but it can be ignored.\n");
|
||||
region = get_screen_region (5);
|
||||
@ -1020,9 +1020,9 @@ test_find_onscreen_edges ()
|
||||
int top = META_DIRECTION_TOP;
|
||||
int bottom = META_DIRECTION_BOTTOM;
|
||||
|
||||
/*************************************************/
|
||||
/*************************************************/
|
||||
/* Make sure test region 0 has the correct edges */
|
||||
/*************************************************/
|
||||
/*************************************************/
|
||||
edges = get_screen_edges (0);
|
||||
tmp = NULL;
|
||||
tmp = g_list_prepend (tmp, new_screen_edge ( 0, 1200, 1600, 0, bottom));
|
||||
@ -1033,9 +1033,9 @@ test_find_onscreen_edges ()
|
||||
meta_rectangle_free_list_and_elements (tmp);
|
||||
meta_rectangle_free_list_and_elements (edges);
|
||||
|
||||
/*************************************************/
|
||||
/*************************************************/
|
||||
/* Make sure test region 1 has the correct edges */
|
||||
/*************************************************/
|
||||
/*************************************************/
|
||||
edges = get_screen_edges (1);
|
||||
tmp = NULL;
|
||||
tmp = g_list_prepend (tmp, new_screen_edge ( 0, 1200, 400, 0, bottom));
|
||||
@ -1048,9 +1048,9 @@ test_find_onscreen_edges ()
|
||||
meta_rectangle_free_list_and_elements (tmp);
|
||||
meta_rectangle_free_list_and_elements (edges);
|
||||
|
||||
/*************************************************/
|
||||
/*************************************************/
|
||||
/* Make sure test region 2 has the correct edges */
|
||||
/*************************************************/
|
||||
/*************************************************/
|
||||
edges = get_screen_edges (2);
|
||||
tmp = NULL;
|
||||
tmp = g_list_prepend (tmp, new_screen_edge (1200, 1200, 400, 0, bottom));
|
||||
@ -1069,9 +1069,9 @@ test_find_onscreen_edges ()
|
||||
meta_rectangle_free_list_and_elements (tmp);
|
||||
meta_rectangle_free_list_and_elements (edges);
|
||||
|
||||
/*************************************************/
|
||||
/*************************************************/
|
||||
/* Make sure test region 3 has the correct edges */
|
||||
/*************************************************/
|
||||
/*************************************************/
|
||||
edges = get_screen_edges (3);
|
||||
tmp = NULL;
|
||||
tmp = g_list_prepend (tmp, new_screen_edge (1200, 1200, 400, 0, bottom));
|
||||
@ -1096,7 +1096,7 @@ test_find_onscreen_edges ()
|
||||
char big_buffer1[(EDGE_LENGTH+2)*FUDGE], big_buffer2[(EDGE_LENGTH+2)*FUDGE];
|
||||
meta_rectangle_edge_list_to_string (edges, "\n ", big_buffer1);
|
||||
meta_rectangle_edge_list_to_string (tmp, "\n ", big_buffer2);
|
||||
printf("Generated edge list:\n %s\nComparison edges list:\n %s\n",
|
||||
printf("Generated edge list:\n %s\nComparison edges list:\n %s\n",
|
||||
big_buffer1, big_buffer2);
|
||||
#endif
|
||||
|
||||
@ -1104,9 +1104,9 @@ test_find_onscreen_edges ()
|
||||
meta_rectangle_free_list_and_elements (tmp);
|
||||
meta_rectangle_free_list_and_elements (edges);
|
||||
|
||||
/*************************************************/
|
||||
/*************************************************/
|
||||
/* Make sure test region 4 has the correct edges */
|
||||
/*************************************************/
|
||||
/*************************************************/
|
||||
edges = get_screen_edges (4);
|
||||
tmp = NULL;
|
||||
tmp = g_list_prepend (tmp, new_screen_edge ( 800, 1200, 800, 0, bottom));
|
||||
@ -1117,18 +1117,18 @@ test_find_onscreen_edges ()
|
||||
meta_rectangle_free_list_and_elements (tmp);
|
||||
meta_rectangle_free_list_and_elements (edges);
|
||||
|
||||
/*************************************************/
|
||||
/*************************************************/
|
||||
/* Make sure test region 5 has the correct edges */
|
||||
/*************************************************/
|
||||
/*************************************************/
|
||||
edges = get_screen_edges (5);
|
||||
tmp = NULL;
|
||||
verify_edge_lists_are_equal (edges, tmp);
|
||||
meta_rectangle_free_list_and_elements (tmp);
|
||||
meta_rectangle_free_list_and_elements (edges);
|
||||
|
||||
/*************************************************/
|
||||
/*************************************************/
|
||||
/* Make sure test region 6 has the correct edges */
|
||||
/*************************************************/
|
||||
/*************************************************/
|
||||
edges = get_screen_edges (6);
|
||||
tmp = NULL;
|
||||
tmp = g_list_prepend (tmp, new_screen_edge ( 0, 1200, 1600, 0, bottom));
|
||||
@ -1153,18 +1153,18 @@ test_find_nonintersected_monitor_edges ()
|
||||
int top = META_DIRECTION_TOP;
|
||||
int bottom = META_DIRECTION_BOTTOM;
|
||||
|
||||
/*************************************************************************/
|
||||
/*************************************************************************/
|
||||
/* Make sure test monitor set 0 for with region 0 has the correct edges */
|
||||
/*************************************************************************/
|
||||
/*************************************************************************/
|
||||
edges = get_monitor_edges (0, 0);
|
||||
tmp = NULL;
|
||||
verify_edge_lists_are_equal (edges, tmp);
|
||||
meta_rectangle_free_list_and_elements (tmp);
|
||||
meta_rectangle_free_list_and_elements (edges);
|
||||
|
||||
/*************************************************************************/
|
||||
/*************************************************************************/
|
||||
/* Make sure test monitor set 2 for with region 1 has the correct edges */
|
||||
/*************************************************************************/
|
||||
/*************************************************************************/
|
||||
edges = get_monitor_edges (2, 1);
|
||||
tmp = NULL;
|
||||
tmp = g_list_prepend (tmp, new_monitor_edge ( 0, 600, 1600, 0, bottom));
|
||||
@ -1173,9 +1173,9 @@ test_find_nonintersected_monitor_edges ()
|
||||
meta_rectangle_free_list_and_elements (tmp);
|
||||
meta_rectangle_free_list_and_elements (edges);
|
||||
|
||||
/*************************************************************************/
|
||||
/*************************************************************************/
|
||||
/* Make sure test monitor set 1 for with region 2 has the correct edges */
|
||||
/*************************************************************************/
|
||||
/*************************************************************************/
|
||||
edges = get_monitor_edges (1, 2);
|
||||
tmp = NULL;
|
||||
tmp = g_list_prepend (tmp, new_monitor_edge ( 800, 20, 0, 1080, right));
|
||||
@ -1185,16 +1185,16 @@ test_find_nonintersected_monitor_edges ()
|
||||
char big_buffer1[(EDGE_LENGTH+2)*FUDGE], big_buffer2[(EDGE_LENGTH+2)*FUDGE];
|
||||
meta_rectangle_edge_list_to_string (edges, "\n ", big_buffer1);
|
||||
meta_rectangle_edge_list_to_string (tmp, "\n ", big_buffer2);
|
||||
printf("Generated edge list:\n %s\nComparison edges list:\n %s\n",
|
||||
printf("Generated edge list:\n %s\nComparison edges list:\n %s\n",
|
||||
big_buffer1, big_buffer2);
|
||||
#endif
|
||||
verify_edge_lists_are_equal (edges, tmp);
|
||||
meta_rectangle_free_list_and_elements (tmp);
|
||||
meta_rectangle_free_list_and_elements (edges);
|
||||
|
||||
/*************************************************************************/
|
||||
/*************************************************************************/
|
||||
/* Make sure test monitor set 3 for with region 3 has the correct edges */
|
||||
/*************************************************************************/
|
||||
/*************************************************************************/
|
||||
edges = get_monitor_edges (3, 3);
|
||||
tmp = NULL;
|
||||
tmp = g_list_prepend (tmp, new_monitor_edge ( 900, 600, 700, 0, bottom));
|
||||
@ -1207,9 +1207,9 @@ test_find_nonintersected_monitor_edges ()
|
||||
meta_rectangle_free_list_and_elements (tmp);
|
||||
meta_rectangle_free_list_and_elements (edges);
|
||||
|
||||
/*************************************************************************/
|
||||
/*************************************************************************/
|
||||
/* Make sure test monitor set 3 for with region 4 has the correct edges */
|
||||
/*************************************************************************/
|
||||
/*************************************************************************/
|
||||
edges = get_monitor_edges (3, 4);
|
||||
tmp = NULL;
|
||||
tmp = g_list_prepend (tmp, new_monitor_edge ( 800, 600, 800, 0, bottom));
|
||||
@ -1219,9 +1219,9 @@ test_find_nonintersected_monitor_edges ()
|
||||
meta_rectangle_free_list_and_elements (tmp);
|
||||
meta_rectangle_free_list_and_elements (edges);
|
||||
|
||||
/*************************************************************************/
|
||||
/*************************************************************************/
|
||||
/* Make sure test monitor set 3 for with region 5has the correct edges */
|
||||
/*************************************************************************/
|
||||
/*************************************************************************/
|
||||
edges = get_monitor_edges (3, 5);
|
||||
tmp = NULL;
|
||||
verify_edge_lists_are_equal (edges, tmp);
|
||||
|
@ -2,10 +2,10 @@
|
||||
|
||||
/* Mutter utilities */
|
||||
|
||||
/*
|
||||
/*
|
||||
* Copyright (C) 2001 Havoc Pennington
|
||||
* Copyright (C) 2005 Elijah Newren
|
||||
*
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 of the
|
||||
@ -15,7 +15,7 @@
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
|
@ -1,9 +1,9 @@
|
||||
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
|
||||
|
||||
/*
|
||||
/*
|
||||
* Copyright (C) 2001 Havoc Pennington
|
||||
* Copyright (C) 2005 Elijah Newren
|
||||
*
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 of the
|
||||
@ -13,7 +13,7 @@
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
@ -67,7 +67,7 @@ ensure_logfile (void)
|
||||
char *tmpl;
|
||||
int fd;
|
||||
GError *err;
|
||||
|
||||
|
||||
tmpl = g_strdup_printf ("mutter-%d-debug-log-XXXXXX",
|
||||
(int) getpid ());
|
||||
|
||||
@ -77,7 +77,7 @@ ensure_logfile (void)
|
||||
&err);
|
||||
|
||||
g_free (tmpl);
|
||||
|
||||
|
||||
if (err != NULL)
|
||||
{
|
||||
meta_warning ("Failed to open debug log: %s\n",
|
||||
@ -85,9 +85,9 @@ ensure_logfile (void)
|
||||
g_error_free (err);
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
logfile = fdopen (fd, "w");
|
||||
|
||||
|
||||
if (logfile == NULL)
|
||||
{
|
||||
meta_warning ("Failed to fdopen() log file %s: %s\n",
|
||||
@ -98,7 +98,7 @@ ensure_logfile (void)
|
||||
{
|
||||
g_printerr ("Opened log file %s\n", filename);
|
||||
}
|
||||
|
||||
|
||||
g_free (filename);
|
||||
}
|
||||
}
|
||||
@ -116,7 +116,7 @@ meta_set_verbose (gboolean setting)
|
||||
#ifndef WITH_VERBOSE_MODE
|
||||
if (setting)
|
||||
meta_fatal (_("Mutter was compiled without support for verbose mode\n"));
|
||||
#else
|
||||
#else
|
||||
if (setting)
|
||||
ensure_logfile ();
|
||||
#endif
|
||||
@ -225,7 +225,7 @@ utf8_fputs (const char *str,
|
||||
{
|
||||
char *l;
|
||||
int retval;
|
||||
|
||||
|
||||
l = g_locale_from_utf8 (str, -1, NULL, NULL, NULL);
|
||||
|
||||
if (l == NULL)
|
||||
@ -259,24 +259,24 @@ meta_debug_spew_real (const char *format, ...)
|
||||
va_list args;
|
||||
gchar *str;
|
||||
FILE *out;
|
||||
|
||||
|
||||
g_return_if_fail (format != NULL);
|
||||
|
||||
if (!is_debugging)
|
||||
return;
|
||||
|
||||
|
||||
va_start (args, format);
|
||||
str = g_strdup_vprintf (format, args);
|
||||
va_end (args);
|
||||
|
||||
out = logfile ? logfile : stderr;
|
||||
|
||||
|
||||
if (no_prefix == 0)
|
||||
utf8_fputs ("Window manager: ", out);
|
||||
utf8_fputs (str, out);
|
||||
|
||||
fflush (out);
|
||||
|
||||
|
||||
g_free (str);
|
||||
}
|
||||
#endif /* WITH_VERBOSE_MODE */
|
||||
@ -381,11 +381,11 @@ meta_topic_real_valist (MetaDebugTopic topic,
|
||||
++sync_count;
|
||||
fprintf (out, "%d: ", sync_count);
|
||||
}
|
||||
|
||||
|
||||
utf8_fputs (str, out);
|
||||
|
||||
|
||||
fflush (out);
|
||||
|
||||
|
||||
g_free (str);
|
||||
}
|
||||
|
||||
@ -410,7 +410,7 @@ meta_bug (const char *format, ...)
|
||||
FILE *out;
|
||||
|
||||
g_return_if_fail (format != NULL);
|
||||
|
||||
|
||||
va_start (args, format);
|
||||
str = g_strdup_vprintf (format, args);
|
||||
va_end (args);
|
||||
@ -426,9 +426,9 @@ meta_bug (const char *format, ...)
|
||||
utf8_fputs (str, out);
|
||||
|
||||
fflush (out);
|
||||
|
||||
|
||||
g_free (str);
|
||||
|
||||
|
||||
/* stop us in a debugger */
|
||||
abort ();
|
||||
}
|
||||
@ -439,9 +439,9 @@ meta_warning (const char *format, ...)
|
||||
va_list args;
|
||||
gchar *str;
|
||||
FILE *out;
|
||||
|
||||
|
||||
g_return_if_fail (format != NULL);
|
||||
|
||||
|
||||
va_start (args, format);
|
||||
str = g_strdup_vprintf (format, args);
|
||||
va_end (args);
|
||||
@ -457,7 +457,7 @@ meta_warning (const char *format, ...)
|
||||
utf8_fputs (str, out);
|
||||
|
||||
fflush (out);
|
||||
|
||||
|
||||
g_free (str);
|
||||
}
|
||||
|
||||
@ -467,9 +467,9 @@ meta_fatal (const char *format, ...)
|
||||
va_list args;
|
||||
gchar *str;
|
||||
FILE *out;
|
||||
|
||||
|
||||
g_return_if_fail (format != NULL);
|
||||
|
||||
|
||||
va_start (args, format);
|
||||
str = g_strdup_vprintf (format, args);
|
||||
va_end (args);
|
||||
@ -485,7 +485,7 @@ meta_fatal (const char *format, ...)
|
||||
utf8_fputs (str, out);
|
||||
|
||||
fflush (out);
|
||||
|
||||
|
||||
g_free (str);
|
||||
|
||||
meta_exit (META_EXIT_ERROR);
|
||||
@ -508,7 +508,7 @@ meta_pop_no_msg_prefix (void)
|
||||
void
|
||||
meta_exit (MetaExitCode code)
|
||||
{
|
||||
|
||||
|
||||
exit (code);
|
||||
}
|
||||
|
||||
|
@ -9,12 +9,12 @@
|
||||
* which the rest of the world is allowed to use.)
|
||||
*/
|
||||
|
||||
/*
|
||||
/*
|
||||
* Copyright (C) 2001 Havoc Pennington
|
||||
* Copyright (C) 2002 Red Hat, Inc.
|
||||
* Copyright (C) 2003, 2004 Rob Adams
|
||||
* Copyright (C) 2004-2006 Elijah Newren
|
||||
*
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 of the
|
||||
@ -24,7 +24,7 @@
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
@ -90,7 +90,7 @@ typedef enum
|
||||
struct _MetaWindow
|
||||
{
|
||||
GObject parent_instance;
|
||||
|
||||
|
||||
MetaDisplay *display;
|
||||
MetaScreen *screen;
|
||||
const MetaMonitorInfo *monitor;
|
||||
@ -134,18 +134,18 @@ struct _MetaWindow
|
||||
|
||||
int hide_titlebar_when_maximized;
|
||||
int net_wm_pid;
|
||||
|
||||
|
||||
Window xtransient_for;
|
||||
Window xgroup_leader;
|
||||
Window xclient_leader;
|
||||
MetaWindow *transient_for;
|
||||
|
||||
/* Initial workspace property */
|
||||
int initial_workspace;
|
||||
|
||||
int initial_workspace;
|
||||
|
||||
/* Initial timestamp property */
|
||||
guint32 initial_timestamp;
|
||||
|
||||
guint32 initial_timestamp;
|
||||
|
||||
/* Whether this is an override redirect window or not */
|
||||
guint override_redirect : 1;
|
||||
|
||||
@ -184,7 +184,7 @@ struct _MetaWindow
|
||||
* these monitors. If not, this is the single monitor which the window's
|
||||
* origin is on. */
|
||||
gint fullscreen_monitors[4];
|
||||
|
||||
|
||||
/* Whether we're trying to constrain the window to be fully onscreen */
|
||||
guint require_fully_onscreen : 1;
|
||||
|
||||
@ -213,7 +213,7 @@ struct _MetaWindow
|
||||
* see also unmaps_pending
|
||||
*/
|
||||
guint mapped : 1;
|
||||
|
||||
|
||||
/* Whether window has been hidden from view by lowering it to the bottom
|
||||
* of window stack.
|
||||
*/
|
||||
@ -247,23 +247,23 @@ struct _MetaWindow
|
||||
|
||||
/* whether an initial workspace was explicitly set */
|
||||
guint initial_workspace_set : 1;
|
||||
|
||||
|
||||
/* whether an initial timestamp was explicitly set */
|
||||
guint initial_timestamp_set : 1;
|
||||
|
||||
|
||||
/* whether net_wm_user_time has been set yet */
|
||||
guint net_wm_user_time_set : 1;
|
||||
|
||||
/* whether net_wm_icon_geometry has been set */
|
||||
guint icon_geometry_set : 1;
|
||||
|
||||
|
||||
/* These are the flags from WM_PROTOCOLS */
|
||||
guint take_focus : 1;
|
||||
guint delete_window : 1;
|
||||
guint can_ping : 1;
|
||||
/* Globally active / No input */
|
||||
guint input : 1;
|
||||
|
||||
|
||||
/* MWM hints about features of window */
|
||||
guint mwm_decorated : 1;
|
||||
guint mwm_border_only : 1;
|
||||
@ -272,7 +272,7 @@ struct _MetaWindow
|
||||
guint mwm_has_maximize_func : 1;
|
||||
guint mwm_has_move_func : 1;
|
||||
guint mwm_has_resize_func : 1;
|
||||
|
||||
|
||||
/* Computed features of window */
|
||||
guint decorated : 1;
|
||||
guint border_only : 1;
|
||||
@ -295,7 +295,7 @@ struct _MetaWindow
|
||||
|
||||
/* EWHH demands attention flag */
|
||||
guint wm_state_demands_attention : 1;
|
||||
|
||||
|
||||
/* TRUE iff window == window->display->focus_window */
|
||||
guint has_focus : 1;
|
||||
|
||||
@ -316,15 +316,15 @@ struct _MetaWindow
|
||||
|
||||
/* Are we in meta_window_new()? */
|
||||
guint constructing : 1;
|
||||
|
||||
|
||||
/* Are we in the various queues? (Bitfield: see META_WINDOW_IS_IN_QUEUE) */
|
||||
guint is_in_queues : NUMBER_OF_QUEUES;
|
||||
|
||||
|
||||
/* Used by keybindings.c */
|
||||
guint keys_grabbed : 1; /* normal keybindings grabbed */
|
||||
guint grab_on_frame : 1; /* grabs are on the frame */
|
||||
guint all_keys_grabbed : 1; /* AnyKey grabbed */
|
||||
|
||||
|
||||
/* Set if the reason for unmanaging the window is that
|
||||
* it was withdrawn
|
||||
*/
|
||||
@ -337,7 +337,7 @@ struct _MetaWindow
|
||||
|
||||
/* Transient parent is a root window */
|
||||
guint transient_parent_is_root_window : 1;
|
||||
|
||||
|
||||
/* if TRUE, window was maximized at start of current grab op */
|
||||
guint shaken_loose : 1;
|
||||
|
||||
@ -386,7 +386,7 @@ struct _MetaWindow
|
||||
guint sync_request_timeout_id;
|
||||
/* alarm monitoring client's _NET_WM_SYNC_REQUEST_COUNTER */
|
||||
XSyncAlarm sync_request_alarm;
|
||||
|
||||
|
||||
/* Number of UnmapNotify that are caused by us, if
|
||||
* we get UnmapNotify with none pending then the client
|
||||
* is withdrawing the window.
|
||||
@ -402,11 +402,11 @@ struct _MetaWindow
|
||||
|
||||
/* window that gets updated net_wm_user_time values */
|
||||
Window user_time_window;
|
||||
|
||||
|
||||
/* The size we set the window to last (i.e. what we believe
|
||||
* to be its actual size on the server). The x, y are
|
||||
* the actual server-side x,y so are relative to the frame
|
||||
* (meaning that they just hold the frame width and height)
|
||||
* (meaning that they just hold the frame width and height)
|
||||
* or the root window (meaning they specify the location
|
||||
* of the top left of the inner window) as appropriate.
|
||||
*/
|
||||
@ -432,7 +432,7 @@ struct _MetaWindow
|
||||
* Position always in root coords, unlike window->rect.
|
||||
*/
|
||||
MetaRectangle user_rect;
|
||||
|
||||
|
||||
/* Cached net_wm_icon_geometry */
|
||||
MetaRectangle icon_geometry;
|
||||
|
||||
@ -444,7 +444,7 @@ struct _MetaWindow
|
||||
/* Managed by stack.c */
|
||||
MetaStackLayer layer;
|
||||
int stack_position; /* see comment in stack.h */
|
||||
|
||||
|
||||
/* Current dialog open for this window */
|
||||
int dialog_pid;
|
||||
|
||||
|
@ -10,10 +10,10 @@
|
||||
* are unmapped.
|
||||
*/
|
||||
|
||||
/*
|
||||
/*
|
||||
* Copyright (C) 2001 Havoc Pennington
|
||||
* Copyright (C) 2004, 2005 Elijah Newren
|
||||
*
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 of the
|
||||
@ -23,7 +23,7 @@
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
@ -38,7 +38,7 @@ struct _MetaWorkspace
|
||||
{
|
||||
GObject parent_instance;
|
||||
MetaScreen *screen;
|
||||
|
||||
|
||||
GList *windows;
|
||||
|
||||
/* The "MRU list", or "most recently used" list, is a list of
|
||||
|
@ -1,10 +1,10 @@
|
||||
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
|
||||
|
||||
/*
|
||||
/*
|
||||
* Copyright (C) 2001 Havoc Pennington
|
||||
* Copyright (C) 2003 Rob Adams
|
||||
* Copyright (C) 2004, 2005 Elijah Newren
|
||||
*
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 of the
|
||||
@ -14,7 +14,7 @@
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
@ -197,7 +197,7 @@ meta_workspace_new (MetaScreen *screen)
|
||||
workspace->all_struts = NULL;
|
||||
|
||||
workspace->showing_desktop = FALSE;
|
||||
|
||||
|
||||
return workspace;
|
||||
}
|
||||
|
||||
@ -219,7 +219,7 @@ workspace_free_all_struts (MetaWorkspace *workspace)
|
||||
{
|
||||
if (workspace->all_struts == NULL)
|
||||
return;
|
||||
|
||||
|
||||
g_slist_foreach (workspace->all_struts, free_this, NULL);
|
||||
g_slist_free (workspace->all_struts);
|
||||
workspace->all_struts = NULL;
|
||||
@ -236,7 +236,7 @@ workspace_free_builtin_struts (MetaWorkspace *workspace)
|
||||
{
|
||||
if (workspace->builtin_struts == NULL)
|
||||
return;
|
||||
|
||||
|
||||
g_slist_foreach (workspace->builtin_struts, free_this, NULL);
|
||||
g_slist_free (workspace->builtin_struts);
|
||||
workspace->builtin_struts = NULL;
|
||||
@ -254,7 +254,7 @@ meta_workspace_remove (MetaWorkspace *workspace)
|
||||
/* Here we assume all the windows are already on another workspace
|
||||
* as well, so they won't be "orphaned"
|
||||
*/
|
||||
|
||||
|
||||
tmp = workspace->windows;
|
||||
while (tmp != NULL)
|
||||
{
|
||||
@ -272,10 +272,10 @@ meta_workspace_remove (MetaWorkspace *workspace)
|
||||
g_assert (workspace->windows == NULL);
|
||||
|
||||
screen = workspace->screen;
|
||||
|
||||
|
||||
workspace->screen->workspaces =
|
||||
g_list_remove (workspace->screen->workspaces, workspace);
|
||||
|
||||
|
||||
g_free (workspace->work_area_monitor);
|
||||
|
||||
g_list_free (workspace->mru_list);
|
||||
@ -313,11 +313,11 @@ meta_workspace_add_window (MetaWorkspace *workspace,
|
||||
MetaWindow *window)
|
||||
{
|
||||
g_return_if_fail (window->workspace == NULL);
|
||||
|
||||
|
||||
/* If the window is on all workspaces, we want to add it to all mru
|
||||
* lists, otherwise just add it to this workspaces mru list
|
||||
*/
|
||||
if (window->on_all_workspaces)
|
||||
if (window->on_all_workspaces)
|
||||
{
|
||||
if (window->workspace == NULL)
|
||||
{
|
||||
@ -343,7 +343,7 @@ meta_workspace_add_window (MetaWorkspace *workspace,
|
||||
window->workspace = workspace;
|
||||
|
||||
meta_window_set_current_workspace_hint (window);
|
||||
|
||||
|
||||
if (window->struts)
|
||||
{
|
||||
meta_topic (META_DEBUG_WORKAREA,
|
||||
@ -371,10 +371,10 @@ meta_workspace_remove_window (MetaWorkspace *workspace,
|
||||
window->workspace = NULL;
|
||||
|
||||
/* If the window is on all workspaces, we don't want to remove it
|
||||
* from the MRU list unless this causes it to be removed from all
|
||||
* from the MRU list unless this causes it to be removed from all
|
||||
* workspaces
|
||||
*/
|
||||
if (window->on_all_workspaces)
|
||||
if (window->on_all_workspaces)
|
||||
{
|
||||
GList* tmp = window->screen->workspaces;
|
||||
while (tmp)
|
||||
@ -392,7 +392,7 @@ meta_workspace_remove_window (MetaWorkspace *workspace,
|
||||
}
|
||||
|
||||
meta_window_set_current_workspace_hint (window);
|
||||
|
||||
|
||||
if (window->struts)
|
||||
{
|
||||
meta_topic (META_DEBUG_WORKAREA,
|
||||
@ -416,12 +416,12 @@ meta_workspace_relocate_windows (MetaWorkspace *workspace,
|
||||
{
|
||||
GList *tmp;
|
||||
GList *copy;
|
||||
|
||||
|
||||
g_return_if_fail (workspace != new_home);
|
||||
|
||||
/* can't modify list we're iterating over */
|
||||
copy = g_list_copy (workspace->windows);
|
||||
|
||||
|
||||
tmp = copy;
|
||||
while (tmp != NULL)
|
||||
{
|
||||
@ -429,12 +429,12 @@ meta_workspace_relocate_windows (MetaWorkspace *workspace,
|
||||
|
||||
meta_workspace_remove_window (workspace, window);
|
||||
meta_workspace_add_window (new_home, window);
|
||||
|
||||
|
||||
tmp = tmp->next;
|
||||
}
|
||||
|
||||
g_list_free (copy);
|
||||
|
||||
|
||||
g_assert (workspace->windows == NULL);
|
||||
}
|
||||
|
||||
@ -547,10 +547,10 @@ meta_workspace_activate_with_focus (MetaWorkspace *workspace,
|
||||
MetaWorkspaceLayout layout1, layout2;
|
||||
gint num_workspaces, current_space, new_space;
|
||||
MetaMotionDirection direction;
|
||||
|
||||
|
||||
meta_verbose ("Activating workspace %d\n",
|
||||
meta_workspace_index (workspace));
|
||||
|
||||
|
||||
if (workspace->screen->active_workspace == workspace)
|
||||
return;
|
||||
|
||||
@ -582,7 +582,7 @@ meta_workspace_activate_with_focus (MetaWorkspace *workspace,
|
||||
if (workspace->screen->display->grab_op == META_GRAB_OP_MOVING ||
|
||||
workspace->screen->display->grab_op == META_GRAB_OP_KEYBOARD_MOVING)
|
||||
move_window = workspace->screen->display->grab_window;
|
||||
|
||||
|
||||
if (move_window != NULL)
|
||||
{
|
||||
if (move_window->on_all_workspaces)
|
||||
@ -739,7 +739,7 @@ meta_workspace_list_windows (MetaWorkspace *workspace)
|
||||
GSList *display_windows;
|
||||
GSList *tmp;
|
||||
GList *workspace_windows;
|
||||
|
||||
|
||||
display_windows = meta_display_list_windows (workspace->screen->display,
|
||||
META_LIST_DEFAULT);
|
||||
|
||||
@ -767,7 +767,7 @@ meta_workspace_invalidate_work_area (MetaWorkspace *workspace)
|
||||
GList *tmp;
|
||||
GList *windows;
|
||||
int i;
|
||||
|
||||
|
||||
if (workspace->work_areas_invalid)
|
||||
{
|
||||
meta_topic (META_DEBUG_WORKAREA,
|
||||
@ -787,7 +787,7 @@ meta_workspace_invalidate_work_area (MetaWorkspace *workspace)
|
||||
|
||||
g_free (workspace->work_area_monitor);
|
||||
workspace->work_area_monitor = NULL;
|
||||
|
||||
|
||||
workspace_free_all_struts (workspace);
|
||||
|
||||
for (i = 0; i < workspace->screen->n_monitor_infos; i++)
|
||||
@ -800,7 +800,7 @@ meta_workspace_invalidate_work_area (MetaWorkspace *workspace)
|
||||
workspace->screen_region = NULL;
|
||||
workspace->screen_edges = NULL;
|
||||
workspace->monitor_edges = NULL;
|
||||
|
||||
|
||||
workspace->work_areas_invalid = TRUE;
|
||||
|
||||
/* redo the size/position constraints on all windows */
|
||||
@ -811,7 +811,7 @@ meta_workspace_invalidate_work_area (MetaWorkspace *workspace)
|
||||
MetaWindow *w = tmp->data;
|
||||
|
||||
meta_window_queue (w, META_QUEUE_MOVE_RESIZE);
|
||||
|
||||
|
||||
tmp = tmp->next;
|
||||
}
|
||||
|
||||
@ -876,7 +876,7 @@ ensure_work_areas_validated (MetaWorkspace *workspace)
|
||||
|
||||
/* STEP 2: Get the maximal/spanning rects for the onscreen and
|
||||
* on-single-monitor regions
|
||||
*/
|
||||
*/
|
||||
g_assert (workspace->monitor_region == NULL);
|
||||
g_assert (workspace->screen_region == NULL);
|
||||
|
||||
@ -948,7 +948,7 @@ ensure_work_areas_validated (MetaWorkspace *workspace)
|
||||
workspace->work_area_screen.x,
|
||||
workspace->work_area_screen.y,
|
||||
workspace->work_area_screen.width,
|
||||
workspace->work_area_screen.height);
|
||||
workspace->work_area_screen.height);
|
||||
|
||||
/* Now find the work areas for each monitor */
|
||||
g_free (workspace->work_area_monitor);
|
||||
@ -983,7 +983,7 @@ ensure_work_areas_validated (MetaWorkspace *workspace)
|
||||
|
||||
/* STEP 4: Make sure the screen_region is nonempty (separate from step 2
|
||||
* since it relies on step 3).
|
||||
*/
|
||||
*/
|
||||
if (workspace->screen_region == NULL)
|
||||
{
|
||||
MetaRectangle *nonempty_region;
|
||||
@ -1070,7 +1070,7 @@ meta_workspace_get_work_area_for_monitor (MetaWorkspace *workspace,
|
||||
|
||||
ensure_work_areas_validated (workspace);
|
||||
g_assert (which_monitor < workspace->screen->n_monitor_infos);
|
||||
|
||||
|
||||
*area = workspace->work_area_monitor[which_monitor];
|
||||
}
|
||||
|
||||
@ -1086,7 +1086,7 @@ meta_workspace_get_work_area_all_monitors (MetaWorkspace *workspace,
|
||||
MetaRectangle *area)
|
||||
{
|
||||
ensure_work_areas_validated (workspace);
|
||||
|
||||
|
||||
*area = workspace->work_area_screen;
|
||||
}
|
||||
|
||||
@ -1151,7 +1151,7 @@ MetaWorkspace*
|
||||
meta_workspace_get_neighbor (MetaWorkspace *workspace,
|
||||
MetaMotionDirection direction)
|
||||
{
|
||||
MetaWorkspaceLayout layout;
|
||||
MetaWorkspaceLayout layout;
|
||||
int i, current_space, num_workspaces;
|
||||
gboolean ltr;
|
||||
|
||||
@ -1162,10 +1162,10 @@ meta_workspace_get_neighbor (MetaWorkspace *workspace,
|
||||
|
||||
meta_verbose ("Getting neighbor of %d in direction %s\n",
|
||||
current_space, meta_motion_direction_to_string (direction));
|
||||
|
||||
|
||||
ltr = meta_ui_get_direction() == META_UI_DIRECTION_LTR;
|
||||
|
||||
switch (direction)
|
||||
switch (direction)
|
||||
{
|
||||
case META_MOTION_LEFT:
|
||||
layout.current_col -= ltr ? 1 : -1;
|
||||
@ -1199,12 +1199,12 @@ meta_workspace_get_neighbor (MetaWorkspace *workspace,
|
||||
if (i >= num_workspaces)
|
||||
meta_bug ("calc_workspace_layout left an invalid (too-high) workspace number %d in the grid\n",
|
||||
i);
|
||||
|
||||
|
||||
meta_verbose ("Neighbor workspace is %d at row %d col %d\n",
|
||||
i, layout.current_row, layout.current_col);
|
||||
|
||||
meta_screen_free_workspace_layout (&layout);
|
||||
|
||||
|
||||
return meta_screen_get_workspace_by_index (workspace->screen, i);
|
||||
}
|
||||
|
||||
@ -1258,7 +1258,7 @@ meta_workspace_focus_default_window (MetaWorkspace *workspace,
|
||||
}
|
||||
|
||||
if (workspace->screen->display->autoraise_window != window &&
|
||||
meta_prefs_get_auto_raise ())
|
||||
meta_prefs_get_auto_raise ())
|
||||
{
|
||||
meta_display_queue_autoraise_callback (workspace->screen->display,
|
||||
window);
|
||||
@ -1303,7 +1303,7 @@ focus_ancestor_or_top_window (MetaWorkspace *workspace,
|
||||
meta_topic (META_DEBUG_FOCUS,
|
||||
"Focusing MRU window\n");
|
||||
|
||||
/* First, check to see if we need to focus an ancestor of a window */
|
||||
/* First, check to see if we need to focus an ancestor of a window */
|
||||
if (not_this_one)
|
||||
{
|
||||
MetaWindow *ancestor;
|
||||
@ -1314,9 +1314,9 @@ focus_ancestor_or_top_window (MetaWorkspace *workspace,
|
||||
meta_window_showing_on_its_workspace (ancestor))
|
||||
{
|
||||
meta_topic (META_DEBUG_FOCUS,
|
||||
"Focusing %s, ancestor of %s\n",
|
||||
"Focusing %s, ancestor of %s\n",
|
||||
ancestor->desc, not_this_one->desc);
|
||||
|
||||
|
||||
meta_window_focus (ancestor, timestamp);
|
||||
|
||||
/* Also raise the window if in click-to-focus */
|
||||
@ -1335,7 +1335,7 @@ focus_ancestor_or_top_window (MetaWorkspace *workspace,
|
||||
{
|
||||
meta_topic (META_DEBUG_FOCUS,
|
||||
"Focusing workspace MRU window %s\n", window->desc);
|
||||
|
||||
|
||||
meta_window_focus (window, timestamp);
|
||||
|
||||
/* Also raise the window if in click-to-focus */
|
||||
|
@ -2,9 +2,9 @@
|
||||
|
||||
/* Simple box operations */
|
||||
|
||||
/*
|
||||
/*
|
||||
* Copyright (C) 2005, 2006 Elijah Newren
|
||||
*
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 of the
|
||||
@ -14,7 +14,7 @@
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
@ -4,10 +4,10 @@
|
||||
* PLEASE KEEP IN SYNC WITH GSETTINGS SCHEMAS!
|
||||
*/
|
||||
|
||||
/*
|
||||
/*
|
||||
* Copyright (C) 2001 Havoc Pennington
|
||||
* Copyright (C) 2005 Elijah Newren
|
||||
*
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 of the
|
||||
@ -17,7 +17,7 @@
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
@ -290,7 +290,7 @@ typedef enum
|
||||
*/
|
||||
META_VIRTUAL_SHIFT_MASK = 1 << 5,
|
||||
META_VIRTUAL_CONTROL_MASK = 1 << 6,
|
||||
META_VIRTUAL_ALT_MASK = 1 << 7,
|
||||
META_VIRTUAL_ALT_MASK = 1 << 7,
|
||||
META_VIRTUAL_META_MASK = 1 << 8,
|
||||
META_VIRTUAL_SUPER_MASK = 1 << 9,
|
||||
META_VIRTUAL_HYPER_MASK = 1 << 10,
|
||||
|
@ -2,9 +2,9 @@
|
||||
|
||||
/* Mutter X error handling */
|
||||
|
||||
/*
|
||||
/*
|
||||
* Copyright (C) 2001 Havoc Pennington
|
||||
*
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 of the
|
||||
@ -14,7 +14,7 @@
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
@ -2,10 +2,10 @@
|
||||
|
||||
/* Mutter gradient rendering */
|
||||
|
||||
/*
|
||||
/*
|
||||
* Copyright (C) 2001 Havoc Pennington, 99% copied from wrlib in
|
||||
* WindowMaker, Copyright (C) 1997-2000 Dan Pascu and Alfredo Kojima
|
||||
*
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 of the
|
||||
@ -15,7 +15,7 @@
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>. */
|
||||
|
||||
|
@ -2,9 +2,9 @@
|
||||
|
||||
/* Mutter window groups */
|
||||
|
||||
/*
|
||||
/*
|
||||
* Copyright (C) 2002 Red Hat Inc.
|
||||
*
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 of the
|
||||
@ -14,7 +14,7 @@
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
@ -2,9 +2,9 @@
|
||||
|
||||
/* Mutter main */
|
||||
|
||||
/*
|
||||
/*
|
||||
* Copyright (C) 2001 Havoc Pennington
|
||||
*
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 of the
|
||||
@ -14,7 +14,7 @@
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
176
src/meta/prefs.h
176
src/meta/prefs.h
@ -2,10 +2,10 @@
|
||||
|
||||
/* Mutter preferences */
|
||||
|
||||
/*
|
||||
/*
|
||||
* Copyright (C) 2001 Havoc Pennington
|
||||
* Copyright (C) 2006 Elijah Newren
|
||||
*
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 of the
|
||||
@ -15,7 +15,7 @@
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
@ -171,95 +171,95 @@ void meta_prefs_set_ignore_request_hide_titlebar (gboolean whether);
|
||||
|
||||
/**
|
||||
* MetaKeyBindingAction:
|
||||
* @META_KEYBINDING_ACTION_NONE: FILLME
|
||||
* @META_KEYBINDING_ACTION_WORKSPACE_1: FILLME
|
||||
* @META_KEYBINDING_ACTION_WORKSPACE_2: FILLME
|
||||
* @META_KEYBINDING_ACTION_WORKSPACE_3: FILLME
|
||||
* @META_KEYBINDING_ACTION_WORKSPACE_4: FILLME
|
||||
* @META_KEYBINDING_ACTION_WORKSPACE_5: FILLME
|
||||
* @META_KEYBINDING_ACTION_WORKSPACE_6: FILLME
|
||||
* @META_KEYBINDING_ACTION_WORKSPACE_7: FILLME
|
||||
* @META_KEYBINDING_ACTION_WORKSPACE_8: FILLME
|
||||
* @META_KEYBINDING_ACTION_WORKSPACE_9: FILLME
|
||||
* @META_KEYBINDING_ACTION_WORKSPACE_10: FILLME
|
||||
* @META_KEYBINDING_ACTION_WORKSPACE_11: FILLME
|
||||
* @META_KEYBINDING_ACTION_WORKSPACE_12: FILLME
|
||||
* @META_KEYBINDING_ACTION_WORKSPACE_LEFT: FILLME
|
||||
* @META_KEYBINDING_ACTION_WORKSPACE_RIGHT: FILLME
|
||||
* @META_KEYBINDING_ACTION_WORKSPACE_UP: FILLME
|
||||
* @META_KEYBINDING_ACTION_WORKSPACE_DOWN: FILLME
|
||||
* @META_KEYBINDING_ACTION_WORKSPACE_LAST: FILLME
|
||||
* @META_KEYBINDING_ACTION_SWITCH_APPLICATIONS: FILLME
|
||||
* @META_KEYBINDING_ACTION_SWITCH_APPLICATIONS_BACKWARD: FILLME
|
||||
* @META_KEYBINDING_ACTION_SWITCH_GROUP: FILLME
|
||||
* @META_KEYBINDING_ACTION_SWITCH_GROUP_BACKWARD: FILLME
|
||||
* @META_KEYBINDING_ACTION_SWITCH_WINDOWS: FILLME
|
||||
* @META_KEYBINDING_ACTION_SWITCH_WINDOWS_BACKWARD: FILLME
|
||||
* @META_KEYBINDING_ACTION_SWITCH_PANELS: FILLME
|
||||
* @META_KEYBINDING_ACTION_SWITCH_PANELS_BACKWARD: FILLME
|
||||
* @META_KEYBINDING_ACTION_CYCLE_GROUP: FILLME
|
||||
* @META_KEYBINDING_ACTION_CYCLE_GROUP_BACKWARD: FILLME
|
||||
* @META_KEYBINDING_ACTION_CYCLE_WINDOWS: FILLME
|
||||
* @META_KEYBINDING_ACTION_CYCLE_WINDOWS_BACKWARD: FILLME
|
||||
* @META_KEYBINDING_ACTION_CYCLE_PANELS: FILLME
|
||||
* @META_KEYBINDING_ACTION_CYCLE_PANELS_BACKWARD: FILLME
|
||||
* @META_KEYBINDING_ACTION_SHOW_DESKTOP: FILLME
|
||||
* @META_KEYBINDING_ACTION_PANEL_MAIN_MENU: FILLME
|
||||
* @META_KEYBINDING_ACTION_PANEL_RUN_DIALOG: FILLME
|
||||
* @META_KEYBINDING_ACTION_TOGGLE_RECORDING: FILLME
|
||||
* @META_KEYBINDING_ACTION_SET_SPEW_MARK: FILLME
|
||||
* @META_KEYBINDING_ACTION_ACTIVATE_WINDOW_MENU: FILLME
|
||||
* @META_KEYBINDING_ACTION_TOGGLE_FULLSCREEN: FILLME
|
||||
* @META_KEYBINDING_ACTION_TOGGLE_MAXIMIZED: FILLME
|
||||
* @META_KEYBINDING_ACTION_TOGGLE_TILED_LEFT: FILLME
|
||||
* @META_KEYBINDING_ACTION_TOGGLE_TILED_RIGHT: FILLME
|
||||
* @META_KEYBINDING_ACTION_TOGGLE_ABOVE: FILLME
|
||||
* @META_KEYBINDING_ACTION_MAXIMIZE: FILLME
|
||||
* @META_KEYBINDING_ACTION_UNMAXIMIZE: FILLME
|
||||
* @META_KEYBINDING_ACTION_TOGGLE_SHADED: FILLME
|
||||
* @META_KEYBINDING_ACTION_MINIMIZE: FILLME
|
||||
* @META_KEYBINDING_ACTION_CLOSE: FILLME
|
||||
* @META_KEYBINDING_ACTION_BEGIN_MOVE: FILLME
|
||||
* @META_KEYBINDING_ACTION_BEGIN_RESIZE: FILLME
|
||||
* @META_KEYBINDING_ACTION_TOGGLE_ON_ALL_WORKSPACES: FILLME
|
||||
* @META_KEYBINDING_ACTION_MOVE_TO_WORKSPACE_1: FILLME
|
||||
* @META_KEYBINDING_ACTION_MOVE_TO_WORKSPACE_2: FILLME
|
||||
* @META_KEYBINDING_ACTION_MOVE_TO_WORKSPACE_3: FILLME
|
||||
* @META_KEYBINDING_ACTION_MOVE_TO_WORKSPACE_4: FILLME
|
||||
* @META_KEYBINDING_ACTION_MOVE_TO_WORKSPACE_5: FILLME
|
||||
* @META_KEYBINDING_ACTION_MOVE_TO_WORKSPACE_6: FILLME
|
||||
* @META_KEYBINDING_ACTION_MOVE_TO_WORKSPACE_7: FILLME
|
||||
* @META_KEYBINDING_ACTION_MOVE_TO_WORKSPACE_8: FILLME
|
||||
* @META_KEYBINDING_ACTION_MOVE_TO_WORKSPACE_9: FILLME
|
||||
* @META_KEYBINDING_ACTION_MOVE_TO_WORKSPACE_10: FILLME
|
||||
* @META_KEYBINDING_ACTION_MOVE_TO_WORKSPACE_11: FILLME
|
||||
* @META_KEYBINDING_ACTION_MOVE_TO_WORKSPACE_12: FILLME
|
||||
* @META_KEYBINDING_ACTION_MOVE_TO_WORKSPACE_LEFT: FILLME
|
||||
* @META_KEYBINDING_ACTION_MOVE_TO_WORKSPACE_RIGHT: FILLME
|
||||
* @META_KEYBINDING_ACTION_MOVE_TO_WORKSPACE_UP: FILLME
|
||||
* @META_KEYBINDING_ACTION_MOVE_TO_WORKSPACE_DOWN: FILLME
|
||||
* @META_KEYBINDING_ACTION_MOVE_TO_WORKSPACE_LAST: FILLME
|
||||
* @META_KEYBINDING_ACTION_NONE: FILLME
|
||||
* @META_KEYBINDING_ACTION_WORKSPACE_1: FILLME
|
||||
* @META_KEYBINDING_ACTION_WORKSPACE_2: FILLME
|
||||
* @META_KEYBINDING_ACTION_WORKSPACE_3: FILLME
|
||||
* @META_KEYBINDING_ACTION_WORKSPACE_4: FILLME
|
||||
* @META_KEYBINDING_ACTION_WORKSPACE_5: FILLME
|
||||
* @META_KEYBINDING_ACTION_WORKSPACE_6: FILLME
|
||||
* @META_KEYBINDING_ACTION_WORKSPACE_7: FILLME
|
||||
* @META_KEYBINDING_ACTION_WORKSPACE_8: FILLME
|
||||
* @META_KEYBINDING_ACTION_WORKSPACE_9: FILLME
|
||||
* @META_KEYBINDING_ACTION_WORKSPACE_10: FILLME
|
||||
* @META_KEYBINDING_ACTION_WORKSPACE_11: FILLME
|
||||
* @META_KEYBINDING_ACTION_WORKSPACE_12: FILLME
|
||||
* @META_KEYBINDING_ACTION_WORKSPACE_LEFT: FILLME
|
||||
* @META_KEYBINDING_ACTION_WORKSPACE_RIGHT: FILLME
|
||||
* @META_KEYBINDING_ACTION_WORKSPACE_UP: FILLME
|
||||
* @META_KEYBINDING_ACTION_WORKSPACE_DOWN: FILLME
|
||||
* @META_KEYBINDING_ACTION_WORKSPACE_LAST: FILLME
|
||||
* @META_KEYBINDING_ACTION_SWITCH_APPLICATIONS: FILLME
|
||||
* @META_KEYBINDING_ACTION_SWITCH_APPLICATIONS_BACKWARD: FILLME
|
||||
* @META_KEYBINDING_ACTION_SWITCH_GROUP: FILLME
|
||||
* @META_KEYBINDING_ACTION_SWITCH_GROUP_BACKWARD: FILLME
|
||||
* @META_KEYBINDING_ACTION_SWITCH_WINDOWS: FILLME
|
||||
* @META_KEYBINDING_ACTION_SWITCH_WINDOWS_BACKWARD: FILLME
|
||||
* @META_KEYBINDING_ACTION_SWITCH_PANELS: FILLME
|
||||
* @META_KEYBINDING_ACTION_SWITCH_PANELS_BACKWARD: FILLME
|
||||
* @META_KEYBINDING_ACTION_CYCLE_GROUP: FILLME
|
||||
* @META_KEYBINDING_ACTION_CYCLE_GROUP_BACKWARD: FILLME
|
||||
* @META_KEYBINDING_ACTION_CYCLE_WINDOWS: FILLME
|
||||
* @META_KEYBINDING_ACTION_CYCLE_WINDOWS_BACKWARD: FILLME
|
||||
* @META_KEYBINDING_ACTION_CYCLE_PANELS: FILLME
|
||||
* @META_KEYBINDING_ACTION_CYCLE_PANELS_BACKWARD: FILLME
|
||||
* @META_KEYBINDING_ACTION_SHOW_DESKTOP: FILLME
|
||||
* @META_KEYBINDING_ACTION_PANEL_MAIN_MENU: FILLME
|
||||
* @META_KEYBINDING_ACTION_PANEL_RUN_DIALOG: FILLME
|
||||
* @META_KEYBINDING_ACTION_TOGGLE_RECORDING: FILLME
|
||||
* @META_KEYBINDING_ACTION_SET_SPEW_MARK: FILLME
|
||||
* @META_KEYBINDING_ACTION_ACTIVATE_WINDOW_MENU: FILLME
|
||||
* @META_KEYBINDING_ACTION_TOGGLE_FULLSCREEN: FILLME
|
||||
* @META_KEYBINDING_ACTION_TOGGLE_MAXIMIZED: FILLME
|
||||
* @META_KEYBINDING_ACTION_TOGGLE_TILED_LEFT: FILLME
|
||||
* @META_KEYBINDING_ACTION_TOGGLE_TILED_RIGHT: FILLME
|
||||
* @META_KEYBINDING_ACTION_TOGGLE_ABOVE: FILLME
|
||||
* @META_KEYBINDING_ACTION_MAXIMIZE: FILLME
|
||||
* @META_KEYBINDING_ACTION_UNMAXIMIZE: FILLME
|
||||
* @META_KEYBINDING_ACTION_TOGGLE_SHADED: FILLME
|
||||
* @META_KEYBINDING_ACTION_MINIMIZE: FILLME
|
||||
* @META_KEYBINDING_ACTION_CLOSE: FILLME
|
||||
* @META_KEYBINDING_ACTION_BEGIN_MOVE: FILLME
|
||||
* @META_KEYBINDING_ACTION_BEGIN_RESIZE: FILLME
|
||||
* @META_KEYBINDING_ACTION_TOGGLE_ON_ALL_WORKSPACES: FILLME
|
||||
* @META_KEYBINDING_ACTION_MOVE_TO_WORKSPACE_1: FILLME
|
||||
* @META_KEYBINDING_ACTION_MOVE_TO_WORKSPACE_2: FILLME
|
||||
* @META_KEYBINDING_ACTION_MOVE_TO_WORKSPACE_3: FILLME
|
||||
* @META_KEYBINDING_ACTION_MOVE_TO_WORKSPACE_4: FILLME
|
||||
* @META_KEYBINDING_ACTION_MOVE_TO_WORKSPACE_5: FILLME
|
||||
* @META_KEYBINDING_ACTION_MOVE_TO_WORKSPACE_6: FILLME
|
||||
* @META_KEYBINDING_ACTION_MOVE_TO_WORKSPACE_7: FILLME
|
||||
* @META_KEYBINDING_ACTION_MOVE_TO_WORKSPACE_8: FILLME
|
||||
* @META_KEYBINDING_ACTION_MOVE_TO_WORKSPACE_9: FILLME
|
||||
* @META_KEYBINDING_ACTION_MOVE_TO_WORKSPACE_10: FILLME
|
||||
* @META_KEYBINDING_ACTION_MOVE_TO_WORKSPACE_11: FILLME
|
||||
* @META_KEYBINDING_ACTION_MOVE_TO_WORKSPACE_12: FILLME
|
||||
* @META_KEYBINDING_ACTION_MOVE_TO_WORKSPACE_LEFT: FILLME
|
||||
* @META_KEYBINDING_ACTION_MOVE_TO_WORKSPACE_RIGHT: FILLME
|
||||
* @META_KEYBINDING_ACTION_MOVE_TO_WORKSPACE_UP: FILLME
|
||||
* @META_KEYBINDING_ACTION_MOVE_TO_WORKSPACE_DOWN: FILLME
|
||||
* @META_KEYBINDING_ACTION_MOVE_TO_WORKSPACE_LAST: FILLME
|
||||
* @META_KEYBINDING_ACTION_MOVE_TO_MONITOR_LEFT: FILLME
|
||||
* @META_KEYBINDING_ACTION_MOVE_TO_MONITOR_RIGHT: FILLME
|
||||
* @META_KEYBINDING_ACTION_MOVE_TO_MONITOR_UP: FILLME
|
||||
* @META_KEYBINDING_ACTION_MOVE_TO_MONITOR_DOWN: FILLME
|
||||
* @META_KEYBINDING_ACTION_RAISE_OR_LOWER: FILLME
|
||||
* @META_KEYBINDING_ACTION_RAISE: FILLME
|
||||
* @META_KEYBINDING_ACTION_LOWER: FILLME
|
||||
* @META_KEYBINDING_ACTION_MAXIMIZE_VERTICALLY: FILLME
|
||||
* @META_KEYBINDING_ACTION_MAXIMIZE_HORIZONTALLY: FILLME
|
||||
* @META_KEYBINDING_ACTION_MOVE_TO_CORNER_NW: FILLME
|
||||
* @META_KEYBINDING_ACTION_MOVE_TO_CORNER_NE: FILLME
|
||||
* @META_KEYBINDING_ACTION_MOVE_TO_CORNER_SW: FILLME
|
||||
* @META_KEYBINDING_ACTION_MOVE_TO_CORNER_SE: FILLME
|
||||
* @META_KEYBINDING_ACTION_MOVE_TO_SIDE_N: FILLME
|
||||
* @META_KEYBINDING_ACTION_MOVE_TO_SIDE_S: FILLME
|
||||
* @META_KEYBINDING_ACTION_MOVE_TO_SIDE_E: FILLME
|
||||
* @META_KEYBINDING_ACTION_MOVE_TO_SIDE_W: FILLME
|
||||
* @META_KEYBINDING_ACTION_MOVE_TO_CENTER: FILLME
|
||||
* @META_KEYBINDING_ACTION_OVERLAY_KEY: FILLME
|
||||
* @META_KEYBINDING_ACTION_ALWAYS_ON_TOP: FILLME
|
||||
* @META_KEYBINDING_ACTION_LAST: FILLME
|
||||
* @META_KEYBINDING_ACTION_RAISE_OR_LOWER: FILLME
|
||||
* @META_KEYBINDING_ACTION_RAISE: FILLME
|
||||
* @META_KEYBINDING_ACTION_LOWER: FILLME
|
||||
* @META_KEYBINDING_ACTION_MAXIMIZE_VERTICALLY: FILLME
|
||||
* @META_KEYBINDING_ACTION_MAXIMIZE_HORIZONTALLY: FILLME
|
||||
* @META_KEYBINDING_ACTION_MOVE_TO_CORNER_NW: FILLME
|
||||
* @META_KEYBINDING_ACTION_MOVE_TO_CORNER_NE: FILLME
|
||||
* @META_KEYBINDING_ACTION_MOVE_TO_CORNER_SW: FILLME
|
||||
* @META_KEYBINDING_ACTION_MOVE_TO_CORNER_SE: FILLME
|
||||
* @META_KEYBINDING_ACTION_MOVE_TO_SIDE_N: FILLME
|
||||
* @META_KEYBINDING_ACTION_MOVE_TO_SIDE_S: FILLME
|
||||
* @META_KEYBINDING_ACTION_MOVE_TO_SIDE_E: FILLME
|
||||
* @META_KEYBINDING_ACTION_MOVE_TO_SIDE_W: FILLME
|
||||
* @META_KEYBINDING_ACTION_MOVE_TO_CENTER: FILLME
|
||||
* @META_KEYBINDING_ACTION_OVERLAY_KEY: FILLME
|
||||
* @META_KEYBINDING_ACTION_ALWAYS_ON_TOP: FILLME
|
||||
* @META_KEYBINDING_ACTION_LAST: FILLME
|
||||
*/
|
||||
/* XXX FIXME This should be x-macroed, but isn't yet because it would be
|
||||
* difficult (or perhaps impossible) to add the suffixes using the current
|
||||
|
@ -2,9 +2,9 @@
|
||||
|
||||
/* Metacity Theme Rendering */
|
||||
|
||||
/*
|
||||
/*
|
||||
* Copyright (C) 2001 Havoc Pennington
|
||||
*
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 of the
|
||||
@ -14,7 +14,7 @@
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
@ -2,10 +2,10 @@
|
||||
|
||||
/* Mutter utilities */
|
||||
|
||||
/*
|
||||
/*
|
||||
* Copyright (C) 2001 Havoc Pennington
|
||||
* Copyright (C) 2005 Elijah Newren
|
||||
*
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 of the
|
||||
@ -15,7 +15,7 @@
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
172
src/ui/frames.c
172
src/ui/frames.c
@ -2,11 +2,11 @@
|
||||
|
||||
/* Metacity window frame manager widget */
|
||||
|
||||
/*
|
||||
/*
|
||||
* Copyright (C) 2001 Havoc Pennington
|
||||
* Copyright (C) 2003 Red Hat, Inc.
|
||||
* Copyright (C) 2005, 2006 Elijah Newren
|
||||
*
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 of the
|
||||
@ -16,7 +16,7 @@
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
@ -129,7 +129,7 @@ meta_frames_class_init (MetaFramesClass *class)
|
||||
widget_class->style_updated = meta_frames_style_updated;
|
||||
|
||||
widget_class->draw = meta_frames_draw;
|
||||
widget_class->destroy_event = meta_frames_destroy_event;
|
||||
widget_class->destroy_event = meta_frames_destroy_event;
|
||||
widget_class->button_press_event = meta_frames_button_press_event;
|
||||
widget_class->button_release_event = meta_frames_button_release_event;
|
||||
widget_class->motion_notify_event = meta_frames_motion_notify_event;
|
||||
@ -217,7 +217,7 @@ static void
|
||||
meta_frames_init (MetaFrames *frames)
|
||||
{
|
||||
frames->text_heights = g_hash_table_new (NULL, NULL);
|
||||
|
||||
|
||||
frames->frames = g_hash_table_new (unsigned_long_hash, unsigned_long_equal);
|
||||
|
||||
frames->style_variants = g_hash_table_new_full (g_str_hash, g_str_equal,
|
||||
@ -245,7 +245,7 @@ meta_frames_destroy (GtkWidget *object)
|
||||
GSList *winlist;
|
||||
GSList *tmp;
|
||||
MetaFrames *frames;
|
||||
|
||||
|
||||
frames = META_FRAMES (object);
|
||||
|
||||
winlist = NULL;
|
||||
@ -281,13 +281,13 @@ static void
|
||||
meta_frames_finalize (GObject *object)
|
||||
{
|
||||
MetaFrames *frames;
|
||||
|
||||
|
||||
frames = META_FRAMES (object);
|
||||
|
||||
meta_prefs_remove_listener (prefs_changed_callback, frames);
|
||||
|
||||
|
||||
g_hash_table_destroy (frames->text_heights);
|
||||
|
||||
|
||||
g_assert (g_hash_table_size (frames->frames) == 0);
|
||||
g_hash_table_destroy (frames->frames);
|
||||
|
||||
@ -308,7 +308,7 @@ queue_recalc_func (gpointer key, gpointer value, gpointer data)
|
||||
* in case of color change.
|
||||
*/
|
||||
meta_frames_set_window_background (frames, frame);
|
||||
|
||||
|
||||
invalidate_whole_window (frames, frame);
|
||||
meta_core_queue_frame_resize (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()),
|
||||
frame->xwindow);
|
||||
@ -316,7 +316,7 @@ queue_recalc_func (gpointer key, gpointer value, gpointer data)
|
||||
{
|
||||
/* save title to recreate layout */
|
||||
g_free (frame->title);
|
||||
|
||||
|
||||
frame->title = g_strdup (pango_layout_get_text (frame->layout));
|
||||
|
||||
g_object_unref (G_OBJECT (frame->layout));
|
||||
@ -332,7 +332,7 @@ meta_frames_font_changed (MetaFrames *frames)
|
||||
g_hash_table_destroy (frames->text_heights);
|
||||
frames->text_heights = g_hash_table_new (NULL, NULL);
|
||||
}
|
||||
|
||||
|
||||
/* Queue a draw/resize on all frames */
|
||||
g_hash_table_foreach (frames->frames,
|
||||
queue_recalc_func, frames);
|
||||
@ -405,7 +405,7 @@ meta_frames_ensure_layout (MetaFrames *frames,
|
||||
widget = GTK_WIDGET (frames);
|
||||
|
||||
g_return_if_fail (gtk_widget_get_realized (widget));
|
||||
|
||||
|
||||
meta_core_get (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()), frame->xwindow,
|
||||
META_CORE_GET_FRAME_FLAGS, &flags,
|
||||
META_CORE_GET_FRAME_TYPE, &type,
|
||||
@ -420,7 +420,7 @@ meta_frames_ensure_layout (MetaFrames *frames,
|
||||
{
|
||||
/* save title to recreate layout */
|
||||
g_free (frame->title);
|
||||
|
||||
|
||||
frame->title = g_strdup (pango_layout_get_text (frame->layout));
|
||||
|
||||
g_object_unref (G_OBJECT (frame->layout));
|
||||
@ -429,18 +429,18 @@ meta_frames_ensure_layout (MetaFrames *frames,
|
||||
}
|
||||
|
||||
frame->cache_style = style;
|
||||
|
||||
|
||||
if (frame->layout == NULL)
|
||||
{
|
||||
gpointer key, value;
|
||||
PangoFontDescription *font_desc;
|
||||
double scale;
|
||||
int size;
|
||||
|
||||
|
||||
scale = meta_theme_get_title_scale (meta_theme_get_current (),
|
||||
type,
|
||||
flags);
|
||||
|
||||
|
||||
frame->layout = gtk_widget_create_pango_layout (widget, frame->title);
|
||||
|
||||
pango_layout_set_ellipsize (frame->layout, PANGO_ELLIPSIZE_END);
|
||||
@ -468,10 +468,10 @@ meta_frames_ensure_layout (MetaFrames *frames,
|
||||
GINT_TO_POINTER (size),
|
||||
GINT_TO_POINTER (frame->text_height));
|
||||
}
|
||||
|
||||
pango_layout_set_font_description (frame->layout,
|
||||
|
||||
pango_layout_set_font_description (frame->layout,
|
||||
font_desc);
|
||||
|
||||
|
||||
pango_font_description_free (font_desc);
|
||||
|
||||
/* Save some RAM */
|
||||
@ -489,7 +489,7 @@ meta_frames_calc_geometry (MetaFrames *frames,
|
||||
MetaFrameFlags flags;
|
||||
MetaFrameType type;
|
||||
MetaButtonLayout button_layout;
|
||||
|
||||
|
||||
meta_core_get (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()), frame->xwindow,
|
||||
META_CORE_GET_CLIENT_WIDTH, &width,
|
||||
META_CORE_GET_CLIENT_HEIGHT, &height,
|
||||
@ -500,7 +500,7 @@ meta_frames_calc_geometry (MetaFrames *frames,
|
||||
meta_frames_ensure_layout (frames, frame);
|
||||
|
||||
meta_prefs_get_button_layout (&button_layout);
|
||||
|
||||
|
||||
meta_theme_calc_geometry (meta_theme_get_current (),
|
||||
type,
|
||||
frame->text_height,
|
||||
@ -575,7 +575,7 @@ meta_frames_manage_window (MetaFrames *frames,
|
||||
g_assert (window);
|
||||
|
||||
frame = g_new (MetaUIFrame, 1);
|
||||
|
||||
|
||||
frame->window = window;
|
||||
|
||||
gdk_window_set_user_data (frame->window, frames);
|
||||
@ -583,7 +583,7 @@ meta_frames_manage_window (MetaFrames *frames,
|
||||
frame->style = NULL;
|
||||
|
||||
/* Don't set event mask here, it's in frame.c */
|
||||
|
||||
|
||||
frame->xwindow = xwindow;
|
||||
frame->cache_style = NULL;
|
||||
frame->layout = NULL;
|
||||
@ -596,9 +596,9 @@ meta_frames_manage_window (MetaFrames *frames,
|
||||
* registered with its MetaWindow, which happens after this function
|
||||
* and meta_ui_create_frame_window() return to meta_window_ensure_frame().
|
||||
*/
|
||||
|
||||
|
||||
meta_core_grab_buttons (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()), frame->xwindow);
|
||||
|
||||
|
||||
g_hash_table_replace (frames->frames, &frame->xwindow, frame);
|
||||
}
|
||||
|
||||
@ -621,7 +621,7 @@ meta_frames_unmanage_window (MetaFrames *frames,
|
||||
|
||||
if (frames->last_motion_frame == frame)
|
||||
frames->last_motion_frame = NULL;
|
||||
|
||||
|
||||
g_hash_table_remove (frames->frames, &frame->xwindow);
|
||||
|
||||
g_object_unref (frame->style);
|
||||
@ -633,7 +633,7 @@ meta_frames_unmanage_window (MetaFrames *frames,
|
||||
|
||||
if (frame->title)
|
||||
g_free (frame->title);
|
||||
|
||||
|
||||
g_free (frame);
|
||||
}
|
||||
else
|
||||
@ -667,7 +667,7 @@ meta_ui_frame_get_borders (MetaFrames *frames,
|
||||
g_return_if_fail (type < META_FRAME_TYPE_LAST);
|
||||
|
||||
meta_frames_ensure_layout (frames, frame);
|
||||
|
||||
|
||||
/* We can't get the full geometry, because that depends on
|
||||
* the client window size and probably we're being called
|
||||
* by the core move/resize code to decide on the client
|
||||
@ -731,7 +731,7 @@ meta_frames_reset_bg (MetaFrames *frames,
|
||||
Window xwindow)
|
||||
{
|
||||
MetaUIFrame *frame;
|
||||
|
||||
|
||||
frame = meta_frames_lookup_window (frames, xwindow);
|
||||
|
||||
meta_frames_set_window_background (frames, frame);
|
||||
@ -755,7 +755,7 @@ meta_frames_unflicker_bg (MetaFrames *frames,
|
||||
int target_height)
|
||||
{
|
||||
MetaUIFrame *frame;
|
||||
|
||||
|
||||
frame = meta_frames_lookup_window (frames, xwindow);
|
||||
g_return_if_fail (frame != NULL);
|
||||
|
||||
@ -807,7 +807,7 @@ get_visible_region (MetaFrames *frames,
|
||||
|
||||
corners_region = cairo_region_create ();
|
||||
get_visible_frame_rect (fgeom, window_width, window_height, &frame_rect);
|
||||
|
||||
|
||||
if (fgeom->top_left_corner_rounded_radius != 0)
|
||||
{
|
||||
const int corner = fgeom->top_left_corner_rounded_radius;
|
||||
@ -821,7 +821,7 @@ get_visible_region (MetaFrames *frames,
|
||||
rect.y = frame_rect.y + i;
|
||||
rect.width = width;
|
||||
rect.height = 1;
|
||||
|
||||
|
||||
cairo_region_union_rectangle (corners_region, &rect);
|
||||
}
|
||||
}
|
||||
@ -839,7 +839,7 @@ get_visible_region (MetaFrames *frames,
|
||||
rect.y = frame_rect.y + i;
|
||||
rect.width = width;
|
||||
rect.height = 1;
|
||||
|
||||
|
||||
cairo_region_union_rectangle (corners_region, &rect);
|
||||
}
|
||||
}
|
||||
@ -857,7 +857,7 @@ get_visible_region (MetaFrames *frames,
|
||||
rect.y = frame_rect.y + frame_rect.height - i - 1;
|
||||
rect.width = width;
|
||||
rect.height = 1;
|
||||
|
||||
|
||||
cairo_region_union_rectangle (corners_region, &rect);
|
||||
}
|
||||
}
|
||||
@ -875,11 +875,11 @@ get_visible_region (MetaFrames *frames,
|
||||
rect.y = frame_rect.y + frame_rect.height - i - 1;
|
||||
rect.width = width;
|
||||
rect.height = 1;
|
||||
|
||||
|
||||
cairo_region_union_rectangle (corners_region, &rect);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
visible_region = cairo_region_create_rectangle (&frame_rect);
|
||||
cairo_region_subtract (visible_region, corners_region);
|
||||
cairo_region_destroy (corners_region);
|
||||
@ -916,7 +916,7 @@ meta_frames_move_resize_frame (MetaFrames *frames,
|
||||
{
|
||||
MetaUIFrame *frame = meta_frames_lookup_window (frames, xwindow);
|
||||
int old_width, old_height;
|
||||
|
||||
|
||||
old_width = gdk_window_get_width (frame->window);
|
||||
old_height = gdk_window_get_height (frame->window);
|
||||
|
||||
@ -931,7 +931,7 @@ meta_frames_queue_draw (MetaFrames *frames,
|
||||
Window xwindow)
|
||||
{
|
||||
MetaUIFrame *frame;
|
||||
|
||||
|
||||
frame = meta_frames_lookup_window (frames, xwindow);
|
||||
|
||||
invalidate_whole_window (frames, frame);
|
||||
@ -943,14 +943,14 @@ meta_frames_set_title (MetaFrames *frames,
|
||||
const char *title)
|
||||
{
|
||||
MetaUIFrame *frame;
|
||||
|
||||
|
||||
frame = meta_frames_lookup_window (frames, xwindow);
|
||||
|
||||
g_assert (frame);
|
||||
|
||||
|
||||
g_free (frame->title);
|
||||
frame->title = g_strdup (title);
|
||||
|
||||
|
||||
if (frame->layout)
|
||||
{
|
||||
g_object_unref (frame->layout);
|
||||
@ -979,7 +979,7 @@ meta_frames_repaint_frame (MetaFrames *frames,
|
||||
Window xwindow)
|
||||
{
|
||||
MetaUIFrame *frame;
|
||||
|
||||
|
||||
frame = meta_frames_lookup_window (frames, xwindow);
|
||||
|
||||
g_assert (frame);
|
||||
@ -997,7 +997,7 @@ redraw_control (MetaFrames *frames,
|
||||
{
|
||||
MetaFrameGeometry fgeom;
|
||||
GdkRectangle *rect;
|
||||
|
||||
|
||||
meta_frames_calc_geometry (frames, frame, &fgeom);
|
||||
|
||||
rect = control_rect (control, &fgeom);
|
||||
@ -1014,7 +1014,7 @@ meta_frame_titlebar_event (MetaUIFrame *frame,
|
||||
Display *display;
|
||||
|
||||
display = GDK_DISPLAY_XDISPLAY (gdk_display_get_default ());
|
||||
|
||||
|
||||
switch (action)
|
||||
{
|
||||
case G_DESKTOP_TITLEBAR_ACTION_TOGGLE_SHADE:
|
||||
@ -1022,7 +1022,7 @@ meta_frame_titlebar_event (MetaUIFrame *frame,
|
||||
meta_core_get (display, frame->xwindow,
|
||||
META_CORE_GET_FRAME_FLAGS, &flags,
|
||||
META_CORE_GET_END);
|
||||
|
||||
|
||||
if (flags & META_FRAME_ALLOWS_SHADE)
|
||||
{
|
||||
if (flags & META_FRAME_SHADED)
|
||||
@ -1035,14 +1035,14 @@ meta_frame_titlebar_event (MetaUIFrame *frame,
|
||||
event->time);
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
break;
|
||||
|
||||
case G_DESKTOP_TITLEBAR_ACTION_TOGGLE_MAXIMIZE:
|
||||
{
|
||||
meta_core_get (display, frame->xwindow,
|
||||
META_CORE_GET_FRAME_FLAGS, &flags,
|
||||
META_CORE_GET_END);
|
||||
|
||||
|
||||
if (flags & META_FRAME_ALLOWS_MAXIMIZE)
|
||||
{
|
||||
meta_core_toggle_maximize (display, frame->xwindow);
|
||||
@ -1055,7 +1055,7 @@ meta_frame_titlebar_event (MetaUIFrame *frame,
|
||||
meta_core_get (display, frame->xwindow,
|
||||
META_CORE_GET_FRAME_FLAGS, &flags,
|
||||
META_CORE_GET_END);
|
||||
|
||||
|
||||
if (flags & META_FRAME_ALLOWS_MAXIMIZE)
|
||||
{
|
||||
meta_core_toggle_maximize_horizontally (display, frame->xwindow);
|
||||
@ -1068,7 +1068,7 @@ meta_frame_titlebar_event (MetaUIFrame *frame,
|
||||
meta_core_get (display, frame->xwindow,
|
||||
META_CORE_GET_FRAME_FLAGS, &flags,
|
||||
META_CORE_GET_END);
|
||||
|
||||
|
||||
if (flags & META_FRAME_ALLOWS_MAXIMIZE)
|
||||
{
|
||||
meta_core_toggle_maximize_vertically (display, frame->xwindow);
|
||||
@ -1081,7 +1081,7 @@ meta_frame_titlebar_event (MetaUIFrame *frame,
|
||||
meta_core_get (display, frame->xwindow,
|
||||
META_CORE_GET_FRAME_FLAGS, &flags,
|
||||
META_CORE_GET_END);
|
||||
|
||||
|
||||
if (flags & META_FRAME_ALLOWS_MINIMIZE)
|
||||
{
|
||||
meta_core_minimize (display, frame->xwindow);
|
||||
@ -1092,7 +1092,7 @@ meta_frame_titlebar_event (MetaUIFrame *frame,
|
||||
case G_DESKTOP_TITLEBAR_ACTION_NONE:
|
||||
/* Yaay, a sane user that doesn't use that other weird crap! */
|
||||
break;
|
||||
|
||||
|
||||
case G_DESKTOP_TITLEBAR_ACTION_LOWER:
|
||||
meta_core_user_lower_and_unfocus (display,
|
||||
frame->xwindow,
|
||||
@ -1108,7 +1108,7 @@ meta_frame_titlebar_event (MetaUIFrame *frame,
|
||||
event->time);
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
@ -1117,7 +1117,7 @@ meta_frame_double_click_event (MetaUIFrame *frame,
|
||||
GdkEventButton *event)
|
||||
{
|
||||
int action = meta_prefs_get_action_double_click_titlebar ();
|
||||
|
||||
|
||||
return meta_frame_titlebar_event (frame, event, action);
|
||||
}
|
||||
|
||||
@ -1126,7 +1126,7 @@ meta_frame_middle_click_event (MetaUIFrame *frame,
|
||||
GdkEventButton *event)
|
||||
{
|
||||
int action = meta_prefs_get_action_middle_click_titlebar();
|
||||
|
||||
|
||||
return meta_frame_titlebar_event (frame, event, action);
|
||||
}
|
||||
|
||||
@ -1135,7 +1135,7 @@ meta_frame_right_click_event(MetaUIFrame *frame,
|
||||
GdkEventButton *event)
|
||||
{
|
||||
int action = meta_prefs_get_action_right_click_titlebar();
|
||||
|
||||
|
||||
return meta_frame_titlebar_event (frame, event, action);
|
||||
}
|
||||
|
||||
@ -1147,14 +1147,14 @@ meta_frames_button_press_event (GtkWidget *widget,
|
||||
MetaFrames *frames;
|
||||
MetaFrameControl control;
|
||||
Display *display;
|
||||
|
||||
|
||||
frames = META_FRAMES (widget);
|
||||
display = GDK_DISPLAY_XDISPLAY (gdk_display_get_default ());
|
||||
|
||||
/* Remember that the display may have already done something with this event.
|
||||
* If so there's probably a GrabOp in effect.
|
||||
*/
|
||||
|
||||
|
||||
frame = meta_frames_lookup_window (frames, GDK_WINDOW_XID (event->window));
|
||||
if (frame == NULL)
|
||||
return FALSE;
|
||||
@ -1172,13 +1172,13 @@ meta_frames_button_press_event (GtkWidget *widget,
|
||||
frame->xwindow);
|
||||
meta_core_user_focus (display,
|
||||
frame->xwindow,
|
||||
event->time);
|
||||
event->time);
|
||||
}
|
||||
|
||||
/* don't do the rest of this if on client area */
|
||||
if (control == META_FRAME_CONTROL_CLIENT_AREA)
|
||||
return FALSE; /* not on the frame, just passed through from client */
|
||||
|
||||
|
||||
/* We want to shade even if we have a GrabOp, since we'll have a move grab
|
||||
* if we double click the titlebar.
|
||||
*/
|
||||
@ -1191,7 +1191,7 @@ meta_frames_button_press_event (GtkWidget *widget,
|
||||
}
|
||||
|
||||
if (meta_core_get_grab_op (display) != META_GRAB_OP_NONE)
|
||||
return FALSE; /* already up to something */
|
||||
return FALSE; /* already up to something */
|
||||
|
||||
if (event->button == 1 &&
|
||||
(control == META_FRAME_CONTROL_MAXIMIZE ||
|
||||
@ -1226,7 +1226,7 @@ meta_frames_button_press_event (GtkWidget *widget,
|
||||
/* get delta to convert to root coords */
|
||||
dx = event->x_root - event->x;
|
||||
dy = event->y_root - event->y;
|
||||
|
||||
|
||||
/* Align to the right end of the menu rectangle if RTL */
|
||||
if (meta_ui_get_direction() == META_UI_DIRECTION_RTL)
|
||||
dx += rect->width;
|
||||
@ -1250,7 +1250,7 @@ meta_frames_button_press_event (GtkWidget *widget,
|
||||
control == META_FRAME_CONTROL_RESIZE_W))
|
||||
{
|
||||
MetaGrabOp op;
|
||||
|
||||
|
||||
op = META_GRAB_OP_NONE;
|
||||
|
||||
switch (control)
|
||||
@ -1305,7 +1305,7 @@ meta_frames_button_press_event (GtkWidget *widget,
|
||||
META_CORE_GET_END);
|
||||
|
||||
if (flags & META_FRAME_ALLOWS_MOVE)
|
||||
{
|
||||
{
|
||||
meta_core_begin_grab_op (display,
|
||||
frame->xwindow,
|
||||
META_GRAB_OP_MOVING,
|
||||
@ -1326,7 +1326,7 @@ meta_frames_button_press_event (GtkWidget *widget,
|
||||
{
|
||||
return meta_frame_right_click_event (frame, event);
|
||||
}
|
||||
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
@ -1337,7 +1337,7 @@ meta_frames_button_release_event (GtkWidget *widget,
|
||||
MetaUIFrame *frame;
|
||||
MetaFrames *frames;
|
||||
Display *display;
|
||||
|
||||
|
||||
frames = META_FRAMES (widget);
|
||||
display = GDK_DISPLAY_XDISPLAY (gdk_display_get_default ());
|
||||
|
||||
@ -1360,7 +1360,7 @@ meta_frames_button_release_event (GtkWidget *widget,
|
||||
break;
|
||||
case META_FRAME_CONTROL_MAXIMIZE:
|
||||
/* Focus the window on the maximize */
|
||||
meta_core_user_focus (display, frame->xwindow, event->time);
|
||||
meta_core_user_focus (display, frame->xwindow, event->time);
|
||||
meta_core_maximize (display, frame->xwindow);
|
||||
break;
|
||||
case META_FRAME_CONTROL_UNMAXIMIZE:
|
||||
@ -1399,7 +1399,7 @@ meta_frames_button_release_event (GtkWidget *widget,
|
||||
MetaFrameControl control = get_control (frames, frame, event->x, event->y);
|
||||
meta_frames_update_prelit_control (frames, frame, control);
|
||||
}
|
||||
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
@ -1413,9 +1413,9 @@ meta_frames_update_prelit_control (MetaFrames *frames,
|
||||
|
||||
meta_verbose ("Updating prelit control from %u to %u\n",
|
||||
frame->prelit_control, control);
|
||||
|
||||
|
||||
cursor = META_CURSOR_DEFAULT;
|
||||
|
||||
|
||||
switch (control)
|
||||
{
|
||||
case META_FRAME_CONTROL_CLIENT_AREA:
|
||||
@ -1470,12 +1470,12 @@ meta_frames_update_prelit_control (MetaFrames *frames,
|
||||
case META_FRAME_CONTROL_RESIZE_E:
|
||||
cursor = META_CURSOR_EAST_RESIZE;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/* set/unset the prelight cursor */
|
||||
meta_core_set_screen_cursor (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()),
|
||||
frame->xwindow,
|
||||
cursor);
|
||||
cursor);
|
||||
|
||||
switch (control)
|
||||
{
|
||||
@ -1496,7 +1496,7 @@ meta_frames_update_prelit_control (MetaFrames *frames,
|
||||
/* Only prelight buttons */
|
||||
control = META_FRAME_CONTROL_NONE;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (control == frame->prelit_control)
|
||||
return;
|
||||
@ -1546,7 +1546,7 @@ meta_frames_motion_notify_event (GtkWidget *widget,
|
||||
/* Update prelit control and cursor */
|
||||
meta_frames_update_prelit_control (frames, frame, control);
|
||||
}
|
||||
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
@ -1562,7 +1562,7 @@ meta_frames_destroy_event (GtkWidget *widget,
|
||||
frame = meta_frames_lookup_window (frames, GDK_WINDOW_XID (event->window));
|
||||
if (frame == NULL)
|
||||
return FALSE;
|
||||
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
@ -1600,7 +1600,7 @@ clip_region_to_visible_frame_border (cairo_region_t *region,
|
||||
MetaFrameBorders borders;
|
||||
Display *display;
|
||||
int frame_width, frame_height;
|
||||
|
||||
|
||||
display = GDK_DISPLAY_XDISPLAY (gdk_display_get_default ());
|
||||
|
||||
meta_core_get (display, frame->xwindow,
|
||||
@ -1611,7 +1611,7 @@ clip_region_to_visible_frame_border (cairo_region_t *region,
|
||||
META_CORE_GET_END);
|
||||
|
||||
meta_theme_get_frame_borders (meta_theme_get_current (),
|
||||
type, frame->text_height, flags,
|
||||
type, frame->text_height, flags,
|
||||
&borders);
|
||||
|
||||
/* Visible frame rect */
|
||||
@ -1768,7 +1768,7 @@ meta_frames_draw (GtkWidget *widget,
|
||||
|
||||
out:
|
||||
cairo_region_destroy (region);
|
||||
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
@ -1792,7 +1792,7 @@ meta_frames_paint (MetaFrames *frames,
|
||||
|
||||
for (i = 0; i < META_BUTTON_TYPE_LAST; i++)
|
||||
button_states[i] = META_BUTTON_STATE_NORMAL;
|
||||
|
||||
|
||||
/* Set prelight state */
|
||||
switch (frame->prelit_control)
|
||||
{
|
||||
@ -1915,7 +1915,7 @@ meta_frames_enter_notify_event (GtkWidget *widget,
|
||||
MetaUIFrame *frame;
|
||||
MetaFrames *frames;
|
||||
MetaFrameControl control;
|
||||
|
||||
|
||||
frames = META_FRAMES (widget);
|
||||
|
||||
frame = meta_frames_lookup_window (frames, GDK_WINDOW_XID (event->window));
|
||||
@ -1924,7 +1924,7 @@ meta_frames_enter_notify_event (GtkWidget *widget,
|
||||
|
||||
control = get_control (frames, frame, event->x, event->y);
|
||||
meta_frames_update_prelit_control (frames, frame, control);
|
||||
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
@ -1942,7 +1942,7 @@ meta_frames_leave_notify_event (GtkWidget *widget,
|
||||
return FALSE;
|
||||
|
||||
meta_frames_update_prelit_control (frames, frame, META_FRAME_CONTROL_NONE);
|
||||
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
@ -1951,7 +1951,7 @@ control_rect (MetaFrameControl control,
|
||||
MetaFrameGeometry *fgeom)
|
||||
{
|
||||
GdkRectangle *rect;
|
||||
|
||||
|
||||
rect = NULL;
|
||||
switch (control)
|
||||
{
|
||||
@ -2033,7 +2033,7 @@ get_control (MetaFrames *frames,
|
||||
|
||||
if (POINT_IN_RECT (x, y, client))
|
||||
return META_FRAME_CONTROL_CLIENT_AREA;
|
||||
|
||||
|
||||
if (POINT_IN_RECT (x, y, fgeom.close_rect.clickable))
|
||||
return META_FRAME_CONTROL_DELETE;
|
||||
|
||||
@ -2068,7 +2068,7 @@ get_control (MetaFrames *frames,
|
||||
else
|
||||
return META_FRAME_CONTROL_MAXIMIZE;
|
||||
}
|
||||
|
||||
|
||||
if (POINT_IN_RECT (x, y, fgeom.shade_rect.clickable))
|
||||
{
|
||||
return META_FRAME_CONTROL_SHADE;
|
||||
|
@ -2,9 +2,9 @@
|
||||
|
||||
/* Metacity window frame manager widget */
|
||||
|
||||
/*
|
||||
/*
|
||||
* Copyright (C) 2001 Havoc Pennington
|
||||
*
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 of the
|
||||
@ -14,7 +14,7 @@
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
@ -79,7 +79,7 @@ struct _MetaUIFrame
|
||||
int text_height;
|
||||
char *title; /* NULL once we have a layout */
|
||||
guint shape_applied : 1;
|
||||
|
||||
|
||||
/* FIXME get rid of this, it can just be in the MetaFrames struct */
|
||||
MetaFrameControl prelit_control;
|
||||
MetaButtonState button_state;
|
||||
@ -89,7 +89,7 @@ struct _MetaUIFrame
|
||||
struct _MetaFrames
|
||||
{
|
||||
GtkWindow parent_instance;
|
||||
|
||||
|
||||
GHashTable *text_heights;
|
||||
|
||||
GHashTable *frames;
|
||||
|
@ -1,10 +1,10 @@
|
||||
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
|
||||
|
||||
/*
|
||||
/*
|
||||
* Copyright (C) 2001 Havoc Pennington, 99% copied from wrlib in
|
||||
* WindowMaker, Copyright (C) 1997-2000 Dan Pascu and Alfredo Kojima
|
||||
* Copyright (C) 2005 Elijah Newren
|
||||
*
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 of the
|
||||
@ -14,7 +14,7 @@
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>. */
|
||||
|
||||
@ -76,7 +76,7 @@ blank_pixbuf (int width, int height, gboolean no_padding)
|
||||
if (no_padding)
|
||||
rowstride = width * 3;
|
||||
else
|
||||
/* Always align rows to 32-bit boundaries */
|
||||
/* Always align rows to 32-bit boundaries */
|
||||
rowstride = 4 * ((3 * width + 3) / 4);
|
||||
|
||||
buf = g_try_malloc (height * rowstride);
|
||||
@ -194,7 +194,7 @@ meta_gradient_create_interwoven (int width,
|
||||
const GdkRGBA colors2[2],
|
||||
int thickness2)
|
||||
{
|
||||
|
||||
|
||||
int i, j, k, l, ll;
|
||||
long r1, g1, b1, dr1, dg1, db1;
|
||||
long r2, g2, b2, dr2, dg2, db2;
|
||||
@ -202,14 +202,14 @@ meta_gradient_create_interwoven (int width,
|
||||
unsigned char *ptr;
|
||||
unsigned char *pixels;
|
||||
int rowstride;
|
||||
|
||||
|
||||
pixbuf = blank_pixbuf (width, height, FALSE);
|
||||
if (pixbuf == NULL)
|
||||
return NULL;
|
||||
|
||||
|
||||
pixels = gdk_pixbuf_get_pixels (pixbuf);
|
||||
rowstride = gdk_pixbuf_get_rowstride (pixbuf);
|
||||
|
||||
|
||||
r1 = (long)(colors1[0].red*0xffffff);
|
||||
g1 = (long)(colors1[0].green*0xffffff);
|
||||
b1 = (long)(colors1[0].blue*0xffffff);
|
||||
@ -229,7 +229,7 @@ meta_gradient_create_interwoven (int width,
|
||||
for (i=0,k=0,l=0,ll=thickness1; i<height; i++)
|
||||
{
|
||||
ptr = pixels + i * rowstride;
|
||||
|
||||
|
||||
if (k == 0)
|
||||
{
|
||||
ptr[0] = (unsigned char) (r1>>16);
|
||||
@ -264,7 +264,7 @@ meta_gradient_create_interwoven (int width,
|
||||
r1+=dr1;
|
||||
g1+=dg1;
|
||||
b1+=db1;
|
||||
|
||||
|
||||
r2+=dr2;
|
||||
g2+=dg2;
|
||||
b2+=db2;
|
||||
@ -277,20 +277,20 @@ meta_gradient_create_interwoven (int width,
|
||||
*----------------------------------------------------------------------
|
||||
* meta_gradient_create_horizontal--
|
||||
* Renders a horizontal linear gradient of the specified size in the
|
||||
* GdkPixbuf format with a border of the specified type.
|
||||
*
|
||||
* GdkPixbuf format with a border of the specified type.
|
||||
*
|
||||
* Returns:
|
||||
* A 24bit GdkPixbuf with the gradient (no alpha channel).
|
||||
*
|
||||
*
|
||||
* Side effects:
|
||||
* None
|
||||
*----------------------------------------------------------------------
|
||||
*----------------------------------------------------------------------
|
||||
*/
|
||||
static GdkPixbuf*
|
||||
meta_gradient_create_horizontal (int width, int height,
|
||||
const GdkRGBA *from,
|
||||
const GdkRGBA *to)
|
||||
{
|
||||
{
|
||||
int i;
|
||||
long r, g, b, dr, dg, db;
|
||||
GdkPixbuf *pixbuf;
|
||||
@ -303,22 +303,22 @@ meta_gradient_create_horizontal (int width, int height,
|
||||
pixbuf = blank_pixbuf (width, height, FALSE);
|
||||
if (pixbuf == NULL)
|
||||
return NULL;
|
||||
|
||||
|
||||
pixels = gdk_pixbuf_get_pixels (pixbuf);
|
||||
ptr = pixels;
|
||||
rowstride = gdk_pixbuf_get_rowstride (pixbuf);
|
||||
|
||||
|
||||
r0 = (guchar) (from->red * 0xff);
|
||||
g0 = (guchar) (from->green * 0xff);
|
||||
b0 = (guchar) (from->blue * 0xff);
|
||||
rf = (guchar) (to->red * 0xff);
|
||||
gf = (guchar) (to->green * 0xff);
|
||||
bf = (guchar) (to->blue * 0xff);
|
||||
|
||||
|
||||
r = r0 << 16;
|
||||
g = g0 << 16;
|
||||
b = b0 << 16;
|
||||
|
||||
|
||||
dr = ((rf-r0)<<16)/(int)width;
|
||||
dg = ((gf-g0)<<16)/(int)width;
|
||||
db = ((bf-b0)<<16)/(int)width;
|
||||
@ -367,21 +367,21 @@ meta_gradient_create_vertical (int width, int height,
|
||||
int rf, gf, bf;
|
||||
int rowstride;
|
||||
unsigned char *pixels;
|
||||
|
||||
|
||||
pixbuf = blank_pixbuf (width, height, FALSE);
|
||||
if (pixbuf == NULL)
|
||||
return NULL;
|
||||
|
||||
|
||||
pixels = gdk_pixbuf_get_pixels (pixbuf);
|
||||
rowstride = gdk_pixbuf_get_rowstride (pixbuf);
|
||||
|
||||
|
||||
r0 = (guchar) (from->red * 0xff);
|
||||
g0 = (guchar) (from->green * 0xff);
|
||||
b0 = (guchar) (from->blue * 0xff);
|
||||
rf = (guchar) (to->red * 0xff);
|
||||
gf = (guchar) (to->green * 0xff);
|
||||
bf = (guchar) (to->blue * 0xff);
|
||||
|
||||
|
||||
r = r0<<16;
|
||||
g = g0<<16;
|
||||
b = b0<<16;
|
||||
@ -393,7 +393,7 @@ meta_gradient_create_vertical (int width, int height,
|
||||
for (i=0; i<height; i++)
|
||||
{
|
||||
ptr = pixels + i * rowstride;
|
||||
|
||||
|
||||
ptr[0] = (unsigned char)(r>>16);
|
||||
ptr[1] = (unsigned char)(g>>16);
|
||||
ptr[2] = (unsigned char)(b>>16);
|
||||
@ -436,7 +436,7 @@ meta_gradient_create_diagonal (int width, int height,
|
||||
unsigned char *ptr;
|
||||
unsigned char *pixels;
|
||||
int rowstride;
|
||||
|
||||
|
||||
if (width == 1)
|
||||
return meta_gradient_create_vertical (width, height, from, to);
|
||||
else if (height == 1)
|
||||
@ -445,7 +445,7 @@ meta_gradient_create_diagonal (int width, int height,
|
||||
pixbuf = blank_pixbuf (width, height, FALSE);
|
||||
if (pixbuf == NULL)
|
||||
return NULL;
|
||||
|
||||
|
||||
pixels = gdk_pixbuf_get_pixels (pixbuf);
|
||||
rowstride = gdk_pixbuf_get_rowstride (pixbuf);
|
||||
|
||||
@ -483,27 +483,27 @@ meta_gradient_create_multi_horizontal (int width, int height,
|
||||
GdkPixbuf *pixbuf;
|
||||
unsigned char *ptr;
|
||||
unsigned char *pixels;
|
||||
int width2;
|
||||
int width2;
|
||||
int rowstride;
|
||||
|
||||
|
||||
g_return_val_if_fail (count > 2, NULL);
|
||||
|
||||
pixbuf = blank_pixbuf (width, height, FALSE);
|
||||
if (pixbuf == NULL)
|
||||
return NULL;
|
||||
|
||||
|
||||
pixels = gdk_pixbuf_get_pixels (pixbuf);
|
||||
rowstride = gdk_pixbuf_get_rowstride (pixbuf);
|
||||
ptr = pixels;
|
||||
|
||||
|
||||
if (count > width)
|
||||
count = width;
|
||||
|
||||
|
||||
if (count > 1)
|
||||
width2 = width/(count-1);
|
||||
else
|
||||
width2 = width;
|
||||
|
||||
|
||||
k = 0;
|
||||
|
||||
r = (long)(colors[0].red * 0xffffff);
|
||||
@ -536,7 +536,7 @@ meta_gradient_create_multi_horizontal (int width, int height,
|
||||
*ptr++ = (unsigned char)(g>>16);
|
||||
*ptr++ = (unsigned char)(b>>16);
|
||||
}
|
||||
|
||||
|
||||
/* copy the first line to the other lines */
|
||||
for (i=1; i<height; i++)
|
||||
{
|
||||
@ -557,25 +557,25 @@ meta_gradient_create_multi_vertical (int width, int height,
|
||||
int height2;
|
||||
int x;
|
||||
int rowstride;
|
||||
|
||||
|
||||
g_return_val_if_fail (count > 2, NULL);
|
||||
|
||||
pixbuf = blank_pixbuf (width, height, FALSE);
|
||||
if (pixbuf == NULL)
|
||||
return NULL;
|
||||
|
||||
|
||||
pixels = gdk_pixbuf_get_pixels (pixbuf);
|
||||
rowstride = gdk_pixbuf_get_rowstride (pixbuf);
|
||||
ptr = pixels;
|
||||
|
||||
|
||||
if (count > height)
|
||||
count = height;
|
||||
|
||||
|
||||
if (count > 1)
|
||||
height2 = height/(count-1);
|
||||
else
|
||||
height2 = height;
|
||||
|
||||
|
||||
k = 0;
|
||||
|
||||
r = (long)(colors[0].red * 0xffffff);
|
||||
@ -599,7 +599,7 @@ meta_gradient_create_multi_vertical (int width, int height,
|
||||
memcpy (&(ptr[x*3]), ptr, (width - x)*3);
|
||||
|
||||
ptr += rowstride;
|
||||
|
||||
|
||||
r += dr;
|
||||
g += dg;
|
||||
b += db;
|
||||
@ -623,14 +623,14 @@ meta_gradient_create_multi_vertical (int width, int height,
|
||||
memcpy (&(ptr[x*3]), ptr, (width - x)*3);
|
||||
|
||||
ptr += rowstride;
|
||||
|
||||
|
||||
for (j=k+1; j<height; j++)
|
||||
{
|
||||
memcpy (ptr, tmp, rowstride);
|
||||
ptr += rowstride;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
return pixbuf;
|
||||
}
|
||||
|
||||
@ -646,7 +646,7 @@ meta_gradient_create_multi_diagonal (int width, int height,
|
||||
unsigned char *ptr;
|
||||
unsigned char *pixels;
|
||||
int rowstride;
|
||||
|
||||
|
||||
g_return_val_if_fail (count > 2, NULL);
|
||||
|
||||
if (width == 1)
|
||||
@ -658,10 +658,10 @@ meta_gradient_create_multi_diagonal (int width, int height,
|
||||
width, height);
|
||||
if (pixbuf == NULL)
|
||||
return NULL;
|
||||
|
||||
|
||||
pixels = gdk_pixbuf_get_pixels (pixbuf);
|
||||
rowstride = gdk_pixbuf_get_rowstride (pixbuf);
|
||||
|
||||
|
||||
if (count > width)
|
||||
count = width;
|
||||
if (count > height)
|
||||
@ -708,12 +708,12 @@ simple_multiply_alpha (GdkPixbuf *pixbuf,
|
||||
int row;
|
||||
|
||||
g_return_if_fail (GDK_IS_PIXBUF (pixbuf));
|
||||
|
||||
|
||||
if (alpha == 255)
|
||||
return;
|
||||
|
||||
|
||||
g_assert (gdk_pixbuf_get_has_alpha (pixbuf));
|
||||
|
||||
|
||||
pixels = gdk_pixbuf_get_pixels (pixbuf);
|
||||
rowstride = gdk_pixbuf_get_rowstride (pixbuf);
|
||||
height = gdk_pixbuf_get_height (pixbuf);
|
||||
@ -738,7 +738,7 @@ simple_multiply_alpha (GdkPixbuf *pixbuf,
|
||||
*/
|
||||
/* ((*p / 255.0) * (alpha / 255.0)) * 255; */
|
||||
*p = (guchar) (((int) *p * (int) alpha) / (int) 255);
|
||||
|
||||
|
||||
++p; /* skip A */
|
||||
}
|
||||
|
||||
@ -755,13 +755,13 @@ meta_gradient_add_alpha_horizontal (GdkPixbuf *pixbuf,
|
||||
long a, da;
|
||||
unsigned char *p;
|
||||
unsigned char *pixels;
|
||||
int width2;
|
||||
int width2;
|
||||
int rowstride;
|
||||
int width, height;
|
||||
unsigned char *gradient;
|
||||
unsigned char *gradient_p;
|
||||
unsigned char *gradient_end;
|
||||
|
||||
|
||||
g_return_if_fail (n_alphas > 0);
|
||||
|
||||
if (n_alphas == 1)
|
||||
@ -770,24 +770,24 @@ meta_gradient_add_alpha_horizontal (GdkPixbuf *pixbuf,
|
||||
simple_multiply_alpha (pixbuf, alphas[0]);
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
width = gdk_pixbuf_get_width (pixbuf);
|
||||
height = gdk_pixbuf_get_height (pixbuf);
|
||||
|
||||
gradient = g_new (unsigned char, width);
|
||||
gradient_end = gradient + width;
|
||||
|
||||
|
||||
if (n_alphas > width)
|
||||
n_alphas = width;
|
||||
|
||||
|
||||
if (n_alphas > 1)
|
||||
width2 = width / (n_alphas - 1);
|
||||
else
|
||||
width2 = width;
|
||||
|
||||
|
||||
a = alphas[0] << 8;
|
||||
gradient_p = gradient;
|
||||
|
||||
|
||||
/* render the gradient into an array */
|
||||
for (i = 1; i < n_alphas; i++)
|
||||
{
|
||||
@ -796,7 +796,7 @@ meta_gradient_add_alpha_horizontal (GdkPixbuf *pixbuf,
|
||||
for (j = 0; j < width2; j++)
|
||||
{
|
||||
*gradient_p++ = (a >> 8);
|
||||
|
||||
|
||||
a += da;
|
||||
}
|
||||
|
||||
@ -808,11 +808,11 @@ meta_gradient_add_alpha_horizontal (GdkPixbuf *pixbuf,
|
||||
{
|
||||
*gradient_p++ = a >> 8;
|
||||
}
|
||||
|
||||
|
||||
/* Now for each line of the pixbuf, fill in with the gradient */
|
||||
pixels = gdk_pixbuf_get_pixels (pixbuf);
|
||||
rowstride = gdk_pixbuf_get_rowstride (pixbuf);
|
||||
|
||||
|
||||
p = pixels;
|
||||
i = 0;
|
||||
while (i < height)
|
||||
@ -838,7 +838,7 @@ meta_gradient_add_alpha_horizontal (GdkPixbuf *pixbuf,
|
||||
p = row_end;
|
||||
++i;
|
||||
}
|
||||
|
||||
|
||||
g_free (gradient);
|
||||
}
|
||||
|
||||
@ -851,21 +851,21 @@ meta_gradient_add_alpha (GdkPixbuf *pixbuf,
|
||||
g_return_if_fail (GDK_IS_PIXBUF (pixbuf));
|
||||
g_return_if_fail (gdk_pixbuf_get_has_alpha (pixbuf));
|
||||
g_return_if_fail (n_alphas > 0);
|
||||
|
||||
|
||||
switch (type)
|
||||
{
|
||||
case META_GRADIENT_HORIZONTAL:
|
||||
meta_gradient_add_alpha_horizontal (pixbuf, alphas, n_alphas);
|
||||
break;
|
||||
|
||||
|
||||
case META_GRADIENT_VERTICAL:
|
||||
g_printerr ("metacity: vertical alpha channel gradient not implemented yet\n");
|
||||
break;
|
||||
|
||||
|
||||
case META_GRADIENT_DIAGONAL:
|
||||
g_printerr ("metacity: diagonal alpha channel gradient not implemented yet\n");
|
||||
break;
|
||||
|
||||
|
||||
case META_GRADIENT_LAST:
|
||||
g_assert_not_reached ();
|
||||
break;
|
||||
|
@ -2,11 +2,11 @@
|
||||
|
||||
/* Mutter window menu */
|
||||
|
||||
/*
|
||||
/*
|
||||
* Copyright (C) 2001 Havoc Pennington
|
||||
* Copyright (C) 2004 Rob Adams
|
||||
* Copyright (C) 2005 Elijah Newren
|
||||
*
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 of the
|
||||
@ -16,7 +16,7 @@
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
@ -107,18 +107,18 @@ popup_position_func (GtkMenu *menu,
|
||||
gboolean *push_in,
|
||||
gpointer user_data)
|
||||
{
|
||||
GtkRequisition req;
|
||||
GtkRequisition req;
|
||||
GdkPoint *pos;
|
||||
|
||||
pos = user_data;
|
||||
|
||||
|
||||
gtk_widget_get_preferred_size (GTK_WIDGET (menu), &req, NULL);
|
||||
|
||||
*x = pos->x;
|
||||
*y = pos->y;
|
||||
|
||||
|
||||
if (meta_ui_get_direction() == META_UI_DIRECTION_RTL)
|
||||
*x = MAX (0, *x - req.width);
|
||||
*x = MAX (0, *x - req.width);
|
||||
|
||||
/* Ensure onscreen */
|
||||
*x = CLAMP (*x, 0, MAX (0, gdk_screen_width () - req.width));
|
||||
@ -130,7 +130,7 @@ menu_closed (GtkMenu *widget,
|
||||
gpointer data)
|
||||
{
|
||||
MetaWindowMenu *menu;
|
||||
|
||||
|
||||
menu = data;
|
||||
|
||||
(* menu->func) (menu,
|
||||
@ -139,7 +139,7 @@ menu_closed (GtkMenu *widget,
|
||||
gtk_get_current_event_time (),
|
||||
0, 0,
|
||||
menu->data);
|
||||
|
||||
|
||||
/* menu may now be freed */
|
||||
}
|
||||
|
||||
@ -147,9 +147,9 @@ static void
|
||||
activate_cb (GtkWidget *menuitem, gpointer data)
|
||||
{
|
||||
MenuData *md;
|
||||
|
||||
|
||||
g_return_if_fail (GTK_IS_WIDGET (menuitem));
|
||||
|
||||
|
||||
md = data;
|
||||
|
||||
(* md->menu->func) (md->menu,
|
||||
@ -169,7 +169,7 @@ activate_cb (GtkWidget *menuitem, gpointer data)
|
||||
* accelerators. At the moment this means adding a _ if the name is of
|
||||
* the form "Workspace n" where n is less than 10, and escaping any
|
||||
* other '_'s so they do not create inadvertant accelerators.
|
||||
*
|
||||
*
|
||||
* The calling code owns the string, and is reponsible to free the
|
||||
* memory after use.
|
||||
*
|
||||
@ -188,7 +188,7 @@ get_workspace_name_with_accel (Display *display,
|
||||
name = meta_core_get_workspace_name_with_index (display, xroot, index);
|
||||
|
||||
g_assert (name != NULL);
|
||||
|
||||
|
||||
/*
|
||||
* If the name is of the form "Workspace x" where x is an unsigned
|
||||
* integer, insert a '_' before the number if it is less than 10 and
|
||||
@ -199,7 +199,7 @@ get_workspace_name_with_accel (Display *display,
|
||||
*(name + charcount)=='\0')
|
||||
{
|
||||
char *new_name;
|
||||
|
||||
|
||||
/*
|
||||
* Above name is a pointer into the Workspace struct. Here we make
|
||||
* a copy copy so we can have our wicked way with it.
|
||||
@ -271,10 +271,10 @@ menu_item_new (MenuItem *menuitem, int workspace_id)
|
||||
else if (menuitem->type == MENU_ITEM_CHECKBOX)
|
||||
{
|
||||
mi = gtk_check_menu_item_new ();
|
||||
|
||||
|
||||
gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (mi),
|
||||
menuitem->checked);
|
||||
}
|
||||
}
|
||||
else if (menuitem->type == MENU_ITEM_RADIOBUTTON)
|
||||
{
|
||||
mi = gtk_check_menu_item_new ();
|
||||
@ -300,7 +300,7 @@ menu_item_new (MenuItem *menuitem, int workspace_id)
|
||||
|
||||
meta_accel_label_set_accelerator (META_ACCEL_LABEL (accel_label),
|
||||
key, mods);
|
||||
|
||||
|
||||
return mi;
|
||||
}
|
||||
|
||||
@ -320,18 +320,18 @@ meta_window_menu_new (MetaFrames *frames,
|
||||
/* FIXME: Modifications to 'ops' should happen in meta_window_show_menu */
|
||||
if (n_workspaces < 2)
|
||||
ops &= ~(META_MENU_OP_STICK | META_MENU_OP_UNSTICK | META_MENU_OP_WORKSPACES);
|
||||
else if (n_workspaces == 2)
|
||||
else if (n_workspaces == 2)
|
||||
/* #151183: If we only have two workspaces, disable the menu listing them. */
|
||||
ops &= ~(META_MENU_OP_WORKSPACES);
|
||||
|
||||
|
||||
menu = g_new (MetaWindowMenu, 1);
|
||||
menu->frames = frames;
|
||||
menu->client_xwindow = client_xwindow;
|
||||
menu->func = func;
|
||||
menu->data = data;
|
||||
menu->ops = ops;
|
||||
menu->insensitive = insensitive;
|
||||
|
||||
menu->insensitive = insensitive;
|
||||
|
||||
menu->menu = gtk_menu_new ();
|
||||
|
||||
gtk_menu_set_screen (GTK_MENU (menu->menu),
|
||||
@ -450,12 +450,12 @@ meta_window_menu_new (MetaFrames *frames,
|
||||
|
||||
if (insensitive & menuitem.op)
|
||||
gtk_widget_set_sensitive (mi, FALSE);
|
||||
|
||||
|
||||
md = g_new (MenuData, 1);
|
||||
|
||||
|
||||
md->menu = menu;
|
||||
md->op = menuitem.op;
|
||||
|
||||
|
||||
g_signal_connect_data (G_OBJECT (mi),
|
||||
"activate",
|
||||
G_CALLBACK (activate_cb),
|
||||
@ -466,15 +466,15 @@ meta_window_menu_new (MetaFrames *frames,
|
||||
if (mi)
|
||||
{
|
||||
gtk_menu_shell_append (GTK_MENU_SHELL (menu->menu), mi);
|
||||
|
||||
|
||||
gtk_widget_show (mi);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
g_signal_connect (menu->menu, "selection_done",
|
||||
G_CALLBACK (menu_closed), menu);
|
||||
G_CALLBACK (menu_closed), menu);
|
||||
|
||||
return menu;
|
||||
}
|
||||
@ -487,7 +487,7 @@ meta_window_menu_popup (MetaWindowMenu *menu,
|
||||
guint32 timestamp)
|
||||
{
|
||||
GdkPoint *pt;
|
||||
|
||||
|
||||
pt = g_new (GdkPoint, 1);
|
||||
|
||||
g_object_set_data_full (G_OBJECT (menu->menu),
|
||||
@ -497,7 +497,7 @@ meta_window_menu_popup (MetaWindowMenu *menu,
|
||||
|
||||
pt->x = root_x;
|
||||
pt->y = root_y;
|
||||
|
||||
|
||||
gtk_menu_popup (GTK_MENU (menu->menu),
|
||||
NULL, NULL,
|
||||
popup_position_func, pt,
|
||||
|
@ -2,9 +2,9 @@
|
||||
|
||||
/* Mutter window menu */
|
||||
|
||||
/*
|
||||
/*
|
||||
* Copyright (C) 2001 Havoc Pennington
|
||||
*
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 of the
|
||||
@ -14,7 +14,7 @@
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
@ -271,9 +271,9 @@ meta_accel_label_draw (GtkWidget *widget,
|
||||
cairo_translate (cr, ac_width, 0);
|
||||
if (gtk_label_get_ellipsize (label))
|
||||
pango_layout_set_width (label_layout,
|
||||
pango_layout_get_width (label_layout)
|
||||
pango_layout_get_width (label_layout)
|
||||
- ac_width * PANGO_SCALE);
|
||||
|
||||
|
||||
allocation.width -= ac_width;
|
||||
gtk_widget_set_allocation (widget, &allocation);
|
||||
if (GTK_WIDGET_CLASS (meta_accel_label_parent_class)->draw)
|
||||
@ -283,7 +283,7 @@ meta_accel_label_draw (GtkWidget *widget,
|
||||
gtk_widget_set_allocation (widget, &allocation);
|
||||
if (gtk_label_get_ellipsize (label))
|
||||
pango_layout_set_width (label_layout,
|
||||
pango_layout_get_width (label_layout)
|
||||
pango_layout_get_width (label_layout)
|
||||
+ ac_width * PANGO_SCALE);
|
||||
|
||||
cairo_restore (cr);
|
||||
@ -318,7 +318,7 @@ meta_accel_label_draw (GtkWidget *widget,
|
||||
if (GTK_WIDGET_CLASS (meta_accel_label_parent_class)->draw)
|
||||
GTK_WIDGET_CLASS (meta_accel_label_parent_class)->draw (widget, cr);
|
||||
}
|
||||
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
|
@ -2,9 +2,9 @@
|
||||
|
||||
/* Metacity resizing-terminal-window feedback */
|
||||
|
||||
/*
|
||||
/*
|
||||
* Copyright (C) 2001 Havoc Pennington
|
||||
*
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 of the
|
||||
@ -14,7 +14,7 @@
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
@ -30,13 +30,13 @@ struct _MetaResizePopup
|
||||
GtkWidget *size_window;
|
||||
GtkWidget *size_label;
|
||||
Display *display;
|
||||
int screen_number;
|
||||
int screen_number;
|
||||
|
||||
int vertical_size;
|
||||
int horizontal_size;
|
||||
|
||||
|
||||
gboolean showing;
|
||||
|
||||
|
||||
MetaRectangle rect;
|
||||
};
|
||||
|
||||
@ -50,7 +50,7 @@ meta_ui_resize_popup_new (Display *display,
|
||||
|
||||
popup->display = display;
|
||||
popup->screen_number = screen_number;
|
||||
|
||||
|
||||
return popup;
|
||||
}
|
||||
|
||||
@ -58,10 +58,10 @@ void
|
||||
meta_ui_resize_popup_free (MetaResizePopup *popup)
|
||||
{
|
||||
g_return_if_fail (popup != NULL);
|
||||
|
||||
|
||||
if (popup->size_window)
|
||||
gtk_widget_destroy (popup->size_window);
|
||||
|
||||
|
||||
g_free (popup);
|
||||
}
|
||||
|
||||
@ -125,9 +125,9 @@ update_size_window (MetaResizePopup *popup)
|
||||
char *str;
|
||||
int x, y;
|
||||
int width, height;
|
||||
|
||||
|
||||
g_return_if_fail (popup->size_window != NULL);
|
||||
|
||||
|
||||
/* Translators: This represents the size of a window. The first number is
|
||||
* the width of the window and the second is the height.
|
||||
*/
|
||||
@ -143,7 +143,7 @@ update_size_window (MetaResizePopup *popup)
|
||||
|
||||
x = popup->rect.x + (popup->rect.width - width) / 2;
|
||||
y = popup->rect.y + (popup->rect.height - height) / 2;
|
||||
|
||||
|
||||
if (gtk_widget_get_realized (popup->size_window))
|
||||
{
|
||||
/* using move_resize to avoid jumpiness */
|
||||
@ -165,7 +165,7 @@ sync_showing (MetaResizePopup *popup)
|
||||
{
|
||||
if (popup->size_window)
|
||||
gtk_widget_show (popup->size_window);
|
||||
|
||||
|
||||
if (popup->size_window && gtk_widget_get_realized (popup->size_window))
|
||||
gdk_window_raise (gtk_widget_get_window (popup->size_window));
|
||||
}
|
||||
@ -186,11 +186,11 @@ meta_ui_resize_popup_set (MetaResizePopup *popup,
|
||||
{
|
||||
gboolean need_update_size;
|
||||
int display_w, display_h;
|
||||
|
||||
|
||||
g_return_if_fail (popup != NULL);
|
||||
|
||||
need_update_size = FALSE;
|
||||
|
||||
|
||||
display_w = rect.width - base_width;
|
||||
if (width_inc > 0)
|
||||
display_w /= width_inc;
|
||||
@ -203,17 +203,17 @@ meta_ui_resize_popup_set (MetaResizePopup *popup,
|
||||
display_w != popup->horizontal_size ||
|
||||
display_h != popup->vertical_size)
|
||||
need_update_size = TRUE;
|
||||
|
||||
|
||||
popup->rect = rect;
|
||||
popup->vertical_size = display_h;
|
||||
popup->horizontal_size = display_w;
|
||||
|
||||
|
||||
if (need_update_size)
|
||||
{
|
||||
ensure_size_window (popup);
|
||||
update_size_window (popup);
|
||||
}
|
||||
|
||||
|
||||
sync_showing (popup);
|
||||
}
|
||||
|
||||
@ -222,7 +222,7 @@ meta_ui_resize_popup_set_showing (MetaResizePopup *popup,
|
||||
gboolean showing)
|
||||
{
|
||||
g_return_if_fail (popup != NULL);
|
||||
|
||||
|
||||
if (showing == popup->showing)
|
||||
return;
|
||||
|
||||
@ -233,6 +233,6 @@ meta_ui_resize_popup_set_showing (MetaResizePopup *popup,
|
||||
ensure_size_window (popup);
|
||||
update_size_window (popup);
|
||||
}
|
||||
|
||||
|
||||
sync_showing (popup);
|
||||
}
|
||||
|
@ -2,9 +2,9 @@
|
||||
|
||||
/* Mutter resizing-terminal-window feedback */
|
||||
|
||||
/*
|
||||
/*
|
||||
* Copyright (C) 2001 Havoc Pennington
|
||||
*
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 of the
|
||||
@ -14,7 +14,7 @@
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
@ -2,9 +2,9 @@
|
||||
|
||||
/* Mutter gradient test program */
|
||||
|
||||
/*
|
||||
/*
|
||||
* Copyright (C) 2002 Havoc Pennington
|
||||
*
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 of the
|
||||
@ -14,7 +14,7 @@
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>. */
|
||||
|
||||
@ -32,9 +32,9 @@ draw_checkerboard (cairo_t *cr,
|
||||
{
|
||||
gint i, j, xcount, ycount;
|
||||
GdkRGBA color1, color2;
|
||||
|
||||
|
||||
#define CHECK_SIZE 10
|
||||
#define SPACING 2
|
||||
#define SPACING 2
|
||||
|
||||
color1.red = 30000. / 65535.;
|
||||
color1.green = 30000. / 65535.;
|
||||
@ -83,7 +83,7 @@ render_simple (cairo_t *cr,
|
||||
{
|
||||
GdkPixbuf *pixbuf;
|
||||
GdkRGBA from, to;
|
||||
|
||||
|
||||
gdk_rgba_parse (&from, "blue");
|
||||
gdk_rgba_parse (&to, "green");
|
||||
|
||||
@ -94,23 +94,23 @@ render_simple (cairo_t *cr,
|
||||
if (with_alpha)
|
||||
{
|
||||
const unsigned char alphas[] = { 0xff, 0xaa, 0x2f, 0x0, 0xcc, 0xff, 0xff };
|
||||
|
||||
|
||||
if (!gdk_pixbuf_get_has_alpha (pixbuf))
|
||||
{
|
||||
GdkPixbuf *new_pixbuf;
|
||||
|
||||
|
||||
new_pixbuf = gdk_pixbuf_add_alpha (pixbuf, FALSE, 0, 0, 0);
|
||||
g_object_unref (G_OBJECT (pixbuf));
|
||||
pixbuf = new_pixbuf;
|
||||
}
|
||||
|
||||
|
||||
meta_gradient_add_alpha (pixbuf,
|
||||
alphas, G_N_ELEMENTS (alphas),
|
||||
META_GRADIENT_HORIZONTAL);
|
||||
|
||||
|
||||
draw_checkerboard (cr , width, height);
|
||||
}
|
||||
|
||||
|
||||
gdk_cairo_set_source_pixbuf (cr, pixbuf, 0, 0);
|
||||
cairo_rectangle (cr, 0, 0, width, height);
|
||||
cairo_fill (cr);
|
||||
@ -253,13 +253,13 @@ create_gradient_window (const char *title,
|
||||
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
|
||||
|
||||
gtk_window_set_title (GTK_WINDOW (window), title);
|
||||
|
||||
|
||||
drawing_area = gtk_drawing_area_new ();
|
||||
|
||||
gtk_widget_set_size_request (drawing_area, 1, 1);
|
||||
|
||||
gtk_window_set_default_size (GTK_WINDOW (window), 175, 175);
|
||||
|
||||
|
||||
g_signal_connect (G_OBJECT (drawing_area),
|
||||
"draw",
|
||||
G_CALLBACK (draw_callback),
|
||||
@ -268,7 +268,7 @@ create_gradient_window (const char *title,
|
||||
gtk_container_add (GTK_CONTAINER (window), drawing_area);
|
||||
|
||||
gtk_widget_show_all (window);
|
||||
|
||||
|
||||
return window;
|
||||
}
|
||||
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -2,9 +2,9 @@
|
||||
|
||||
/* Metacity Theme Rendering */
|
||||
|
||||
/*
|
||||
/*
|
||||
* Copyright (C) 2001 Havoc Pennington
|
||||
*
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 of the
|
||||
@ -14,7 +14,7 @@
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
@ -57,7 +57,7 @@ typedef struct _MetaGradientSpec MetaGradientSpec;
|
||||
* MetaAlphaGradientSpec: (skip)
|
||||
*
|
||||
*/
|
||||
typedef struct _MetaAlphaGradientSpec MetaAlphaGradientSpec;
|
||||
typedef struct _MetaAlphaGradientSpec MetaAlphaGradientSpec;
|
||||
/**
|
||||
* MetaColorSpec: (skip)
|
||||
*
|
||||
@ -131,14 +131,14 @@ struct _MetaFrameLayout
|
||||
{
|
||||
/** Reference count. */
|
||||
int refcount;
|
||||
|
||||
|
||||
/** Size of left side */
|
||||
int left_width;
|
||||
/** Size of right side */
|
||||
int right_width;
|
||||
/** Size of bottom side */
|
||||
int bottom_height;
|
||||
|
||||
|
||||
/** Border of blue title region
|
||||
* \bug (blue?!)
|
||||
**/
|
||||
@ -146,12 +146,12 @@ struct _MetaFrameLayout
|
||||
|
||||
/** Extra height for inside of title region, above the font height */
|
||||
int title_vertical_pad;
|
||||
|
||||
|
||||
/** Right indent of buttons from edges of frame */
|
||||
int right_titlebar_edge;
|
||||
/** Left indent of buttons from edges of frame */
|
||||
int left_titlebar_edge;
|
||||
|
||||
|
||||
/**
|
||||
* Sizing rule of buttons, either META_BUTTON_SIZING_ASPECT
|
||||
* (in which case button_aspect will be honoured, and
|
||||
@ -167,7 +167,7 @@ struct _MetaFrameLayout
|
||||
* Otherwise we figure out the height from the button_border.
|
||||
*/
|
||||
double button_aspect;
|
||||
|
||||
|
||||
/** Width of a button; set even when we are using aspect sizing */
|
||||
int button_width;
|
||||
|
||||
@ -179,7 +179,7 @@ struct _MetaFrameLayout
|
||||
|
||||
/** scale factor for title text */
|
||||
double title_scale;
|
||||
|
||||
|
||||
/** Whether title text will be displayed */
|
||||
guint has_title : 1;
|
||||
|
||||
@ -218,7 +218,7 @@ struct _MetaFrameGeometry
|
||||
MetaFrameBorders borders;
|
||||
|
||||
int width;
|
||||
int height;
|
||||
int height;
|
||||
|
||||
GdkRectangle title_rect;
|
||||
|
||||
@ -230,7 +230,7 @@ struct _MetaFrameGeometry
|
||||
/* used for a memset hack */
|
||||
#define ADDRESS_OF_BUTTON_RECTS(fgeom) (((char*)(fgeom)) + G_STRUCT_OFFSET (MetaFrameGeometry, close_rect))
|
||||
#define LENGTH_OF_BUTTON_RECTS (G_STRUCT_OFFSET (MetaFrameGeometry, right_single_background) + sizeof (GdkRectangle) - G_STRUCT_OFFSET (MetaFrameGeometry, close_rect))
|
||||
|
||||
|
||||
/* The button rects (if changed adjust memset hack) */
|
||||
MetaButtonSpace close_rect;
|
||||
MetaButtonSpace max_rect;
|
||||
@ -258,7 +258,7 @@ struct _MetaFrameGeometry
|
||||
MetaButtonLayout button_layout;
|
||||
int n_left_buttons;
|
||||
int n_right_buttons;
|
||||
|
||||
|
||||
/* Round corners */
|
||||
guint top_left_corner_rounded_radius;
|
||||
guint top_right_corner_rounded_radius;
|
||||
@ -363,14 +363,14 @@ typedef enum
|
||||
|
||||
/** Clip to a rectangle */
|
||||
META_DRAW_CLIP,
|
||||
|
||||
|
||||
/* Texture thingies */
|
||||
|
||||
/** Just a filled rectangle with alpha */
|
||||
META_DRAW_TINT,
|
||||
META_DRAW_GRADIENT,
|
||||
META_DRAW_IMAGE,
|
||||
|
||||
|
||||
/** GTK theme engine stuff */
|
||||
META_DRAW_GTK_ARROW,
|
||||
META_DRAW_GTK_BOX,
|
||||
@ -459,7 +459,7 @@ struct _MetaDrawSpec
|
||||
* otherwise it is zero.
|
||||
*/
|
||||
int value;
|
||||
|
||||
|
||||
/** A list of tokens in the expression. */
|
||||
PosToken *tokens;
|
||||
|
||||
@ -517,7 +517,7 @@ struct _MetaDrawOp
|
||||
MetaDrawSpec *width;
|
||||
MetaDrawSpec *height;
|
||||
} clip;
|
||||
|
||||
|
||||
struct {
|
||||
MetaColorSpec *color_spec;
|
||||
MetaAlphaGradientSpec *alpha_spec;
|
||||
@ -551,7 +551,7 @@ struct _MetaDrawOp
|
||||
unsigned int vertical_stripes : 1;
|
||||
unsigned int horizontal_stripes : 1;
|
||||
} image;
|
||||
|
||||
|
||||
struct {
|
||||
GtkStateFlags state;
|
||||
GtkShadowType shadow;
|
||||
@ -577,7 +577,7 @@ struct _MetaDrawOp
|
||||
GtkStateFlags state;
|
||||
MetaDrawSpec *x;
|
||||
MetaDrawSpec *y1;
|
||||
MetaDrawSpec *y2;
|
||||
MetaDrawSpec *y2;
|
||||
} gtk_vline;
|
||||
|
||||
struct {
|
||||
@ -615,7 +615,7 @@ struct _MetaDrawOp
|
||||
MetaDrawSpec *tile_width;
|
||||
MetaDrawSpec *tile_height;
|
||||
} tile;
|
||||
|
||||
|
||||
} data;
|
||||
};
|
||||
|
||||
@ -690,7 +690,7 @@ typedef enum
|
||||
* | rather than |
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
/* entire frame */
|
||||
META_FRAME_PIECE_ENTIRE_BACKGROUND,
|
||||
/* entire titlebar background */
|
||||
@ -756,7 +756,7 @@ struct _MetaFrameStyle
|
||||
};
|
||||
|
||||
/* Kinds of frame...
|
||||
*
|
||||
*
|
||||
* normal -> noresize / vert only / horz only / both
|
||||
* focused / unfocused
|
||||
* max -> focused / unfocused
|
||||
@ -768,7 +768,7 @@ struct _MetaFrameStyle
|
||||
*
|
||||
* 14 window states times 7 or 8 window types. Except some
|
||||
* window types never get a frame so that narrows it down a bit.
|
||||
*
|
||||
*
|
||||
*/
|
||||
typedef enum
|
||||
{
|
||||
|
430
src/ui/theme.c
430
src/ui/theme.c
File diff suppressed because it is too large
Load Diff
14
src/ui/ui.c
14
src/ui/ui.c
@ -2,9 +2,9 @@
|
||||
|
||||
/* Mutter interface for talking to GTK+ UI module */
|
||||
|
||||
/*
|
||||
/*
|
||||
* Copyright (C) 2002 Havoc Pennington
|
||||
*
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 of the
|
||||
@ -14,7 +14,7 @@
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
@ -330,7 +330,7 @@ meta_ui_create_frame_window (MetaUI *ui,
|
||||
gint attributes_mask;
|
||||
GdkWindow *window;
|
||||
GdkVisual *visual;
|
||||
|
||||
|
||||
/* Default depth/visual handles clients with weird visuals; they can
|
||||
* always be children of the root depth/visual obviously, but
|
||||
* e.g. DRI games can't be children of a parent that has the same
|
||||
@ -379,7 +379,7 @@ meta_ui_create_frame_window (MetaUI *ui,
|
||||
&attrs, attributes_mask);
|
||||
|
||||
gdk_window_resize (window, width, height);
|
||||
|
||||
|
||||
meta_frames_manage_window (ui->frames, GDK_WINDOW_XID (window), window);
|
||||
|
||||
return GDK_WINDOW_XID (window);
|
||||
@ -602,7 +602,7 @@ meta_ui_get_default_window_icon (MetaUI *ui)
|
||||
}
|
||||
|
||||
g_object_ref (G_OBJECT (default_icon));
|
||||
|
||||
|
||||
return default_icon;
|
||||
}
|
||||
|
||||
@ -637,7 +637,7 @@ meta_ui_get_default_mini_icon (MetaUI *ui)
|
||||
}
|
||||
|
||||
g_object_ref (G_OBJECT (default_icon));
|
||||
|
||||
|
||||
return default_icon;
|
||||
}
|
||||
|
||||
|
@ -2,9 +2,9 @@
|
||||
|
||||
/* Mutter interface for talking to GTK+ UI module */
|
||||
|
||||
/*
|
||||
/*
|
||||
* Copyright (C) 2001 Havoc Pennington
|
||||
*
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 of the
|
||||
@ -14,7 +14,7 @@
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
@ -55,7 +55,7 @@ struct _ListNode
|
||||
struct _AgGetPropertyTask
|
||||
{
|
||||
ListNode node;
|
||||
|
||||
|
||||
AgPerDisplayData *dd;
|
||||
Window window;
|
||||
Atom property;
|
||||
@ -77,7 +77,7 @@ struct _AgPerDisplayData
|
||||
{
|
||||
ListNode node;
|
||||
_XAsyncHandler async;
|
||||
|
||||
|
||||
Display *display;
|
||||
ListNode *pending_tasks;
|
||||
ListNode *pending_tasks_tail;
|
||||
@ -96,7 +96,7 @@ append_to_list (ListNode **head,
|
||||
ListNode *task)
|
||||
{
|
||||
task->next = NULL;
|
||||
|
||||
|
||||
if (*tail == NULL)
|
||||
{
|
||||
assert (*head == NULL);
|
||||
@ -131,10 +131,10 @@ remove_from_list (ListNode **head,
|
||||
|
||||
if (node == *tail)
|
||||
*tail = prev;
|
||||
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
prev = node;
|
||||
node = node->next;
|
||||
}
|
||||
@ -152,7 +152,7 @@ move_to_completed (AgPerDisplayData *dd,
|
||||
remove_from_list (&dd->pending_tasks,
|
||||
&dd->pending_tasks_tail,
|
||||
&task->node);
|
||||
|
||||
|
||||
append_to_list (&dd->completed_tasks,
|
||||
&dd->completed_tasks_tail,
|
||||
&task->node);
|
||||
@ -187,18 +187,18 @@ find_pending_by_request_sequence (AgPerDisplayData *dd,
|
||||
* I'm not sure this is 100% guaranteed, if it is,
|
||||
* it would be a big speedup.
|
||||
*/
|
||||
|
||||
|
||||
node = dd->pending_tasks;
|
||||
while (node != NULL)
|
||||
{
|
||||
AgGetPropertyTask *task = (AgGetPropertyTask*) node;
|
||||
|
||||
|
||||
if (task->request_seq == request_seq)
|
||||
return task;
|
||||
|
||||
|
||||
node = node->next;
|
||||
}
|
||||
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
@ -216,12 +216,12 @@ async_get_property_handler (Display *dpy,
|
||||
int bytes_read;
|
||||
|
||||
dd = (AgPerDisplayData*) data;
|
||||
|
||||
|
||||
#if 0
|
||||
printf ("%s: seeing request seq %ld buflen %d\n", __FUNCTION__,
|
||||
dpy->last_request_read, len);
|
||||
#endif
|
||||
|
||||
|
||||
task = find_pending_by_request_sequence (dd, dpy->last_request_read);
|
||||
|
||||
if (task == NULL)
|
||||
@ -231,7 +231,7 @@ async_get_property_handler (Display *dpy,
|
||||
|
||||
task->have_reply = True;
|
||||
move_to_completed (dd, task);
|
||||
|
||||
|
||||
/* read bytes so far */
|
||||
bytes_read = SIZEOF (xReply);
|
||||
|
||||
@ -240,7 +240,7 @@ async_get_property_handler (Display *dpy,
|
||||
xError errbuf;
|
||||
|
||||
task->error = rep->error.errorCode;
|
||||
|
||||
|
||||
#ifdef DEBUG_SPEW
|
||||
printf ("%s: error code = %d (ignoring error, eating %d bytes, generic.length = %ld)\n",
|
||||
__FUNCTION__, task->error, (SIZEOF (xError) - bytes_read),
|
||||
@ -263,7 +263,7 @@ async_get_property_handler (Display *dpy,
|
||||
_XGetAsyncReply (dpy, (char *)&errbuf, rep, buf, len,
|
||||
(SIZEOF (xError) - bytes_read) >> 2, /* in 32-bit words */
|
||||
False); /* really seems like it should be True */
|
||||
|
||||
|
||||
return True;
|
||||
}
|
||||
|
||||
@ -368,7 +368,7 @@ async_get_property_handler (Display *dpy,
|
||||
char *netdata;
|
||||
char *lptr;
|
||||
char *end_lptr;
|
||||
|
||||
|
||||
/* Store the 32-bit values in the end of the array */
|
||||
netdata = task->data + nbytes / 2;
|
||||
|
||||
@ -377,7 +377,7 @@ async_get_property_handler (Display *dpy,
|
||||
netbytes);
|
||||
|
||||
/* Now move the 32-bit values to the front */
|
||||
|
||||
|
||||
lptr = task->data;
|
||||
end_lptr = task->data + nbytes;
|
||||
while (lptr != end_lptr)
|
||||
@ -411,7 +411,7 @@ async_get_property_handler (Display *dpy,
|
||||
#if 0
|
||||
xError error;
|
||||
#endif
|
||||
|
||||
|
||||
task->error = BadImplementation;
|
||||
|
||||
#if 0
|
||||
@ -468,21 +468,21 @@ get_display_data (Display *display,
|
||||
{
|
||||
ListNode *node;
|
||||
AgPerDisplayData *dd;
|
||||
|
||||
|
||||
node = display_datas;
|
||||
while (node != NULL)
|
||||
{
|
||||
dd = (AgPerDisplayData*) node;
|
||||
|
||||
|
||||
if (dd->display == display)
|
||||
return dd;
|
||||
|
||||
|
||||
node = node->next;
|
||||
}
|
||||
|
||||
if (!create)
|
||||
return NULL;
|
||||
|
||||
|
||||
dd = Xcalloc (1, sizeof (AgPerDisplayData));
|
||||
if (dd == NULL)
|
||||
return NULL;
|
||||
@ -496,7 +496,7 @@ get_display_data (Display *display,
|
||||
append_to_list (&display_datas,
|
||||
&display_datas_tail,
|
||||
&dd->node);
|
||||
|
||||
|
||||
return dd;
|
||||
}
|
||||
|
||||
@ -524,8 +524,8 @@ ag_task_create (Display *dpy,
|
||||
{
|
||||
AgGetPropertyTask *task;
|
||||
xGetPropertyReq *req;
|
||||
AgPerDisplayData *dd;
|
||||
|
||||
AgPerDisplayData *dd;
|
||||
|
||||
/* Fire up our request */
|
||||
LockDisplay (dpy);
|
||||
|
||||
@ -535,7 +535,7 @@ ag_task_create (Display *dpy,
|
||||
UnlockDisplay (dpy);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
||||
GetReq (GetProperty, req);
|
||||
req->window = window;
|
||||
req->property = property;
|
||||
@ -561,7 +561,7 @@ ag_task_create (Display *dpy,
|
||||
&dd->pending_tasks_tail,
|
||||
&task->node);
|
||||
dd->n_tasks_pending += 1;
|
||||
|
||||
|
||||
UnlockDisplay (dpy);
|
||||
|
||||
SyncHandle ();
|
||||
@ -593,13 +593,13 @@ ag_task_get_reply_and_free (AgGetPropertyTask *task,
|
||||
*prop = NULL;
|
||||
|
||||
dpy = task->dd->display; /* Xlib macros require a variable named "dpy" */
|
||||
|
||||
|
||||
if (task->error != Success)
|
||||
{
|
||||
Status s = task->error;
|
||||
|
||||
free_task (task);
|
||||
|
||||
|
||||
return s;
|
||||
}
|
||||
|
||||
@ -620,7 +620,7 @@ ag_task_get_reply_and_free (AgGetPropertyTask *task,
|
||||
SyncHandle ();
|
||||
|
||||
free_task (task);
|
||||
|
||||
|
||||
return Success;
|
||||
}
|
||||
|
||||
@ -657,7 +657,7 @@ ag_get_next_completed_task (Display *display)
|
||||
|
||||
if (dd == NULL)
|
||||
return NULL;
|
||||
|
||||
|
||||
#ifdef DEBUG_SPEW
|
||||
printf ("%d pending %d completed\n",
|
||||
dd->n_tasks_pending,
|
||||
|
@ -4,16 +4,16 @@
|
||||
|
||||
/*
|
||||
* Copyright (C) 2002 Havoc Pennington
|
||||
*
|
||||
*
|
||||
* Permission to use, copy, modify, distribute, and sell this software
|
||||
* and its documentation for any purpose is hereby granted without
|
||||
* fee, provided that the above copyright notice appear in all copies
|
||||
* and that both that copyright notice and this permission notice
|
||||
* appear in supporting documentation.
|
||||
*
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be
|
||||
* included in all copies or substantial portions of the Software.
|
||||
*
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
|
@ -2,9 +2,9 @@
|
||||
|
||||
/* Mutter window group private header */
|
||||
|
||||
/*
|
||||
/*
|
||||
* Copyright (C) 2002 Red Hat Inc.
|
||||
*
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 of the
|
||||
@ -14,7 +14,7 @@
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
@ -2,9 +2,9 @@
|
||||
|
||||
/* MetaGroup property handling */
|
||||
|
||||
/*
|
||||
/*
|
||||
* Copyright (C) 2002 Red Hat, Inc.
|
||||
*
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 of the
|
||||
@ -14,7 +14,7 @@
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
@ -65,16 +65,16 @@ meta_group_reload_properties (MetaGroup *group,
|
||||
|
||||
g_return_if_fail (properties != NULL);
|
||||
g_return_if_fail (n_properties > 0);
|
||||
|
||||
|
||||
values = g_new0 (MetaPropValue, n_properties);
|
||||
|
||||
|
||||
i = 0;
|
||||
while (i < n_properties)
|
||||
{
|
||||
init_prop_value (group->display, properties[i], &values[i]);
|
||||
++i;
|
||||
}
|
||||
|
||||
|
||||
meta_prop_get_values (group->display, group->group_leader,
|
||||
values, n_properties);
|
||||
|
||||
@ -82,12 +82,12 @@ meta_group_reload_properties (MetaGroup *group,
|
||||
while (i < n_properties)
|
||||
{
|
||||
reload_prop_value (group, &values[i]);
|
||||
|
||||
|
||||
++i;
|
||||
}
|
||||
|
||||
meta_prop_free_values (values, n_properties);
|
||||
|
||||
|
||||
g_free (values);
|
||||
}
|
||||
|
||||
@ -97,11 +97,11 @@ init_prop_value (MetaDisplay *display,
|
||||
Atom property,
|
||||
MetaPropValue *value)
|
||||
{
|
||||
MetaGroupPropHooks *hooks;
|
||||
MetaGroupPropHooks *hooks;
|
||||
|
||||
value->type = META_PROP_VALUE_INVALID;
|
||||
value->atom = None;
|
||||
|
||||
|
||||
hooks = find_hooks (display, property);
|
||||
if (hooks && hooks->init_func != NULL)
|
||||
(* hooks->init_func) (display, property, value);
|
||||
@ -111,8 +111,8 @@ static void
|
||||
reload_prop_value (MetaGroup *group,
|
||||
MetaPropValue *value)
|
||||
{
|
||||
MetaGroupPropHooks *hooks;
|
||||
|
||||
MetaGroupPropHooks *hooks;
|
||||
|
||||
hooks = find_hooks (group->display, value->atom);
|
||||
if (hooks && hooks->reload_func != NULL)
|
||||
(* hooks->reload_func) (group, value);
|
||||
@ -133,7 +133,7 @@ reload_wm_client_machine (MetaGroup *group,
|
||||
{
|
||||
g_free (group->wm_client_machine);
|
||||
group->wm_client_machine = NULL;
|
||||
|
||||
|
||||
if (value->type != META_PROP_VALUE_INVALID)
|
||||
group->wm_client_machine = g_strdup (value->v.str);
|
||||
|
||||
@ -156,10 +156,10 @@ reload_net_startup_id (MetaGroup *group,
|
||||
{
|
||||
g_free (group->startup_id);
|
||||
group->startup_id = NULL;
|
||||
|
||||
|
||||
if (value->type != META_PROP_VALUE_INVALID)
|
||||
group->startup_id = g_strdup (value->v.str);
|
||||
|
||||
|
||||
meta_verbose ("Group has startup id \"%s\"\n",
|
||||
group->startup_id ? group->startup_id : "unset");
|
||||
}
|
||||
@ -171,12 +171,12 @@ meta_display_init_group_prop_hooks (MetaDisplay *display)
|
||||
{
|
||||
int i;
|
||||
MetaGroupPropHooks *hooks;
|
||||
|
||||
|
||||
g_assert (display->group_prop_hooks == NULL);
|
||||
|
||||
display->group_prop_hooks = g_new0 (MetaGroupPropHooks, N_HOOKS);
|
||||
display->group_prop_hooks = g_new0 (MetaGroupPropHooks, N_HOOKS);
|
||||
hooks = display->group_prop_hooks;
|
||||
|
||||
|
||||
i = 0;
|
||||
|
||||
hooks[i].property = display->atom_WM_CLIENT_MACHINE;
|
||||
@ -193,7 +193,7 @@ meta_display_init_group_prop_hooks (MetaDisplay *display)
|
||||
hooks[i].init_func = init_net_startup_id;
|
||||
hooks[i].reload_func = reload_net_startup_id;
|
||||
++i;
|
||||
|
||||
|
||||
if (i != N_HOOKS)
|
||||
{
|
||||
g_error ("Initialized %d group hooks should have been %d\n", i, N_HOOKS);
|
||||
@ -204,7 +204,7 @@ void
|
||||
meta_display_free_group_prop_hooks (MetaDisplay *display)
|
||||
{
|
||||
g_assert (display->group_prop_hooks != NULL);
|
||||
|
||||
|
||||
g_free (display->group_prop_hooks);
|
||||
display->group_prop_hooks = NULL;
|
||||
}
|
||||
@ -218,13 +218,13 @@ find_hooks (MetaDisplay *display,
|
||||
/* FIXME we could sort the array and do binary search or
|
||||
* something
|
||||
*/
|
||||
|
||||
|
||||
i = 0;
|
||||
while (i < N_HOOKS)
|
||||
{
|
||||
if (display->group_prop_hooks[i].property == property)
|
||||
return &display->group_prop_hooks[i];
|
||||
|
||||
|
||||
++i;
|
||||
}
|
||||
|
||||
|
@ -2,9 +2,9 @@
|
||||
|
||||
/* MetaGroup property handling */
|
||||
|
||||
/*
|
||||
/*
|
||||
* Copyright (C) 2002 Red Hat, Inc.
|
||||
*
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 of the
|
||||
@ -14,7 +14,7 @@
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
@ -1,9 +1,9 @@
|
||||
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
|
||||
|
||||
/*
|
||||
/*
|
||||
* Copyright (C) 2002 Red Hat Inc.
|
||||
* Copyright (C) 2003 Rob Adams
|
||||
*
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 of the
|
||||
@ -13,7 +13,7 @@
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
@ -40,16 +40,16 @@ meta_group_new (MetaDisplay *display,
|
||||
#define N_INITIAL_PROPS 3
|
||||
Atom initial_props[N_INITIAL_PROPS];
|
||||
int i;
|
||||
|
||||
|
||||
g_assert (N_INITIAL_PROPS == (int) G_N_ELEMENTS (initial_props));
|
||||
|
||||
|
||||
group = g_new0 (MetaGroup, 1);
|
||||
|
||||
group->display = display;
|
||||
group->windows = NULL;
|
||||
group->group_leader = group_leader;
|
||||
group->refcount = 1; /* owned by caller, hash table has only weak ref */
|
||||
|
||||
|
||||
if (display->groups_by_leader == NULL)
|
||||
display->groups_by_leader = g_hash_table_new (meta_unsigned_long_hash,
|
||||
meta_unsigned_long_equal);
|
||||
@ -66,13 +66,13 @@ meta_group_new (MetaDisplay *display,
|
||||
initial_props[i++] = display->atom__NET_WM_PID;
|
||||
initial_props[i++] = display->atom__NET_STARTUP_ID;
|
||||
g_assert (N_INITIAL_PROPS == i);
|
||||
|
||||
|
||||
meta_group_reload_properties (group, initial_props, N_INITIAL_PROPS);
|
||||
|
||||
meta_topic (META_DEBUG_GROUPS,
|
||||
"Created new group with leader 0x%lx\n",
|
||||
group->group_leader);
|
||||
|
||||
|
||||
return group;
|
||||
}
|
||||
|
||||
@ -86,10 +86,10 @@ meta_group_unref (MetaGroup *group)
|
||||
{
|
||||
meta_topic (META_DEBUG_GROUPS,
|
||||
"Destroying group with leader 0x%lx\n",
|
||||
group->group_leader);
|
||||
|
||||
group->group_leader);
|
||||
|
||||
g_assert (group->display->groups_by_leader != NULL);
|
||||
|
||||
|
||||
g_hash_table_remove (group->display->groups_by_leader,
|
||||
&group->group_leader);
|
||||
|
||||
@ -102,7 +102,7 @@ meta_group_unref (MetaGroup *group)
|
||||
|
||||
g_free (group->wm_client_machine);
|
||||
g_free (group->startup_id);
|
||||
|
||||
|
||||
g_free (group);
|
||||
}
|
||||
}
|
||||
@ -128,9 +128,9 @@ meta_window_compute_group (MetaWindow* window)
|
||||
MetaWindow *ancestor;
|
||||
|
||||
/* use window->xwindow if no window->xgroup_leader */
|
||||
|
||||
|
||||
group = NULL;
|
||||
|
||||
|
||||
/* Determine the ancestor of the window; its group setting will override the
|
||||
* normal grouping rules; see bug 328211.
|
||||
*/
|
||||
@ -147,7 +147,7 @@ meta_window_compute_group (MetaWindow* window)
|
||||
group = g_hash_table_lookup (window->display->groups_by_leader,
|
||||
&window->xwindow);
|
||||
}
|
||||
|
||||
|
||||
if (group != NULL)
|
||||
{
|
||||
window->group = group;
|
||||
@ -164,7 +164,7 @@ meta_window_compute_group (MetaWindow* window)
|
||||
else
|
||||
group = meta_group_new (window->display,
|
||||
window->xwindow);
|
||||
|
||||
|
||||
window->group = group;
|
||||
}
|
||||
|
||||
@ -184,7 +184,7 @@ remove_window_from_group (MetaWindow *window)
|
||||
meta_topic (META_DEBUG_GROUPS,
|
||||
"Removing %s from group with leader 0x%lx\n",
|
||||
window->desc, window->group->group_leader);
|
||||
|
||||
|
||||
window->group->windows =
|
||||
g_slist_remove (window->group->windows,
|
||||
window);
|
||||
@ -217,9 +217,9 @@ meta_display_lookup_group (MetaDisplay *display,
|
||||
Window group_leader)
|
||||
{
|
||||
MetaGroup *group;
|
||||
|
||||
|
||||
group = NULL;
|
||||
|
||||
|
||||
if (display->groups_by_leader)
|
||||
group = g_hash_table_lookup (display->groups_by_leader,
|
||||
&group_leader);
|
||||
@ -244,7 +244,7 @@ meta_group_update_layers (MetaGroup *group)
|
||||
{
|
||||
GSList *tmp;
|
||||
GSList *frozen_stacks;
|
||||
|
||||
|
||||
if (group->windows == NULL)
|
||||
return;
|
||||
|
||||
@ -263,7 +263,7 @@ meta_group_update_layers (MetaGroup *group)
|
||||
|
||||
meta_stack_update_layer (window->screen->stack,
|
||||
window);
|
||||
|
||||
|
||||
tmp = tmp->next;
|
||||
}
|
||||
|
||||
|
@ -471,7 +471,7 @@ try_pixmap_and_mask (MetaDisplay *display,
|
||||
GDK_INTERP_BILINEAR);
|
||||
|
||||
g_object_unref (G_OBJECT (unscaled));
|
||||
|
||||
|
||||
if (*iconp && *mini_iconp)
|
||||
return TRUE;
|
||||
else
|
||||
@ -569,7 +569,7 @@ clear_icon_cache (MetaIconCache *icon_cache,
|
||||
g_object_unref (G_OBJECT (icon_cache->mini_icon));
|
||||
icon_cache->mini_icon = NULL;
|
||||
#endif
|
||||
|
||||
|
||||
icon_cache->origin = USING_NO_ICON;
|
||||
|
||||
if (dirty_all)
|
||||
@ -655,13 +655,13 @@ scaled_from_pixdata (guchar *pixdata,
|
||||
{
|
||||
GdkPixbuf *src;
|
||||
GdkPixbuf *dest;
|
||||
|
||||
|
||||
src = gdk_pixbuf_new_from_data (pixdata,
|
||||
GDK_COLORSPACE_RGB,
|
||||
TRUE,
|
||||
8,
|
||||
w, h, w * 4,
|
||||
free_pixels,
|
||||
free_pixels,
|
||||
NULL);
|
||||
|
||||
if (src == NULL)
|
||||
@ -673,7 +673,7 @@ scaled_from_pixdata (guchar *pixdata,
|
||||
int size;
|
||||
|
||||
size = MAX (w, h);
|
||||
|
||||
|
||||
tmp = gdk_pixbuf_new (GDK_COLORSPACE_RGB, TRUE, 8, size, size);
|
||||
|
||||
if (tmp)
|
||||
@ -682,16 +682,16 @@ scaled_from_pixdata (guchar *pixdata,
|
||||
gdk_pixbuf_copy_area (src, 0, 0, w, h,
|
||||
tmp,
|
||||
(size - w) / 2, (size - h) / 2);
|
||||
|
||||
|
||||
g_object_unref (src);
|
||||
src = tmp;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (w != new_w || h != new_h)
|
||||
{
|
||||
dest = gdk_pixbuf_scale_simple (src, new_w, new_h, GDK_INTERP_BILINEAR);
|
||||
|
||||
|
||||
g_object_unref (G_OBJECT (src));
|
||||
}
|
||||
else
|
||||
@ -741,7 +741,7 @@ meta_read_icons (MetaScreen *screen,
|
||||
icon_cache->ideal_mini_width = ideal_mini_width;
|
||||
icon_cache->ideal_mini_height = ideal_mini_height;
|
||||
#endif
|
||||
|
||||
|
||||
if (!meta_icon_cache_get_icon_invalidated (icon_cache))
|
||||
return FALSE; /* we have no new info to use */
|
||||
|
||||
@ -778,7 +778,7 @@ meta_read_icons (MetaScreen *screen,
|
||||
{
|
||||
replace_cache (icon_cache, USING_NET_WM_ICON,
|
||||
*iconp, *mini_iconp);
|
||||
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
else
|
||||
@ -862,7 +862,7 @@ meta_read_icons (MetaScreen *screen,
|
||||
|
||||
replace_cache (icon_cache, USING_FALLBACK_ICON,
|
||||
*iconp, *mini_iconp);
|
||||
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
@ -2,9 +2,9 @@
|
||||
|
||||
/* Mutter window icons */
|
||||
|
||||
/*
|
||||
/*
|
||||
* Copyright (C) 2002 Havoc Pennington
|
||||
*
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 of the
|
||||
@ -14,7 +14,7 @@
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
@ -39,13 +39,13 @@ Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts.
|
||||
|
||||
All Rights Reserved
|
||||
|
||||
Permission to use, copy, modify, and distribute this software and its
|
||||
documentation for any purpose and without fee is hereby granted,
|
||||
Permission to use, copy, modify, and distribute this software and its
|
||||
documentation for any purpose and without fee is hereby granted,
|
||||
provided that the above copyright notice appear in all copies and that
|
||||
both that copyright notice and this permission notice appear in
|
||||
both that copyright notice and this permission notice appear in
|
||||
supporting documentation, and that the name of Digital not be
|
||||
used in advertising or publicity pertaining to distribution of the
|
||||
software without specific, written prior permission.
|
||||
software without specific, written prior permission.
|
||||
|
||||
DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
|
||||
ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
|
||||
|
@ -2,11 +2,11 @@
|
||||
|
||||
/* Mutter Session Management */
|
||||
|
||||
/*
|
||||
/*
|
||||
* Copyright (C) 2001 Havoc Pennington (some code in here from
|
||||
* libgnomeui, (C) Tom Tromey, Carsten Schaar)
|
||||
* Copyright (C) 2004, 2005 Elijah Newren
|
||||
*
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 of the
|
||||
@ -16,7 +16,7 @@
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
@ -70,7 +70,7 @@ meta_window_release_saved_state (const MetaWindowSessionInfo *info)
|
||||
|
||||
static void ice_io_error_handler (IceConn connection);
|
||||
|
||||
static void new_ice_connection (IceConn connection, IcePointer client_data,
|
||||
static void new_ice_connection (IceConn connection, IcePointer client_data,
|
||||
Bool opening, IcePointer *watch_data);
|
||||
|
||||
static void save_state (void);
|
||||
@ -100,7 +100,7 @@ process_ice_messages (GIOChannel *channel,
|
||||
#if 0
|
||||
IcePointer context = IceGetConnectionContext (connection);
|
||||
#endif
|
||||
|
||||
|
||||
/* We were disconnected; close our connection to the
|
||||
* session manager, this will result in the ICE connection
|
||||
* being cleaned up, since it is owned by libSM.
|
||||
@ -110,7 +110,7 @@ process_ice_messages (GIOChannel *channel,
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
@ -128,22 +128,22 @@ new_ice_connection (IceConn connection, IcePointer client_data, Bool opening,
|
||||
* exec'ed children
|
||||
*/
|
||||
GIOChannel *channel;
|
||||
|
||||
|
||||
fcntl (IceConnectionNumber (connection), F_SETFD,
|
||||
fcntl (IceConnectionNumber (connection), F_GETFD, 0) | FD_CLOEXEC);
|
||||
|
||||
channel = g_io_channel_unix_new (IceConnectionNumber (connection));
|
||||
|
||||
|
||||
input_id = g_io_add_watch (channel,
|
||||
G_IO_IN | G_IO_ERR,
|
||||
process_ice_messages,
|
||||
connection);
|
||||
|
||||
g_io_channel_unref (channel);
|
||||
|
||||
|
||||
*watch_data = (IcePointer) GUINT_TO_POINTER (input_id);
|
||||
}
|
||||
else
|
||||
else
|
||||
{
|
||||
input_id = GPOINTER_TO_UINT ((gpointer) *watch_data);
|
||||
|
||||
@ -153,14 +153,14 @@ new_ice_connection (IceConn connection, IcePointer client_data, Bool opening,
|
||||
|
||||
static IceIOErrorHandler ice_installed_handler;
|
||||
|
||||
/* We call any handler installed before (or after) gnome_ice_init but
|
||||
/* We call any handler installed before (or after) gnome_ice_init but
|
||||
avoid calling the default libICE handler which does an exit() */
|
||||
static void
|
||||
ice_io_error_handler (IceConn connection)
|
||||
{
|
||||
if (ice_installed_handler)
|
||||
(*ice_installed_handler) (connection);
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
ice_init (void)
|
||||
@ -229,7 +229,7 @@ meta_session_init (const char *previous_client_id,
|
||||
unsigned long mask;
|
||||
SmcCallbacks callbacks;
|
||||
char *saved_client_id;
|
||||
|
||||
|
||||
meta_topic (META_DEBUG_SM, "Initializing session with save file '%s'\n",
|
||||
previous_save_file ? previous_save_file : "(none)");
|
||||
|
||||
@ -248,24 +248,24 @@ meta_session_init (const char *previous_client_id,
|
||||
{
|
||||
saved_client_id = NULL;
|
||||
}
|
||||
|
||||
|
||||
ice_init ();
|
||||
|
||||
|
||||
mask = SmcSaveYourselfProcMask | SmcDieProcMask |
|
||||
SmcSaveCompleteProcMask | SmcShutdownCancelledProcMask;
|
||||
|
||||
|
||||
callbacks.save_yourself.callback = save_yourself_callback;
|
||||
callbacks.save_yourself.client_data = NULL;
|
||||
|
||||
|
||||
callbacks.die.callback = die_callback;
|
||||
callbacks.die.client_data = NULL;
|
||||
|
||||
|
||||
callbacks.save_complete.callback = save_complete_callback;
|
||||
callbacks.save_complete.client_data = NULL;
|
||||
|
||||
|
||||
callbacks.shutdown_cancelled.callback = shutdown_cancelled_callback;
|
||||
callbacks.shutdown_cancelled.client_data = NULL;
|
||||
|
||||
|
||||
session_connection =
|
||||
SmcOpenConnection (NULL, /* use SESSION_MANAGER env */
|
||||
NULL, /* means use existing ICE connection */
|
||||
@ -276,10 +276,10 @@ meta_session_init (const char *previous_client_id,
|
||||
(char*) previous_client_id,
|
||||
&client_id,
|
||||
255, buf);
|
||||
|
||||
|
||||
if (session_connection == NULL)
|
||||
{
|
||||
meta_topic (META_DEBUG_SM,
|
||||
meta_topic (META_DEBUG_SM,
|
||||
"Failed to a open connection to a session manager, so window positions will not be saved: %s\n",
|
||||
buf);
|
||||
|
||||
@ -296,7 +296,7 @@ meta_session_init (const char *previous_client_id,
|
||||
current_state = STATE_IDLE;
|
||||
else
|
||||
current_state = STATE_REGISTERING;
|
||||
|
||||
|
||||
{
|
||||
SmProp prop1, prop2, prop3, prop4, prop5, prop6, *props[6];
|
||||
SmPropValue prop1val, prop2val, prop3val, prop4val, prop5val, prop6val;
|
||||
@ -328,7 +328,7 @@ meta_session_init (const char *previous_client_id,
|
||||
prop2.vals = &prop2val;
|
||||
prop2val.value = (char*) g_get_user_name ();
|
||||
prop2val.length = strlen (prop2val.value);
|
||||
|
||||
|
||||
prop3.name = SmRestartStyleHint;
|
||||
prop3.type = SmCARD8;
|
||||
prop3.num_vals = 1;
|
||||
@ -342,7 +342,7 @@ meta_session_init (const char *previous_client_id,
|
||||
prop4.num_vals = 1;
|
||||
prop4.vals = &prop4val;
|
||||
prop4val.value = pid;
|
||||
prop4val.length = strlen (prop4val.value);
|
||||
prop4val.length = strlen (prop4val.value);
|
||||
|
||||
/* Always start in home directory */
|
||||
prop5.name = SmCurrentDirectory;
|
||||
@ -358,14 +358,14 @@ meta_session_init (const char *previous_client_id,
|
||||
prop6.vals = &prop6val;
|
||||
prop6val.value = &priority;
|
||||
prop6val.length = 1;
|
||||
|
||||
|
||||
props[0] = &prop1;
|
||||
props[1] = &prop2;
|
||||
props[2] = &prop3;
|
||||
props[3] = &prop4;
|
||||
props[4] = &prop5;
|
||||
props[5] = &prop6;
|
||||
|
||||
|
||||
SmcSetProperties (session_connection, 6, props);
|
||||
}
|
||||
|
||||
@ -388,11 +388,11 @@ save_yourself_possibly_done (gboolean shutdown,
|
||||
meta_topic (META_DEBUG_SM,
|
||||
"save possibly done shutdown = %d success = %d\n",
|
||||
shutdown, successful);
|
||||
|
||||
|
||||
if (current_state == STATE_SAVING_PHASE_1)
|
||||
{
|
||||
Status status;
|
||||
|
||||
|
||||
status = SmcRequestSaveYourselfPhase2 (session_connection,
|
||||
save_phase_2_callback,
|
||||
GINT_TO_POINTER (shutdown));
|
||||
@ -423,17 +423,17 @@ save_yourself_possibly_done (gboolean shutdown,
|
||||
meta_topic (META_DEBUG_SM,
|
||||
"Requested interact, status = %d\n", status);
|
||||
}
|
||||
|
||||
|
||||
if (current_state == STATE_SAVING_PHASE_1 ||
|
||||
current_state == STATE_SAVING_PHASE_2 ||
|
||||
current_state == STATE_DONE_WITH_INTERACT ||
|
||||
current_state == STATE_SKIPPING_GLOBAL_SAVE)
|
||||
{
|
||||
meta_topic (META_DEBUG_SM, "Sending SaveYourselfDone\n");
|
||||
|
||||
|
||||
SmcSaveYourselfDone (session_connection,
|
||||
successful);
|
||||
|
||||
|
||||
if (shutdown)
|
||||
current_state = STATE_FROZEN;
|
||||
else
|
||||
@ -441,19 +441,19 @@ save_yourself_possibly_done (gboolean shutdown,
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
static void
|
||||
save_phase_2_callback (SmcConn smc_conn, SmPointer client_data)
|
||||
{
|
||||
gboolean shutdown;
|
||||
|
||||
meta_topic (META_DEBUG_SM, "Phase 2 save");
|
||||
|
||||
|
||||
shutdown = GPOINTER_TO_INT (client_data);
|
||||
|
||||
|
||||
current_state = STATE_SAVING_PHASE_2;
|
||||
|
||||
save_state ();
|
||||
|
||||
|
||||
save_yourself_possibly_done (shutdown, TRUE);
|
||||
}
|
||||
|
||||
@ -468,9 +468,9 @@ save_yourself_callback (SmcConn smc_conn,
|
||||
gboolean successful;
|
||||
|
||||
meta_topic (META_DEBUG_SM, "SaveYourself received");
|
||||
|
||||
|
||||
successful = TRUE;
|
||||
|
||||
|
||||
/* The first SaveYourself after registering for the first time
|
||||
* is a special case (SM specs 7.2).
|
||||
*/
|
||||
@ -480,8 +480,8 @@ save_yourself_callback (SmcConn smc_conn,
|
||||
{
|
||||
current_state = STATE_IDLE;
|
||||
/* Double check that this is a section 7.2 SaveYourself: */
|
||||
|
||||
if (save_style == SmSaveLocal &&
|
||||
|
||||
if (save_style == SmSaveLocal &&
|
||||
interact_style == SmInteractStyleNone &&
|
||||
!shutdown && !fast)
|
||||
{
|
||||
@ -493,7 +493,7 @@ save_yourself_callback (SmcConn smc_conn,
|
||||
#endif
|
||||
|
||||
/* ignore Global style saves
|
||||
*
|
||||
*
|
||||
* This interpretaion of the Local/Global/Both styles
|
||||
* was discussed extensively on the xdg-list. See:
|
||||
*
|
||||
@ -507,11 +507,11 @@ save_yourself_callback (SmcConn smc_conn,
|
||||
}
|
||||
|
||||
interaction_allowed = interact_style != SmInteractStyleNone;
|
||||
|
||||
|
||||
current_state = STATE_SAVING_PHASE_1;
|
||||
|
||||
regenerate_save_file ();
|
||||
|
||||
|
||||
set_clone_restart_commands ();
|
||||
|
||||
save_yourself_possibly_done (shutdown, successful);
|
||||
@ -550,7 +550,7 @@ static void
|
||||
shutdown_cancelled_callback (SmcConn smc_conn, SmPointer client_data)
|
||||
{
|
||||
meta_topic (META_DEBUG_SM, "Shutdown cancelled received\n");
|
||||
|
||||
|
||||
if (session_connection != NULL &&
|
||||
(current_state != STATE_IDLE && current_state != STATE_FROZEN))
|
||||
{
|
||||
@ -559,14 +559,14 @@ shutdown_cancelled_callback (SmcConn smc_conn, SmPointer client_data)
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
static void
|
||||
interact_callback (SmcConn smc_conn, SmPointer client_data)
|
||||
{
|
||||
/* nothing */
|
||||
gboolean shutdown;
|
||||
|
||||
meta_topic (META_DEBUG_SM, "Interaction permission received\n");
|
||||
|
||||
|
||||
shutdown = GPOINTER_TO_INT (client_data);
|
||||
|
||||
current_state = STATE_DONE_WITH_INTERACT;
|
||||
@ -585,14 +585,14 @@ set_clone_restart_commands (void)
|
||||
const char *prgname;
|
||||
|
||||
prgname = g_get_prgname ();
|
||||
|
||||
|
||||
/* Restart (use same client ID) */
|
||||
|
||||
|
||||
prop1.name = SmRestartCommand;
|
||||
prop1.type = SmLISTofARRAY8;
|
||||
|
||||
|
||||
g_return_if_fail (client_id);
|
||||
|
||||
|
||||
i = 0;
|
||||
restartv[i] = (char *)prgname;
|
||||
++i;
|
||||
@ -613,7 +613,7 @@ set_clone_restart_commands (void)
|
||||
prop1.num_vals = i;
|
||||
|
||||
/* Clone (no client ID) */
|
||||
|
||||
|
||||
i = 0;
|
||||
clonev[i] = (char *)prgname;
|
||||
++i;
|
||||
@ -621,7 +621,7 @@ set_clone_restart_commands (void)
|
||||
|
||||
prop2.name = SmCloneCommand;
|
||||
prop2.type = SmLISTofARRAY8;
|
||||
|
||||
|
||||
prop2.vals = g_new (SmPropValue, i);
|
||||
i = 0;
|
||||
while (clonev[i])
|
||||
@ -633,7 +633,7 @@ set_clone_restart_commands (void)
|
||||
prop2.num_vals = i;
|
||||
|
||||
/* Discard */
|
||||
|
||||
|
||||
i = 0;
|
||||
discardv[i] = "rm";
|
||||
++i;
|
||||
@ -642,10 +642,10 @@ set_clone_restart_commands (void)
|
||||
discardv[i] = (char*) full_save_file ();
|
||||
++i;
|
||||
discardv[i] = NULL;
|
||||
|
||||
|
||||
prop3.name = SmDiscardCommand;
|
||||
prop3.type = SmLISTofARRAY8;
|
||||
|
||||
|
||||
prop3.vals = g_new (SmPropValue, i);
|
||||
i = 0;
|
||||
while (discardv[i])
|
||||
@ -656,11 +656,11 @@ set_clone_restart_commands (void)
|
||||
}
|
||||
prop3.num_vals = i;
|
||||
|
||||
|
||||
|
||||
props[0] = &prop1;
|
||||
props[1] = &prop2;
|
||||
props[2] = &prop3;
|
||||
|
||||
|
||||
SmcSetProperties (session_connection, 3, props);
|
||||
|
||||
g_free (prop1.vals);
|
||||
@ -713,7 +713,7 @@ window_type_to_string (MetaWindowType type)
|
||||
}
|
||||
|
||||
return "";
|
||||
}
|
||||
}
|
||||
|
||||
static MetaWindowType
|
||||
window_type_from_string (const char *str)
|
||||
@ -776,7 +776,7 @@ encode_text_as_utf8_markup (const char *text)
|
||||
GString *str;
|
||||
const char *p;
|
||||
char *escaped;
|
||||
|
||||
|
||||
str = g_string_new ("");
|
||||
|
||||
p = text;
|
||||
@ -788,7 +788,7 @@ encode_text_as_utf8_markup (const char *text)
|
||||
|
||||
escaped = g_markup_escape_text (str->str, str->len);
|
||||
g_string_free (str, TRUE);
|
||||
|
||||
|
||||
return escaped;
|
||||
}
|
||||
|
||||
@ -800,7 +800,7 @@ decode_text_from_utf8 (const char *text)
|
||||
const char *p;
|
||||
|
||||
str = g_string_new ("");
|
||||
|
||||
|
||||
p = text;
|
||||
while (*p)
|
||||
{
|
||||
@ -822,11 +822,11 @@ save_state (void)
|
||||
GSList *windows;
|
||||
GSList *tmp;
|
||||
int stack_position;
|
||||
|
||||
|
||||
g_assert (client_id);
|
||||
|
||||
outfile = NULL;
|
||||
|
||||
|
||||
/*
|
||||
* g_get_user_config_dir() is guaranteed to return an existing directory.
|
||||
* Eventually, if SM stays with the WM, I'd like to make this
|
||||
@ -838,7 +838,7 @@ save_state (void)
|
||||
mutter_dir = g_strconcat (g_get_user_config_dir (),
|
||||
G_DIR_SEPARATOR_S "mutter",
|
||||
NULL);
|
||||
|
||||
|
||||
session_dir = g_strconcat (mutter_dir,
|
||||
G_DIR_SEPARATOR_S "sessions",
|
||||
NULL);
|
||||
@ -858,7 +858,7 @@ save_state (void)
|
||||
}
|
||||
|
||||
meta_topic (META_DEBUG_SM, "Saving session to '%s'\n", full_save_file ());
|
||||
|
||||
|
||||
outfile = fopen (full_save_file (), "w");
|
||||
|
||||
if (outfile == NULL)
|
||||
@ -881,9 +881,9 @@ save_state (void)
|
||||
* Note that attributes on <window> are the match info we use to
|
||||
* see if the saved state applies to a restored window, and
|
||||
* child elements are the saved state to be applied.
|
||||
*
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
fprintf (outfile, "<mutter_session id=\"%s\">\n",
|
||||
client_id);
|
||||
|
||||
@ -912,7 +912,7 @@ save_state (void)
|
||||
* in UTF-8 (I think they are in XPCS which is Latin-1?
|
||||
* in practice they are always ascii though.)
|
||||
*/
|
||||
|
||||
|
||||
sm_client_id = encode_text_as_utf8_markup (window->sm_client_id);
|
||||
res_class = window->res_class ?
|
||||
encode_text_as_utf8_markup (window->res_class) : NULL;
|
||||
@ -924,7 +924,7 @@ save_state (void)
|
||||
title = g_markup_escape_text (window->title, -1);
|
||||
else
|
||||
title = NULL;
|
||||
|
||||
|
||||
meta_topic (META_DEBUG_SM, "Saving session managed window %s, client ID '%s'\n",
|
||||
window->desc, window->sm_client_id);
|
||||
|
||||
@ -943,7 +943,7 @@ save_state (void)
|
||||
g_free (res_name);
|
||||
g_free (role);
|
||||
g_free (title);
|
||||
|
||||
|
||||
/* Sticky */
|
||||
if (window->on_all_workspaces_requested)
|
||||
fputs (" <sticky/>\n", outfile);
|
||||
@ -956,13 +956,13 @@ save_state (void)
|
||||
if (META_WINDOW_MAXIMIZED (window))
|
||||
{
|
||||
fprintf (outfile,
|
||||
" <maximized saved_x=\"%d\" saved_y=\"%d\" saved_width=\"%d\" saved_height=\"%d\"/>\n",
|
||||
" <maximized saved_x=\"%d\" saved_y=\"%d\" saved_width=\"%d\" saved_height=\"%d\"/>\n",
|
||||
window->saved_rect.x,
|
||||
window->saved_rect.y,
|
||||
window->saved_rect.width,
|
||||
window->saved_rect.height);
|
||||
}
|
||||
|
||||
|
||||
/* Workspaces we're on */
|
||||
{
|
||||
int n;
|
||||
@ -975,13 +975,13 @@ save_state (void)
|
||||
{
|
||||
int x, y, w, h;
|
||||
meta_window_get_geometry (window, &x, &y, &w, &h);
|
||||
|
||||
|
||||
fprintf (outfile,
|
||||
" <geometry x=\"%d\" y=\"%d\" width=\"%d\" height=\"%d\" gravity=\"%s\"/>\n",
|
||||
x, y, w, h,
|
||||
meta_gravity_to_string (window->size_hints.win_gravity));
|
||||
}
|
||||
|
||||
|
||||
fputs (" </window>\n", outfile);
|
||||
}
|
||||
else
|
||||
@ -989,15 +989,15 @@ save_state (void)
|
||||
meta_topic (META_DEBUG_SM, "Not saving window '%s', not session managed\n",
|
||||
window->desc);
|
||||
}
|
||||
|
||||
|
||||
tmp = tmp->next;
|
||||
++stack_position;
|
||||
}
|
||||
|
||||
|
||||
g_slist_free (windows);
|
||||
|
||||
fputs ("</mutter_session>\n", outfile);
|
||||
|
||||
|
||||
out:
|
||||
if (outfile)
|
||||
{
|
||||
@ -1013,7 +1013,7 @@ save_state (void)
|
||||
full_save_file (), g_strerror (errno));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
g_free (mutter_dir);
|
||||
g_free (session_dir);
|
||||
}
|
||||
@ -1094,7 +1094,7 @@ load_state (const char *previous_save_file)
|
||||
G_DIR_SEPARATOR_S,
|
||||
previous_save_file,
|
||||
NULL);
|
||||
|
||||
|
||||
if (!g_file_get_contents (session_file,
|
||||
&text,
|
||||
&length,
|
||||
@ -1114,10 +1114,10 @@ load_state (const char *previous_save_file)
|
||||
meta_topic (META_DEBUG_SM, "Parsing saved session file %s\n", session_file);
|
||||
g_free (session_file);
|
||||
session_file = NULL;
|
||||
|
||||
|
||||
parse_data.info = NULL;
|
||||
parse_data.previous_id = NULL;
|
||||
|
||||
|
||||
context = g_markup_parse_context_new (&mutter_session_parser,
|
||||
0, &parse_data, NULL);
|
||||
|
||||
@ -1127,8 +1127,8 @@ load_state (const char *previous_save_file)
|
||||
length,
|
||||
&error))
|
||||
goto error;
|
||||
|
||||
|
||||
|
||||
|
||||
error = NULL;
|
||||
if (!g_markup_parse_context_end_parse (context, &error))
|
||||
goto error;
|
||||
@ -1138,7 +1138,7 @@ load_state (const char *previous_save_file)
|
||||
goto out;
|
||||
|
||||
error:
|
||||
|
||||
|
||||
meta_warning ("Failed to parse saved session file: %s\n",
|
||||
error->message);
|
||||
g_error_free (error);
|
||||
@ -1148,9 +1148,9 @@ load_state (const char *previous_save_file)
|
||||
|
||||
g_free (parse_data.previous_id);
|
||||
parse_data.previous_id = NULL;
|
||||
|
||||
|
||||
out:
|
||||
|
||||
|
||||
g_free (text);
|
||||
|
||||
return parse_data.previous_id;
|
||||
@ -1172,14 +1172,14 @@ start_element_handler (GMarkupParseContext *context,
|
||||
if (strcmp (element_name, "mutter_session") == 0)
|
||||
{
|
||||
/* Get previous ID */
|
||||
int i;
|
||||
int i;
|
||||
|
||||
i = 0;
|
||||
while (attribute_names[i])
|
||||
{
|
||||
const char *name;
|
||||
const char *val;
|
||||
|
||||
|
||||
name = attribute_names[i];
|
||||
val = attribute_values[i];
|
||||
|
||||
@ -1191,7 +1191,7 @@ start_element_handler (GMarkupParseContext *context,
|
||||
"<mutter_session> attribute seen but we already have the session ID");
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
if (strcmp (name, "id") == 0)
|
||||
{
|
||||
pd->previous_id = decode_text_from_utf8 (val);
|
||||
@ -1205,14 +1205,14 @@ start_element_handler (GMarkupParseContext *context,
|
||||
name, "mutter_session");
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
++i;
|
||||
}
|
||||
}
|
||||
else if (strcmp (element_name, "window") == 0)
|
||||
{
|
||||
int i;
|
||||
|
||||
|
||||
if (pd->info)
|
||||
{
|
||||
g_set_error (error,
|
||||
@ -1221,7 +1221,7 @@ start_element_handler (GMarkupParseContext *context,
|
||||
"nested <window> tag");
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
pd->info = session_info_new ();
|
||||
|
||||
i = 0;
|
||||
@ -1229,10 +1229,10 @@ start_element_handler (GMarkupParseContext *context,
|
||||
{
|
||||
const char *name;
|
||||
const char *val;
|
||||
|
||||
|
||||
name = attribute_names[i];
|
||||
val = attribute_values[i];
|
||||
|
||||
|
||||
if (strcmp (name, "id") == 0)
|
||||
{
|
||||
if (*val)
|
||||
@ -1282,7 +1282,7 @@ start_element_handler (GMarkupParseContext *context,
|
||||
pd->info = NULL;
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
++i;
|
||||
}
|
||||
}
|
||||
@ -1296,7 +1296,7 @@ start_element_handler (GMarkupParseContext *context,
|
||||
const char *name;
|
||||
|
||||
name = attribute_names[i];
|
||||
|
||||
|
||||
if (strcmp (name, "index") == 0)
|
||||
{
|
||||
pd->info->workspace_indices =
|
||||
@ -1314,7 +1314,7 @@ start_element_handler (GMarkupParseContext *context,
|
||||
pd->info = NULL;
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
++i;
|
||||
}
|
||||
}
|
||||
@ -1394,22 +1394,22 @@ start_element_handler (GMarkupParseContext *context,
|
||||
pd->info->saved_rect.y,
|
||||
pd->info->saved_rect.width,
|
||||
pd->info->saved_rect.height);
|
||||
}
|
||||
}
|
||||
else if (strcmp (element_name, "geometry") == 0)
|
||||
{
|
||||
int i;
|
||||
|
||||
pd->info->geometry_set = TRUE;
|
||||
|
||||
|
||||
i = 0;
|
||||
while (attribute_names[i])
|
||||
{
|
||||
const char *name;
|
||||
const char *val;
|
||||
|
||||
|
||||
name = attribute_names[i];
|
||||
val = attribute_values[i];
|
||||
|
||||
|
||||
if (strcmp (name, "x") == 0)
|
||||
{
|
||||
if (*val)
|
||||
@ -1444,7 +1444,7 @@ start_element_handler (GMarkupParseContext *context,
|
||||
name, "geometry");
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
++i;
|
||||
}
|
||||
|
||||
@ -1482,12 +1482,12 @@ end_element_handler (GMarkupParseContext *context,
|
||||
|
||||
window_info_list = g_slist_prepend (window_info_list,
|
||||
pd->info);
|
||||
|
||||
|
||||
meta_topic (META_DEBUG_SM, "Loaded window info from session with class: %s name: %s role: %s\n",
|
||||
pd->info->res_class ? pd->info->res_class : "(none)",
|
||||
pd->info->res_name ? pd->info->res_name : "(none)",
|
||||
pd->info->role ? pd->info->role : "(none)");
|
||||
|
||||
|
||||
pd->info = NULL;
|
||||
}
|
||||
}
|
||||
@ -1523,20 +1523,20 @@ get_possible_matches (MetaWindow *window)
|
||||
GSList *retval;
|
||||
GSList *tmp;
|
||||
gboolean ignore_client_id;
|
||||
|
||||
|
||||
retval = NULL;
|
||||
|
||||
ignore_client_id = g_getenv ("MUTTER_DEBUG_SM") != NULL;
|
||||
|
||||
|
||||
tmp = window_info_list;
|
||||
while (tmp != NULL)
|
||||
{
|
||||
MetaWindowSessionInfo *info;
|
||||
|
||||
info = tmp->data;
|
||||
|
||||
|
||||
if ((ignore_client_id ||
|
||||
both_null_or_matching (info->id, window->sm_client_id)) &&
|
||||
both_null_or_matching (info->id, window->sm_client_id)) &&
|
||||
both_null_or_matching (info->res_class, window->res_class) &&
|
||||
both_null_or_matching (info->res_name, window->res_name) &&
|
||||
both_null_or_matching (info->role, window->role))
|
||||
@ -1563,7 +1563,7 @@ get_possible_matches (MetaWindow *window)
|
||||
window->desc,
|
||||
window->res_class ? window->res_class : "(none)",
|
||||
info->res_class ? info->res_class : "(none)");
|
||||
|
||||
|
||||
else if (!both_null_or_matching (info->res_name, window->res_name))
|
||||
meta_topic (META_DEBUG_SM, "Window %s has name %s doesn't match saved name %s, no match\n",
|
||||
window->desc,
|
||||
@ -1579,7 +1579,7 @@ get_possible_matches (MetaWindow *window)
|
||||
window->desc, info->id);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
tmp = tmp->next;
|
||||
}
|
||||
|
||||
@ -1593,10 +1593,10 @@ find_best_match (GSList *infos,
|
||||
GSList *tmp;
|
||||
const MetaWindowSessionInfo *matching_title;
|
||||
const MetaWindowSessionInfo *matching_type;
|
||||
|
||||
|
||||
matching_title = NULL;
|
||||
matching_type = NULL;
|
||||
|
||||
|
||||
tmp = infos;
|
||||
while (tmp != NULL)
|
||||
{
|
||||
@ -1611,7 +1611,7 @@ find_best_match (GSList *infos,
|
||||
if (matching_type == NULL &&
|
||||
info->type == window->type)
|
||||
matching_type = info;
|
||||
|
||||
|
||||
tmp = tmp->next;
|
||||
}
|
||||
|
||||
@ -1620,7 +1620,7 @@ find_best_match (GSList *infos,
|
||||
* to e.g. break ties by geometry hint similarity,
|
||||
* or other window features.
|
||||
*/
|
||||
|
||||
|
||||
if (matching_title)
|
||||
return matching_title;
|
||||
else if (matching_type)
|
||||
@ -1634,7 +1634,7 @@ meta_window_lookup_saved_state (MetaWindow *window)
|
||||
{
|
||||
GSList *possibles;
|
||||
const MetaWindowSessionInfo *info;
|
||||
|
||||
|
||||
/* Window is not session managed.
|
||||
* I haven't yet figured out how to deal with these
|
||||
* in a way that doesn't cause broken side effects in
|
||||
@ -1658,9 +1658,9 @@ meta_window_lookup_saved_state (MetaWindow *window)
|
||||
}
|
||||
|
||||
info = find_best_match (possibles, window);
|
||||
|
||||
|
||||
g_slist_free (possibles);
|
||||
|
||||
|
||||
return info;
|
||||
}
|
||||
|
||||
@ -1685,7 +1685,7 @@ session_info_free (MetaWindowSessionInfo *info)
|
||||
g_free (info->role);
|
||||
|
||||
g_slist_free (info->workspace_indices);
|
||||
|
||||
|
||||
g_free (info);
|
||||
}
|
||||
|
||||
@ -1698,7 +1698,7 @@ session_info_new (void)
|
||||
|
||||
info->type = META_WINDOW_NORMAL;
|
||||
info->gravity = NorthWestGravity;
|
||||
|
||||
|
||||
return info;
|
||||
}
|
||||
|
||||
@ -1739,7 +1739,7 @@ finish_interact (gboolean shutdown)
|
||||
if (current_state == STATE_DONE_WITH_INTERACT) /* paranoia */
|
||||
{
|
||||
SmcInteractDone (session_connection, False /* don't cancel logout */);
|
||||
|
||||
|
||||
save_yourself_possibly_done (shutdown, TRUE);
|
||||
}
|
||||
}
|
||||
@ -1764,13 +1764,13 @@ warn_about_lame_clients_and_finish_interact (gboolean shutdown)
|
||||
GSList *tmp;
|
||||
GSList *columns = NULL;
|
||||
GPid pid;
|
||||
|
||||
|
||||
windows = meta_display_list_windows (meta_get_display (), META_LIST_DEFAULT);
|
||||
tmp = windows;
|
||||
while (tmp != NULL)
|
||||
{
|
||||
MetaWindow *window;
|
||||
|
||||
|
||||
window = tmp->data;
|
||||
|
||||
/* only complain about normal windows, the others
|
||||
@ -1779,12 +1779,12 @@ warn_about_lame_clients_and_finish_interact (gboolean shutdown)
|
||||
if (window->sm_client_id == NULL &&
|
||||
window->type == META_WINDOW_NORMAL)
|
||||
lame = g_slist_prepend (lame, window);
|
||||
|
||||
|
||||
tmp = tmp->next;
|
||||
}
|
||||
|
||||
|
||||
g_slist_free (windows);
|
||||
|
||||
|
||||
if (lame == NULL)
|
||||
{
|
||||
/* No lame apps. */
|
||||
|
@ -9,9 +9,9 @@
|
||||
* requires us to do it here.
|
||||
*/
|
||||
|
||||
/*
|
||||
/*
|
||||
* Copyright (C) 2001 Havoc Pennington
|
||||
*
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 of the
|
||||
@ -21,7 +21,7 @@
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
@ -45,11 +45,11 @@ struct _MetaWindowSessionInfo
|
||||
MetaWindowType type;
|
||||
|
||||
/* Information we restore */
|
||||
|
||||
GSList *workspace_indices;
|
||||
|
||||
GSList *workspace_indices;
|
||||
|
||||
int stack_position;
|
||||
|
||||
|
||||
/* width/height should be multiplied by resize inc and
|
||||
* added to base size; position should be interpreted in
|
||||
* light of gravity. This preserves semantics of the
|
||||
|
@ -94,14 +94,14 @@ x_error_handler (Display *xdisplay,
|
||||
if (error_trap_depth == 0)
|
||||
{
|
||||
print_backtrace ();
|
||||
|
||||
|
||||
fprintf (stderr, "Unexpected X error: %s serial %ld error_code %d request_code %d minor_code %d)\n",
|
||||
buf,
|
||||
error->serial,
|
||||
error->error_code,
|
||||
error->request_code,
|
||||
error->minor_code);
|
||||
|
||||
|
||||
exit (1);
|
||||
}
|
||||
|
||||
@ -122,7 +122,7 @@ error_trap_pop (Display *xdisplay)
|
||||
fprintf (stderr, "Error trap underflow!\n");
|
||||
exit (1);
|
||||
}
|
||||
|
||||
|
||||
XSync (xdisplay, False); /* get all errors out of the queue */
|
||||
--error_trap_depth;
|
||||
}
|
||||
@ -192,11 +192,11 @@ try_get_reply (Display *xdisplay,
|
||||
struct timeval current_time;
|
||||
|
||||
gettimeofday (¤t_time, NULL);
|
||||
|
||||
|
||||
printf (" %gms (we have a reply for property %ld)\n",
|
||||
ELAPSED (program_start_time, current_time),
|
||||
ag_task_get_property (task));
|
||||
|
||||
|
||||
data = NULL;
|
||||
|
||||
name = atom_name (xdisplay,
|
||||
@ -204,7 +204,7 @@ try_get_reply (Display *xdisplay,
|
||||
printf (" %s on 0x%lx:\n", name,
|
||||
ag_task_get_window (task));
|
||||
free (name);
|
||||
|
||||
|
||||
result = ag_task_get_reply_and_free (task,
|
||||
&actual_type,
|
||||
&actual_format,
|
||||
@ -222,12 +222,12 @@ try_get_reply (Display *xdisplay,
|
||||
name = atom_name (xdisplay, actual_type);
|
||||
printf (" actual_type = %s\n", name);
|
||||
free (name);
|
||||
|
||||
|
||||
printf (" actual_format = %d\n", actual_format);
|
||||
|
||||
|
||||
printf (" n_items = %lu\n", n_items);
|
||||
printf (" bytes_after = %lu\n", bytes_after);
|
||||
|
||||
|
||||
printf (" data = \"%s\"\n", data ? (char*) data : "NULL");
|
||||
}
|
||||
|
||||
@ -252,13 +252,13 @@ main (int argc, char **argv)
|
||||
char *end;
|
||||
Atom *props;
|
||||
struct timeval current_time;
|
||||
|
||||
|
||||
if (argc < 2)
|
||||
{
|
||||
fprintf (stderr, "specify window ID\n");
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
window_str = argv[1];
|
||||
|
||||
end = NULL;
|
||||
@ -280,7 +280,7 @@ main (int argc, char **argv)
|
||||
XSynchronize (xdisplay, True);
|
||||
|
||||
XSetErrorHandler (x_error_handler);
|
||||
|
||||
|
||||
n_props = 0;
|
||||
props = XListProperties (xdisplay, window, &n_props);
|
||||
if (n_props == 0 || props == NULL)
|
||||
@ -290,7 +290,7 @@ main (int argc, char **argv)
|
||||
}
|
||||
|
||||
gettimeofday (&program_start_time, NULL);
|
||||
|
||||
|
||||
i = 0;
|
||||
while (i < n_props)
|
||||
{
|
||||
@ -307,7 +307,7 @@ main (int argc, char **argv)
|
||||
fprintf (stderr, "Failed to send request\n");
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
++i;
|
||||
}
|
||||
|
||||
@ -315,24 +315,24 @@ main (int argc, char **argv)
|
||||
props = NULL;
|
||||
|
||||
n_left = n_props;
|
||||
|
||||
|
||||
while (TRUE)
|
||||
{
|
||||
XEvent xevent;
|
||||
int connection;
|
||||
fd_set set;
|
||||
AgGetPropertyTask *task;
|
||||
|
||||
|
||||
/* Mop up event queue */
|
||||
while (XPending (xdisplay) > 0)
|
||||
{
|
||||
{
|
||||
XNextEvent (xdisplay, &xevent);
|
||||
gettimeofday (¤t_time, NULL);
|
||||
printf (" %gms (processing event type %d)\n",
|
||||
ELAPSED (program_start_time, current_time),
|
||||
xevent.xany.type);
|
||||
}
|
||||
|
||||
|
||||
while ((task = ag_get_next_completed_task (xdisplay)))
|
||||
{
|
||||
try_get_reply (xdisplay, task);
|
||||
@ -358,7 +358,7 @@ main (int argc, char **argv)
|
||||
}
|
||||
|
||||
run_speed_comparison (xdisplay, window);
|
||||
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -373,7 +373,7 @@ run_speed_comparison (Display *xdisplay,
|
||||
int n_props;
|
||||
struct timeval start, end;
|
||||
int n_left;
|
||||
|
||||
|
||||
/* We just use atom values (0 to n_props) % 200, many are probably
|
||||
* BadAtom, that's fine, but the %200 keeps most of them valid. The
|
||||
* async case is about twice as advantageous when using valid atoms
|
||||
@ -382,9 +382,9 @@ run_speed_comparison (Display *xdisplay,
|
||||
*/
|
||||
n_props = 4000;
|
||||
printf ("Timing with %d property requests\n", n_props);
|
||||
|
||||
|
||||
gettimeofday (&start, NULL);
|
||||
|
||||
|
||||
i = 0;
|
||||
while (i < n_props)
|
||||
{
|
||||
@ -397,23 +397,23 @@ run_speed_comparison (Display *xdisplay,
|
||||
fprintf (stderr, "Failed to send request\n");
|
||||
exit (1);
|
||||
}
|
||||
|
||||
|
||||
++i;
|
||||
}
|
||||
|
||||
n_left = n_props;
|
||||
|
||||
|
||||
while (TRUE)
|
||||
{
|
||||
int connection;
|
||||
fd_set set;
|
||||
XEvent xevent;
|
||||
AgGetPropertyTask *task;
|
||||
|
||||
|
||||
/* Mop up event queue */
|
||||
while (XPending (xdisplay) > 0)
|
||||
XNextEvent (xdisplay, &xevent);
|
||||
|
||||
|
||||
while ((task = ag_get_next_completed_task (xdisplay)))
|
||||
{
|
||||
Atom actual_type;
|
||||
@ -423,7 +423,7 @@ run_speed_comparison (Display *xdisplay,
|
||||
unsigned char *data;
|
||||
|
||||
assert (ag_task_have_reply (task));
|
||||
|
||||
|
||||
data = NULL;
|
||||
ag_task_get_reply_and_free (task,
|
||||
&actual_type,
|
||||
@ -431,13 +431,13 @@ run_speed_comparison (Display *xdisplay,
|
||||
&n_items,
|
||||
&bytes_after,
|
||||
&data);
|
||||
|
||||
|
||||
if (data)
|
||||
XFree (data);
|
||||
|
||||
|
||||
n_left -= 1;
|
||||
}
|
||||
|
||||
|
||||
if (n_left == 0)
|
||||
break;
|
||||
|
||||
@ -449,16 +449,16 @@ run_speed_comparison (Display *xdisplay,
|
||||
|
||||
select (connection + 1, &set, NULL, NULL, NULL);
|
||||
}
|
||||
|
||||
|
||||
gettimeofday (&end, NULL);
|
||||
|
||||
|
||||
printf ("Async time: %gms\n",
|
||||
ELAPSED (start, end));
|
||||
|
||||
|
||||
gettimeofday (&start, NULL);
|
||||
|
||||
error_trap_push (xdisplay);
|
||||
|
||||
|
||||
i = 0;
|
||||
while (i < n_props)
|
||||
{
|
||||
@ -467,7 +467,7 @@ run_speed_comparison (Display *xdisplay,
|
||||
unsigned long n_items;
|
||||
unsigned long bytes_after;
|
||||
unsigned char *data;
|
||||
|
||||
|
||||
data = NULL;
|
||||
if (XGetWindowProperty (xdisplay, window,
|
||||
(Atom) i % 200,
|
||||
@ -483,14 +483,14 @@ run_speed_comparison (Display *xdisplay,
|
||||
if (data)
|
||||
XFree (data);
|
||||
}
|
||||
|
||||
|
||||
++i;
|
||||
}
|
||||
|
||||
error_trap_pop (xdisplay);
|
||||
|
||||
|
||||
gettimeofday (&end, NULL);
|
||||
|
||||
|
||||
printf ("Sync time: %gms\n",
|
||||
ELAPSED (start, end));
|
||||
}
|
||||
|
@ -15,11 +15,11 @@
|
||||
* together.
|
||||
*/
|
||||
|
||||
/*
|
||||
/*
|
||||
* Copyright (C) 2001, 2002, 2003 Red Hat, Inc.
|
||||
* Copyright (C) 2004, 2005 Elijah Newren
|
||||
* Copyright (C) 2009 Thomas Thurman
|
||||
*
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 of the
|
||||
@ -29,7 +29,7 @@
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
@ -196,7 +196,7 @@ reload_wm_client_machine (MetaWindow *window,
|
||||
{
|
||||
g_free (window->wm_client_machine);
|
||||
window->wm_client_machine = NULL;
|
||||
|
||||
|
||||
if (value->type != META_PROP_VALUE_INVALID)
|
||||
window->wm_client_machine = g_strdup (value->v.str);
|
||||
|
||||
@ -345,7 +345,7 @@ reload_net_wm_pid (MetaWindow *window,
|
||||
if (value->type != META_PROP_VALUE_INVALID)
|
||||
{
|
||||
gulong cardinal = (int) value->v.cardinal;
|
||||
|
||||
|
||||
if (cardinal <= 0)
|
||||
meta_warning ("Application set a bogus _NET_WM_PID %lu\n",
|
||||
cardinal);
|
||||
@ -445,12 +445,12 @@ set_title_text (MetaWindow *window,
|
||||
char **target)
|
||||
{
|
||||
gboolean modified = FALSE;
|
||||
|
||||
|
||||
if (!target)
|
||||
return FALSE;
|
||||
|
||||
|
||||
g_free (*target);
|
||||
|
||||
|
||||
if (!title)
|
||||
*target = g_strdup ("");
|
||||
else if (g_utf8_strlen (title, MAX_TITLE_LENGTH + 1) > MAX_TITLE_LENGTH)
|
||||
@ -503,7 +503,7 @@ set_window_title (MetaWindow *window,
|
||||
window->display->atom__NET_WM_VISIBLE_NAME,
|
||||
&new_title);
|
||||
priv->using_net_wm_visible_name = modified;
|
||||
|
||||
|
||||
meta_window_set_title (window, new_title);
|
||||
|
||||
g_free (new_title);
|
||||
@ -548,7 +548,7 @@ reload_wm_name (MetaWindow *window,
|
||||
value->v.str);
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
if (value->type != META_PROP_VALUE_INVALID)
|
||||
{
|
||||
set_window_title (window, value->v.str);
|
||||
@ -796,7 +796,7 @@ reload_mwm_hints (MetaWindow *window,
|
||||
meta_verbose ("Functions flag unset\n");
|
||||
|
||||
meta_window_recalc_features (window);
|
||||
|
||||
|
||||
/* We do all this anyhow at the end of meta_window_x11_new() */
|
||||
if (!window->constructing)
|
||||
{
|
||||
@ -804,7 +804,7 @@ reload_mwm_hints (MetaWindow *window,
|
||||
meta_window_ensure_frame (window);
|
||||
else
|
||||
meta_window_destroy_frame (window);
|
||||
|
||||
|
||||
meta_window_queue (window,
|
||||
META_QUEUE_MOVE_RESIZE |
|
||||
/* because ensure/destroy frame may unmap: */
|
||||
@ -859,32 +859,32 @@ reload_net_startup_id (MetaWindow *window,
|
||||
{
|
||||
guint32 timestamp = window->net_wm_user_time;
|
||||
MetaWorkspace *workspace = NULL;
|
||||
|
||||
|
||||
g_free (window->startup_id);
|
||||
|
||||
|
||||
if (value->type != META_PROP_VALUE_INVALID)
|
||||
window->startup_id = g_strdup (value->v.str);
|
||||
else
|
||||
window->startup_id = NULL;
|
||||
|
||||
|
||||
/* Update timestamp and workspace on a running window */
|
||||
if (!window->constructing)
|
||||
{
|
||||
window->initial_timestamp_set = 0;
|
||||
window->initial_timestamp_set = 0;
|
||||
window->initial_workspace_set = 0;
|
||||
|
||||
|
||||
if (meta_screen_apply_startup_properties (window->screen, window))
|
||||
{
|
||||
|
||||
|
||||
if (window->initial_timestamp_set)
|
||||
timestamp = window->initial_timestamp;
|
||||
if (window->initial_workspace_set)
|
||||
workspace = meta_screen_get_workspace_by_index (window->screen, window->initial_workspace);
|
||||
|
||||
|
||||
meta_window_activate_with_workspace (window, timestamp, workspace);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
meta_verbose ("New _NET_STARTUP_ID \"%s\" for %s\n",
|
||||
window->startup_id ? window->startup_id : "unset",
|
||||
window->desc);
|
||||
@ -982,7 +982,7 @@ spew_size_hints_differences (const XSizeHints *old,
|
||||
if (FLAG_CHANGED (old, new, PWinGravity))
|
||||
meta_topic (META_DEBUG_GEOMETRY, "XSizeHints: PWinGravity now %s (%d -> %d)\n",
|
||||
FLAG_TOGGLED_ON (old, new, PWinGravity) ? "set" : "unset",
|
||||
old->win_gravity, new->win_gravity);
|
||||
old->win_gravity, new->win_gravity);
|
||||
}
|
||||
|
||||
void
|
||||
@ -1335,15 +1335,15 @@ reload_normal_hints (MetaWindow *window,
|
||||
if (value->type != META_PROP_VALUE_INVALID)
|
||||
{
|
||||
XSizeHints old_hints;
|
||||
|
||||
|
||||
meta_topic (META_DEBUG_GEOMETRY, "Updating WM_NORMAL_HINTS for %s\n", window->desc);
|
||||
|
||||
old_hints = window->size_hints;
|
||||
|
||||
|
||||
meta_set_normal_hints (window, value->v.size_hints.hints);
|
||||
|
||||
|
||||
spew_size_hints_differences (&old_hints, &window->size_hints);
|
||||
|
||||
|
||||
meta_window_recalc_features (window);
|
||||
|
||||
if (!initial)
|
||||
@ -1357,12 +1357,12 @@ reload_wm_protocols (MetaWindow *window,
|
||||
gboolean initial)
|
||||
{
|
||||
int i;
|
||||
|
||||
|
||||
window->take_focus = FALSE;
|
||||
window->delete_window = FALSE;
|
||||
window->can_ping = FALSE;
|
||||
|
||||
if (value->type == META_PROP_VALUE_INVALID)
|
||||
|
||||
if (value->type == META_PROP_VALUE_INVALID)
|
||||
return;
|
||||
|
||||
i = 0;
|
||||
@ -1379,7 +1379,7 @@ reload_wm_protocols (MetaWindow *window,
|
||||
window->can_ping = TRUE;
|
||||
++i;
|
||||
}
|
||||
|
||||
|
||||
meta_verbose ("New _NET_STARTUP_ID \"%s\" for %s\n",
|
||||
window->startup_id ? window->startup_id : "unset",
|
||||
window->desc);
|
||||
@ -1394,7 +1394,7 @@ reload_wm_hints (MetaWindow *window,
|
||||
gboolean urgent;
|
||||
|
||||
old_group_leader = window->xgroup_leader;
|
||||
|
||||
|
||||
/* Fill in defaults */
|
||||
window->input = TRUE;
|
||||
window->initially_iconic = FALSE;
|
||||
@ -1406,7 +1406,7 @@ reload_wm_hints (MetaWindow *window,
|
||||
if (value->type != META_PROP_VALUE_INVALID)
|
||||
{
|
||||
const XWMHints *hints = value->v.wm_hints;
|
||||
|
||||
|
||||
if (hints->flags & InputHint)
|
||||
window->input = hints->input;
|
||||
|
||||
@ -1436,7 +1436,7 @@ reload_wm_hints (MetaWindow *window,
|
||||
{
|
||||
meta_verbose ("Window %s changed its group leader to 0x%lx\n",
|
||||
window->desc, window->xgroup_leader);
|
||||
|
||||
|
||||
meta_window_group_leader_changed (window);
|
||||
}
|
||||
|
||||
@ -1709,7 +1709,7 @@ meta_display_init_window_prop_hooks (MetaDisplay *display)
|
||||
|
||||
MetaWindowPropHooks *table = g_memdup (hooks, sizeof (hooks)),
|
||||
*cursor = table;
|
||||
|
||||
|
||||
g_assert (display->prop_hooks == NULL);
|
||||
|
||||
display->prop_hooks_table = (gpointer) table;
|
||||
|
@ -11,9 +11,9 @@
|
||||
* round trip to the server.
|
||||
*/
|
||||
|
||||
/*
|
||||
/*
|
||||
* Copyright (C) 2001, 2002 Red Hat, Inc.
|
||||
*
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 of the
|
||||
@ -23,7 +23,7 @@
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
206
src/x11/xprops.c
206
src/x11/xprops.c
@ -2,7 +2,7 @@
|
||||
|
||||
/* Mutter X property convenience routines */
|
||||
|
||||
/*
|
||||
/*
|
||||
* Copyright (C) 2001 Havoc Pennington
|
||||
* Copyright (C) 2002 Red Hat Inc.
|
||||
*
|
||||
@ -10,7 +10,7 @@
|
||||
* Copyright 1987, 1988, 1998 The Open Group
|
||||
* Copyright 1988 by Wyse Technology, Inc., San Jose, Ca,
|
||||
* Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts,
|
||||
*
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 of the
|
||||
@ -20,7 +20,7 @@
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
@ -31,20 +31,20 @@ Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts,
|
||||
|
||||
All Rights Reserved
|
||||
|
||||
Permission to use, copy, modify, and distribute this software and its
|
||||
documentation for any purpose and without fee is hereby granted,
|
||||
Permission to use, copy, modify, and distribute this software and its
|
||||
documentation for any purpose and without fee is hereby granted,
|
||||
provided that the above copyright notice appear in all copies and that
|
||||
both that copyright notice and this permission notice appear in
|
||||
both that copyright notice and this permission notice appear in
|
||||
supporting documentation, and that the name Digital not be
|
||||
used in advertising or publicity pertaining to distribution of the
|
||||
software without specific, written prior permission.
|
||||
software without specific, written prior permission.
|
||||
|
||||
DIGITAL AND WYSE DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
|
||||
INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
|
||||
EVENT SHALL DIGITAL OR WYSE BE LIABLE FOR ANY SPECIAL, INDIRECT OR
|
||||
CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
|
||||
USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
||||
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
||||
DIGITAL AND WYSE DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
|
||||
INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
|
||||
EVENT SHALL DIGITAL OR WYSE BE LIABLE FOR ANY SPECIAL, INDIRECT OR
|
||||
CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
|
||||
USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
||||
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
||||
PERFORMANCE OF THIS SOFTWARE.
|
||||
|
||||
******************************************************************/
|
||||
@ -114,12 +114,12 @@ validate_or_free_results (GetPropertyResults *results,
|
||||
const char *res_class;
|
||||
const char *res_name;
|
||||
MetaWindow *w;
|
||||
|
||||
|
||||
if (expected_format == results->format &&
|
||||
expected_type == results->type &&
|
||||
(!must_have_items || results->n_items > 0))
|
||||
return TRUE;
|
||||
|
||||
return TRUE;
|
||||
|
||||
meta_error_trap_push (results->display);
|
||||
type_name = XGetAtomName (results->display->xdisplay, results->type);
|
||||
expected_name = XGetAtomName (results->display->xdisplay, expected_type);
|
||||
@ -140,7 +140,7 @@ validate_or_free_results (GetPropertyResults *results,
|
||||
res_class = NULL;
|
||||
res_name = NULL;
|
||||
}
|
||||
|
||||
|
||||
if (title == NULL)
|
||||
title = "unknown";
|
||||
|
||||
@ -149,7 +149,7 @@ validate_or_free_results (GetPropertyResults *results,
|
||||
|
||||
if (res_name == NULL)
|
||||
res_name = "unknown";
|
||||
|
||||
|
||||
meta_warning ("Window 0x%lx has property %s\nthat was expected to have type %s format %d\nand actually has type %s format %d n_items %d.\nThis is most likely an application bug, not a window manager bug.\nThe window has title=\"%s\" class=\"%s\" name=\"%s\"\n",
|
||||
results->xwindow,
|
||||
prop_name ? prop_name : "(bad atom)",
|
||||
@ -171,7 +171,7 @@ validate_or_free_results (GetPropertyResults *results,
|
||||
XFree (results->prop);
|
||||
results->prop = NULL;
|
||||
}
|
||||
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
@ -190,7 +190,7 @@ get_property (MetaDisplay *display,
|
||||
results->type = None;
|
||||
results->bytes_after = 0;
|
||||
results->format = 0;
|
||||
|
||||
|
||||
meta_error_trap_push (display);
|
||||
if (XGetWindowProperty (display->xdisplay, xwindow, xatom,
|
||||
0, G_MAXLONG,
|
||||
@ -222,12 +222,12 @@ atom_list_from_results (GetPropertyResults *results,
|
||||
int *n_atoms_p)
|
||||
{
|
||||
if (!validate_or_free_results (results, 32, XA_ATOM, FALSE))
|
||||
return FALSE;
|
||||
return FALSE;
|
||||
|
||||
*atoms_p = (Atom*) results->prop;
|
||||
*n_atoms_p = results->n_items;
|
||||
results->prop = NULL;
|
||||
|
||||
results->prop = NULL;
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
@ -256,12 +256,12 @@ cardinal_list_from_results (GetPropertyResults *results,
|
||||
int *n_cardinals_p)
|
||||
{
|
||||
if (!validate_or_free_results (results, 32, XA_CARDINAL, FALSE))
|
||||
return FALSE;
|
||||
return FALSE;
|
||||
|
||||
*cardinals_p = (gulong*) results->prop;
|
||||
*n_cardinals_p = results->n_items;
|
||||
results->prop = NULL;
|
||||
|
||||
|
||||
#if GLIB_SIZEOF_LONG == 8
|
||||
/* Xlib sign-extends format=32 items, but we want them unsigned */
|
||||
{
|
||||
@ -300,8 +300,8 @@ motif_hints_from_results (GetPropertyResults *results,
|
||||
{
|
||||
int real_size, max_size;
|
||||
#define MAX_ITEMS sizeof (MotifWmHints)/sizeof (gulong)
|
||||
|
||||
*hints_p = NULL;
|
||||
|
||||
*hints_p = NULL;
|
||||
|
||||
if (results->type == None || results->n_items <= 0)
|
||||
{
|
||||
@ -337,7 +337,7 @@ motif_hints_from_results (GetPropertyResults *results,
|
||||
XFree (results->prop);
|
||||
results->prop = NULL;
|
||||
}
|
||||
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
@ -348,7 +348,7 @@ meta_prop_get_motif_hints (MetaDisplay *display,
|
||||
MotifWmHints **hints_p)
|
||||
{
|
||||
GetPropertyResults results;
|
||||
|
||||
|
||||
*hints_p = NULL;
|
||||
|
||||
if (!get_property (display, xwindow, xatom, AnyPropertyType,
|
||||
@ -363,13 +363,13 @@ latin1_string_from_results (GetPropertyResults *results,
|
||||
char **str_p)
|
||||
{
|
||||
*str_p = NULL;
|
||||
|
||||
|
||||
if (!validate_or_free_results (results, 8, XA_STRING, FALSE))
|
||||
return FALSE;
|
||||
|
||||
*str_p = (char*) results->prop;
|
||||
results->prop = NULL;
|
||||
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
@ -386,7 +386,7 @@ meta_prop_get_latin1_string (MetaDisplay *display,
|
||||
if (!get_property (display, xwindow, xatom, XA_STRING,
|
||||
&results))
|
||||
return FALSE;
|
||||
|
||||
|
||||
return latin1_string_from_results (&results, str_p);
|
||||
}
|
||||
|
||||
@ -395,7 +395,7 @@ utf8_string_from_results (GetPropertyResults *results,
|
||||
char **str_p)
|
||||
{
|
||||
*str_p = NULL;
|
||||
|
||||
|
||||
if (!validate_or_free_results (results, 8,
|
||||
results->display->atom_UTF8_STRING, FALSE))
|
||||
return FALSE;
|
||||
@ -411,13 +411,13 @@ utf8_string_from_results (GetPropertyResults *results,
|
||||
meta_XFree (name);
|
||||
XFree (results->prop);
|
||||
results->prop = NULL;
|
||||
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
|
||||
*str_p = (char*) results->prop;
|
||||
results->prop = NULL;
|
||||
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
@ -449,14 +449,14 @@ utf8_list_from_results (GetPropertyResults *results,
|
||||
int n_strings;
|
||||
char **retval;
|
||||
const char *p;
|
||||
|
||||
|
||||
*str_p = NULL;
|
||||
*n_str_p = 0;
|
||||
|
||||
if (!validate_or_free_results (results, 8,
|
||||
results->display->atom_UTF8_STRING, FALSE))
|
||||
return FALSE;
|
||||
|
||||
|
||||
/* I'm not sure this is right, but I'm guessing the
|
||||
* property is nul-separated
|
||||
*/
|
||||
@ -471,11 +471,11 @@ utf8_list_from_results (GetPropertyResults *results,
|
||||
|
||||
if (results->prop[results->n_items - 1] != '\0')
|
||||
++n_strings;
|
||||
|
||||
|
||||
/* we're guaranteed that results->prop has a nul on the end
|
||||
* by XGetWindowProperty
|
||||
*/
|
||||
|
||||
|
||||
retval = g_new0 (char*, n_strings + 1);
|
||||
|
||||
p = (char *)results->prop;
|
||||
@ -494,17 +494,17 @@ utf8_list_from_results (GetPropertyResults *results,
|
||||
meta_XFree (name);
|
||||
meta_XFree (results->prop);
|
||||
results->prop = NULL;
|
||||
|
||||
|
||||
g_strfreev (retval);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
retval[i] = g_strdup (p);
|
||||
|
||||
|
||||
p = p + strlen (p) + 1;
|
||||
++i;
|
||||
}
|
||||
|
||||
|
||||
*str_p = retval;
|
||||
*n_str_p = i;
|
||||
|
||||
@ -544,13 +544,13 @@ latin1_list_from_results (GetPropertyResults *results,
|
||||
int n_strings;
|
||||
char **retval;
|
||||
const char *p;
|
||||
|
||||
|
||||
*str_p = NULL;
|
||||
*n_str_p = 0;
|
||||
|
||||
if (!validate_or_free_results (results, 8, XA_STRING, FALSE))
|
||||
return FALSE;
|
||||
|
||||
|
||||
/* I'm not sure this is right, but I'm guessing the
|
||||
* property is nul-separated
|
||||
*/
|
||||
@ -565,11 +565,11 @@ latin1_list_from_results (GetPropertyResults *results,
|
||||
|
||||
if (results->prop[results->n_items - 1] != '\0')
|
||||
++n_strings;
|
||||
|
||||
|
||||
/* we're guaranteed that results->prop has a nul on the end
|
||||
* by XGetWindowProperty
|
||||
*/
|
||||
|
||||
|
||||
retval = g_new0 (char*, n_strings + 1);
|
||||
|
||||
p = (char *)results->prop;
|
||||
@ -577,11 +577,11 @@ latin1_list_from_results (GetPropertyResults *results,
|
||||
while (i < n_strings)
|
||||
{
|
||||
retval[i] = g_strdup (p);
|
||||
|
||||
|
||||
p = p + strlen (p) + 1;
|
||||
++i;
|
||||
}
|
||||
|
||||
|
||||
*str_p = retval;
|
||||
*n_str_p = i;
|
||||
|
||||
@ -616,9 +616,9 @@ meta_prop_set_utf8_string_hint (MetaDisplay *display,
|
||||
const char *val)
|
||||
{
|
||||
meta_error_trap_push (display);
|
||||
XChangeProperty (display->xdisplay,
|
||||
XChangeProperty (display->xdisplay,
|
||||
xwindow, atom,
|
||||
display->atom_UTF8_STRING,
|
||||
display->atom_UTF8_STRING,
|
||||
8, PropModeReplace, (guchar*) val, strlen (val));
|
||||
meta_error_trap_pop (display);
|
||||
}
|
||||
@ -628,12 +628,12 @@ window_from_results (GetPropertyResults *results,
|
||||
Window *window_p)
|
||||
{
|
||||
if (!validate_or_free_results (results, 32, XA_WINDOW, TRUE))
|
||||
return FALSE;
|
||||
return FALSE;
|
||||
|
||||
*window_p = *(Window*) results->prop;
|
||||
XFree (results->prop);
|
||||
results->prop = NULL;
|
||||
|
||||
results->prop = NULL;
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
@ -644,12 +644,12 @@ counter_from_results (GetPropertyResults *results,
|
||||
if (!validate_or_free_results (results, 32,
|
||||
XA_CARDINAL,
|
||||
TRUE))
|
||||
return FALSE;
|
||||
return FALSE;
|
||||
|
||||
*counter_p = *(XSyncCounter*) results->prop;
|
||||
XFree (results->prop);
|
||||
results->prop = NULL;
|
||||
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
@ -679,7 +679,7 @@ meta_prop_get_window (MetaDisplay *display,
|
||||
GetPropertyResults results;
|
||||
|
||||
*window_p = None;
|
||||
|
||||
|
||||
if (!get_property (display, xwindow, xatom, XA_WINDOW,
|
||||
&results))
|
||||
return FALSE;
|
||||
@ -703,7 +703,7 @@ cardinal_with_atom_type_from_results (GetPropertyResults *results,
|
||||
gulong *cardinal_p)
|
||||
{
|
||||
if (!validate_or_free_results (results, 32, prop_type, TRUE))
|
||||
return FALSE;
|
||||
return FALSE;
|
||||
|
||||
*cardinal_p = *(gulong*) results->prop;
|
||||
#if GLIB_SIZEOF_LONG == 8
|
||||
@ -711,8 +711,8 @@ cardinal_with_atom_type_from_results (GetPropertyResults *results,
|
||||
*cardinal_p &= 0xffffffff;
|
||||
#endif
|
||||
XFree (results->prop);
|
||||
results->prop = NULL;
|
||||
|
||||
results->prop = NULL;
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
@ -769,13 +769,13 @@ text_property_from_results (GetPropertyResults *results,
|
||||
results->prop = NULL;
|
||||
tp.encoding = results->type;
|
||||
tp.format = results->format;
|
||||
tp.nitems = results->n_items;
|
||||
|
||||
tp.nitems = results->n_items;
|
||||
|
||||
*utf8_str_p = text_property_to_utf8 (results->display->xdisplay, &tp);
|
||||
|
||||
|
||||
if (tp.value != NULL)
|
||||
XFree (tp.value);
|
||||
|
||||
|
||||
return *utf8_str_p != NULL;
|
||||
}
|
||||
|
||||
@ -786,7 +786,7 @@ meta_prop_get_text_property (MetaDisplay *display,
|
||||
char **utf8_str_p)
|
||||
{
|
||||
GetPropertyResults results;
|
||||
|
||||
|
||||
if (!get_property (display, xwindow, xatom, AnyPropertyType,
|
||||
&results))
|
||||
return FALSE;
|
||||
@ -825,13 +825,13 @@ wm_hints_from_results (GetPropertyResults *results,
|
||||
{
|
||||
XWMHints *hints;
|
||||
xPropWMHints *raw;
|
||||
|
||||
*hints_p = NULL;
|
||||
|
||||
if (!validate_or_free_results (results, 32, XA_WM_HINTS, TRUE))
|
||||
return FALSE;
|
||||
|
||||
/* pre-R3 bogusly truncated window_group, don't fail on them */
|
||||
*hints_p = NULL;
|
||||
|
||||
if (!validate_or_free_results (results, 32, XA_WM_HINTS, TRUE))
|
||||
return FALSE;
|
||||
|
||||
/* pre-R3 bogusly truncated window_group, don't fail on them */
|
||||
if (results->n_items < (NumPropWMHintsElements - 1))
|
||||
{
|
||||
meta_verbose ("WM_HINTS property too short: %d should be %d\n",
|
||||
@ -843,11 +843,11 @@ wm_hints_from_results (GetPropertyResults *results,
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
|
||||
hints = ag_Xmalloc0 (sizeof (XWMHints));
|
||||
|
||||
raw = (xPropWMHints*) results->prop;
|
||||
|
||||
|
||||
hints->flags = raw->flags;
|
||||
hints->input = (raw->input ? True : False);
|
||||
hints->initial_state = cvtINT32toInt (raw->initialState);
|
||||
@ -881,7 +881,7 @@ meta_prop_get_wm_hints (MetaDisplay *display,
|
||||
GetPropertyResults results;
|
||||
|
||||
*hints_p = NULL;
|
||||
|
||||
|
||||
if (!get_property (display, xwindow, xatom, XA_WM_HINTS,
|
||||
&results))
|
||||
return FALSE;
|
||||
@ -894,13 +894,13 @@ class_hint_from_results (GetPropertyResults *results,
|
||||
XClassHint *class_hint)
|
||||
{
|
||||
int len_name, len_class;
|
||||
|
||||
|
||||
class_hint->res_class = NULL;
|
||||
class_hint->res_name = NULL;
|
||||
|
||||
|
||||
if (!validate_or_free_results (results, 8, XA_STRING, FALSE))
|
||||
return FALSE;
|
||||
|
||||
|
||||
len_name = strlen ((char *) results->prop);
|
||||
if (! (class_hint->res_name = ag_Xmalloc (len_name+1)))
|
||||
{
|
||||
@ -908,14 +908,14 @@ class_hint_from_results (GetPropertyResults *results,
|
||||
results->prop = NULL;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
|
||||
strcpy (class_hint->res_name, (char *)results->prop);
|
||||
|
||||
if (len_name == (int) results->n_items)
|
||||
len_name--;
|
||||
|
||||
|
||||
len_class = strlen ((char *)results->prop + len_name + 1);
|
||||
|
||||
|
||||
if (! (class_hint->res_class = ag_Xmalloc(len_class+1)))
|
||||
{
|
||||
XFree(class_hint->res_name);
|
||||
@ -924,12 +924,12 @@ class_hint_from_results (GetPropertyResults *results,
|
||||
results->prop = NULL;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
|
||||
strcpy (class_hint->res_class, (char *)results->prop + len_name + 1);
|
||||
|
||||
XFree (results->prop);
|
||||
results->prop = NULL;
|
||||
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
@ -940,10 +940,10 @@ meta_prop_get_class_hint (MetaDisplay *display,
|
||||
XClassHint *class_hint)
|
||||
{
|
||||
GetPropertyResults results;
|
||||
|
||||
|
||||
class_hint->res_class = NULL;
|
||||
class_hint->res_name = NULL;
|
||||
|
||||
|
||||
if (!get_property (display, xwindow, xatom, XA_STRING,
|
||||
&results))
|
||||
return FALSE;
|
||||
@ -958,10 +958,10 @@ size_hints_from_results (GetPropertyResults *results,
|
||||
{
|
||||
xPropSizeHints *raw;
|
||||
XSizeHints *hints;
|
||||
|
||||
|
||||
*hints_p = NULL;
|
||||
*flags_p = 0;
|
||||
|
||||
|
||||
if (!validate_or_free_results (results, 32, XA_WM_SIZE_HINTS, FALSE))
|
||||
return FALSE;
|
||||
|
||||
@ -971,7 +971,7 @@ size_hints_from_results (GetPropertyResults *results,
|
||||
raw = (xPropSizeHints*) results->prop;
|
||||
|
||||
hints = ag_Xmalloc (sizeof (XSizeHints));
|
||||
|
||||
|
||||
/* XSizeHints misdeclares these as int instead of long */
|
||||
hints->flags = raw->flags;
|
||||
hints->x = cvtINT32toInt (raw->x);
|
||||
@ -999,12 +999,12 @@ size_hints_from_results (GetPropertyResults *results,
|
||||
}
|
||||
|
||||
hints->flags &= (*flags_p); /* get rid of unwanted bits */
|
||||
|
||||
|
||||
XFree (results->prop);
|
||||
results->prop = NULL;
|
||||
|
||||
*hints_p = hints;
|
||||
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
@ -1019,7 +1019,7 @@ meta_prop_get_size_hints (MetaDisplay *display,
|
||||
|
||||
*hints_p = NULL;
|
||||
*flags_p = 0;
|
||||
|
||||
|
||||
if (!get_property (display, xwindow, xatom, XA_WM_SIZE_HINTS,
|
||||
&results))
|
||||
return FALSE;
|
||||
@ -1044,7 +1044,7 @@ latin1_to_utf8 (const char *text)
|
||||
{
|
||||
GString *str;
|
||||
const char *p;
|
||||
|
||||
|
||||
str = g_string_new ("");
|
||||
|
||||
p = text;
|
||||
@ -1068,10 +1068,10 @@ meta_prop_get_values (MetaDisplay *display,
|
||||
|
||||
meta_verbose ("Requesting %d properties of 0x%lx at once\n",
|
||||
n_values, xwindow);
|
||||
|
||||
|
||||
if (n_values == 0)
|
||||
return;
|
||||
|
||||
|
||||
tasks = g_new0 (AgGetPropertyTask*, n_values);
|
||||
|
||||
/* Start up tasks. The "values" array can have values
|
||||
@ -1134,22 +1134,22 @@ meta_prop_get_values (MetaDisplay *display,
|
||||
if (values[i].atom != None)
|
||||
tasks[i] = get_task (display, xwindow,
|
||||
values[i].atom, values[i].required_type);
|
||||
|
||||
|
||||
++i;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/* Get replies for all our tasks */
|
||||
meta_topic (META_DEBUG_SYNC, "Syncing to get %d GetProperty replies in %s\n",
|
||||
n_values, G_STRFUNC);
|
||||
XSync (display->xdisplay, False);
|
||||
|
||||
|
||||
/* Collect results, should arrive in order requested */
|
||||
i = 0;
|
||||
while (i < n_values)
|
||||
{
|
||||
AgGetPropertyTask *task;
|
||||
GetPropertyResults results;
|
||||
|
||||
|
||||
if (tasks[i] == NULL)
|
||||
{
|
||||
/* Probably values[i].type was None, or ag_task_create()
|
||||
@ -1158,7 +1158,7 @@ meta_prop_get_values (MetaDisplay *display,
|
||||
values[i].type = META_PROP_VALUE_INVALID;
|
||||
goto next;
|
||||
}
|
||||
|
||||
|
||||
task = ag_get_next_completed_task (display->xdisplay);
|
||||
g_assert (task != NULL);
|
||||
g_assert (ag_task_have_reply (task));
|
||||
@ -1171,7 +1171,7 @@ meta_prop_get_values (MetaDisplay *display,
|
||||
results.type = None;
|
||||
results.bytes_after = 0;
|
||||
results.format = 0;
|
||||
|
||||
|
||||
if (ag_task_get_reply_and_free (task,
|
||||
&results.type, &results.format,
|
||||
&results.n_items,
|
||||
@ -1301,7 +1301,7 @@ free_value (MetaPropValue *value)
|
||||
{
|
||||
switch (value->type)
|
||||
{
|
||||
case META_PROP_VALUE_INVALID:
|
||||
case META_PROP_VALUE_INVALID:
|
||||
break;
|
||||
case META_PROP_VALUE_UTF8:
|
||||
case META_PROP_VALUE_STRING:
|
||||
@ -1310,10 +1310,10 @@ free_value (MetaPropValue *value)
|
||||
break;
|
||||
case META_PROP_VALUE_MOTIF_HINTS:
|
||||
meta_XFree (value->v.motif_hints);
|
||||
break;
|
||||
break;
|
||||
case META_PROP_VALUE_CARDINAL:
|
||||
break;
|
||||
case META_PROP_VALUE_WINDOW:
|
||||
case META_PROP_VALUE_WINDOW:
|
||||
break;
|
||||
case META_PROP_VALUE_ATOM_LIST:
|
||||
meta_XFree (value->v.atom_list.atoms);
|
||||
|
@ -2,9 +2,9 @@
|
||||
|
||||
/* Mutter X property convenience routines */
|
||||
|
||||
/*
|
||||
/*
|
||||
* Copyright (C) 2001 Havoc Pennington
|
||||
*
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU General Public License as
|
||||
* published by the Free Software Foundation; either version 2 of the
|
||||
@ -14,7 +14,7 @@
|
||||
* WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* General Public License for more details.
|
||||
*
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
@ -168,7 +168,7 @@ typedef struct
|
||||
MetaPropValueType type;
|
||||
Atom atom;
|
||||
Atom required_type; /* autofilled if None */
|
||||
|
||||
|
||||
union
|
||||
{
|
||||
char *str;
|
||||
@ -183,13 +183,13 @@ typedef struct
|
||||
gulong *counters;
|
||||
int n_counters;
|
||||
} xcounter_list;
|
||||
|
||||
|
||||
struct
|
||||
{
|
||||
XSizeHints *hints;
|
||||
unsigned long flags;
|
||||
} size_hints;
|
||||
|
||||
|
||||
struct
|
||||
{
|
||||
gulong *cardinals;
|
||||
@ -207,7 +207,7 @@ typedef struct
|
||||
Atom *atoms;
|
||||
int n_atoms;
|
||||
} atom_list;
|
||||
|
||||
|
||||
} v;
|
||||
|
||||
} MetaPropValue;
|
||||
|
Loading…
Reference in New Issue
Block a user