2006-10-01 22:30:10 +00:00
|
|
|
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
|
|
|
|
|
Comprehensively rename to Mutter
Code:
All references in the code not related to themes, keybindings, or
GConf were changed from 'metacity' to 'mutter'. This includes, among other
things, strings, comments, the atoms used in the message protocol, and
the envvars used for debugging. The GConf schema file was reduced to
the 3 settings new to mutter.
The overall version was brought up to 2.27 to match current gnome.
Structure:
All files named '*metacity*' were renamed '*mutter*' with appropriate
changes in the automake system. Files removed are
doc/creating_themes, src/themes, doc/metacity-theme.dtd,
metacity.doap. These files will eventually end up in an external
gnome-wm-data module.
Installation location:
On the filesystem the mutter-plugindir was change from
$(libdir)/metacity/plugins/clutter to just $(libdir)/mutter/plugins.
The mutter-plugins.pc.in reflects these changes.
Note:
mutter.desktop.in and mutter-wm.desktop both continue to have
X-GNOME-WMSettingsModule=metacity set. This allows
gnome-control-center to continue using libmetacity.so for
configuration. This is fine since most the general keybindings and wm
settings are being read from /apps/metacity/* in gconf.
2009-06-10 10:29:20 +00:00
|
|
|
/* Mutter X property convenience routines */
|
2002-01-04 00:58:39 +00:00
|
|
|
|
|
|
|
/*
|
|
|
|
* 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
|
|
|
|
* License, or (at your option) any later version.
|
|
|
|
*
|
|
|
|
* This program is distributed in the hope that it will be useful, but
|
|
|
|
* 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
|
|
|
|
* 02111-1307, USA.
|
|
|
|
*/
|
|
|
|
|
|
|
|
#ifndef META_XPROPS_H
|
|
|
|
#define META_XPROPS_H
|
|
|
|
|
2002-12-10 03:23:04 +00:00
|
|
|
#include <config.h>
|
2008-05-19 00:00:09 +00:00
|
|
|
|
2011-03-06 00:29:12 +00:00
|
|
|
#include <meta/display.h>
|
2002-01-04 00:58:39 +00:00
|
|
|
#include <X11/Xutil.h>
|
|
|
|
|
2008-05-19 00:00:09 +00:00
|
|
|
#ifdef HAVE_XSYNC
|
|
|
|
#include <X11/extensions/sync.h>
|
|
|
|
#endif
|
|
|
|
|
2002-01-04 00:58:39 +00:00
|
|
|
/* Copied from Lesstif by way of GTK. Rudimentary docs can be
|
|
|
|
* found in some Motif reference guides online.
|
|
|
|
*/
|
|
|
|
typedef struct {
|
|
|
|
unsigned long flags;
|
|
|
|
unsigned long functions;
|
|
|
|
unsigned long decorations;
|
|
|
|
long input_mode;
|
|
|
|
unsigned long status;
|
|
|
|
} MotifWmHints, MwmHints;
|
|
|
|
|
|
|
|
#define MWM_HINTS_FUNCTIONS (1L << 0)
|
|
|
|
#define MWM_HINTS_DECORATIONS (1L << 1)
|
|
|
|
#define MWM_HINTS_INPUT_MODE (1L << 2)
|
|
|
|
#define MWM_HINTS_STATUS (1L << 3)
|
|
|
|
|
|
|
|
#define MWM_FUNC_ALL (1L << 0)
|
|
|
|
#define MWM_FUNC_RESIZE (1L << 1)
|
|
|
|
#define MWM_FUNC_MOVE (1L << 2)
|
|
|
|
#define MWM_FUNC_MINIMIZE (1L << 3)
|
|
|
|
#define MWM_FUNC_MAXIMIZE (1L << 4)
|
|
|
|
#define MWM_FUNC_CLOSE (1L << 5)
|
|
|
|
|
|
|
|
#define MWM_DECOR_ALL (1L << 0)
|
|
|
|
#define MWM_DECOR_BORDER (1L << 1)
|
|
|
|
#define MWM_DECOR_RESIZEH (1L << 2)
|
|
|
|
#define MWM_DECOR_TITLE (1L << 3)
|
|
|
|
#define MWM_DECOR_MENU (1L << 4)
|
|
|
|
#define MWM_DECOR_MINIMIZE (1L << 5)
|
|
|
|
#define MWM_DECOR_MAXIMIZE (1L << 6)
|
|
|
|
|
|
|
|
#define MWM_INPUT_MODELESS 0
|
|
|
|
#define MWM_INPUT_PRIMARY_APPLICATION_MODAL 1
|
|
|
|
#define MWM_INPUT_SYSTEM_MODAL 2
|
|
|
|
#define MWM_INPUT_FULL_APPLICATION_MODAL 3
|
|
|
|
#define MWM_INPUT_APPLICATION_MODAL MWM_INPUT_PRIMARY_APPLICATION_MODAL
|
|
|
|
|
|
|
|
#define MWM_TEAROFF_WINDOW (1L<<0)
|
|
|
|
|
|
|
|
/* These all return the memory from Xlib, so require an XFree()
|
|
|
|
* when they return TRUE. They return TRUE on success.
|
|
|
|
*/
|
|
|
|
gboolean meta_prop_get_atom_list (MetaDisplay *display,
|
|
|
|
Window xwindow,
|
|
|
|
Atom xatom,
|
|
|
|
Atom **atoms_p,
|
|
|
|
int *n_atoms_p);
|
|
|
|
gboolean meta_prop_get_motif_hints (MetaDisplay *display,
|
|
|
|
Window xwindow,
|
|
|
|
Atom xatom,
|
|
|
|
MotifWmHints **hints_p);
|
|
|
|
gboolean meta_prop_get_cardinal_list (MetaDisplay *display,
|
|
|
|
Window xwindow,
|
|
|
|
Atom xatom,
|
|
|
|
gulong **cardinals_p,
|
|
|
|
int *n_cardinals_p);
|
2002-01-04 03:25:53 +00:00
|
|
|
gboolean meta_prop_get_latin1_string (MetaDisplay *display,
|
|
|
|
Window xwindow,
|
|
|
|
Atom xatom,
|
|
|
|
char **str_p);
|
|
|
|
gboolean meta_prop_get_utf8_string (MetaDisplay *display,
|
|
|
|
Window xwindow,
|
|
|
|
Atom xatom,
|
|
|
|
char **str_p);
|
2002-06-22 04:52:35 +00:00
|
|
|
gboolean meta_prop_get_utf8_list (MetaDisplay *display,
|
|
|
|
Window xwindow,
|
|
|
|
Atom xatom,
|
|
|
|
char ***str_p,
|
|
|
|
int *n_str_p);
|
2005-10-03 18:13:45 +00:00
|
|
|
void meta_prop_set_utf8_string_hint
|
|
|
|
(MetaDisplay *display,
|
|
|
|
Window xwindow,
|
|
|
|
Atom atom,
|
|
|
|
const char *val);
|
2002-01-04 03:25:53 +00:00
|
|
|
gboolean meta_prop_get_window (MetaDisplay *display,
|
|
|
|
Window xwindow,
|
|
|
|
Atom xatom,
|
|
|
|
Window *window_p);
|
|
|
|
gboolean meta_prop_get_cardinal (MetaDisplay *display,
|
|
|
|
Window xwindow,
|
|
|
|
Atom xatom,
|
|
|
|
gulong *cardinal_p);
|
|
|
|
gboolean meta_prop_get_cardinal_with_atom_type (MetaDisplay *display,
|
|
|
|
Window xwindow,
|
|
|
|
Atom xatom,
|
|
|
|
Atom prop_type,
|
|
|
|
gulong *cardinal_p);
|
2002-10-26 16:40:50 +00:00
|
|
|
gboolean meta_prop_get_text_property (MetaDisplay *display,
|
|
|
|
Window xwindow,
|
|
|
|
Atom xatom,
|
|
|
|
char **utf8_str_p);
|
|
|
|
|
|
|
|
gboolean meta_prop_get_wm_hints (MetaDisplay *display,
|
|
|
|
Window xwindow,
|
|
|
|
Atom xatom,
|
|
|
|
XWMHints **hints_p);
|
|
|
|
|
|
|
|
gboolean meta_prop_get_class_hint (MetaDisplay *display,
|
|
|
|
Window xwindow,
|
|
|
|
Atom xatom,
|
|
|
|
XClassHint *class_hint);
|
2002-01-04 00:58:39 +00:00
|
|
|
|
2002-10-28 20:22:22 +00:00
|
|
|
gboolean meta_prop_get_size_hints (MetaDisplay *display,
|
|
|
|
Window xwindow,
|
|
|
|
Atom xatom,
|
|
|
|
XSizeHints **hints_p,
|
|
|
|
gulong *flags_p);
|
|
|
|
|
2002-10-26 07:37:11 +00:00
|
|
|
typedef enum
|
|
|
|
{
|
|
|
|
META_PROP_VALUE_INVALID,
|
|
|
|
META_PROP_VALUE_UTF8,
|
|
|
|
META_PROP_VALUE_STRING,
|
2002-12-16 22:01:15 +00:00
|
|
|
META_PROP_VALUE_STRING_AS_UTF8,
|
2002-10-26 07:37:11 +00:00
|
|
|
META_PROP_VALUE_MOTIF_HINTS,
|
|
|
|
META_PROP_VALUE_CARDINAL,
|
|
|
|
META_PROP_VALUE_WINDOW,
|
|
|
|
META_PROP_VALUE_CARDINAL_LIST,
|
|
|
|
META_PROP_VALUE_UTF8_LIST,
|
2002-10-26 16:40:50 +00:00
|
|
|
META_PROP_VALUE_ATOM_LIST,
|
|
|
|
META_PROP_VALUE_TEXT_PROPERTY, /* comes back as UTF-8 string */
|
|
|
|
META_PROP_VALUE_WM_HINTS,
|
2002-10-28 20:22:22 +00:00
|
|
|
META_PROP_VALUE_CLASS_HINT,
|
2002-12-10 03:23:04 +00:00
|
|
|
META_PROP_VALUE_SIZE_HINTS,
|
Fix bug 143333, support for update counter spec, and 109362, schedule
Sat Jun 19 02:21:08 2004 Soeren Sandmann <sandmann@daimi.au.dk>
Fix bug 143333, support for update counter spec, and 109362,
schedule compensation events when events are ignored.
* src/display.c (meta_display_open): Add _NET_WM_SYNC_REQUEST and
_NET_WM_SYNC_REQUEST_COUNTER atoms. Remove the old
METACITY_SYNC_COUNTER stuff.
(meta_display_begin_op): Setup the sync counter
* src/xprops.c, src/xprops.h, src/window-props.c, src/display.h:
Add new atoms.
* src/window.c (send_sync_request): new function.
(meta_window_move_resize_internal): send a sync request before
resizing.
(check_move_resize_frequence): Rework logic to also check the SYNC
case. If an event is ignored return the remaining time.
(update_resize_timeout): Timeout that gets called when a
compensation event is scheduled.
(uddate_resize): schedule compensation events when an event is
ignored.
(meta_window_handle_mouse_grap_op_event): When an alarm is
received and sync was turned off, turn it back on.
* src/window.h (struct MetaWindow) Add some variables
2004-06-19 00:45:24 +00:00
|
|
|
META_PROP_VALUE_SYNC_COUNTER /* comes back as CARDINAL */
|
2002-10-26 07:37:11 +00:00
|
|
|
} MetaPropValueType;
|
|
|
|
|
|
|
|
/* used to request/return/store property values */
|
|
|
|
typedef struct
|
|
|
|
{
|
|
|
|
MetaPropValueType type;
|
|
|
|
Atom atom;
|
|
|
|
Atom required_type; /* autofilled if None */
|
|
|
|
|
|
|
|
union
|
|
|
|
{
|
|
|
|
char *str;
|
|
|
|
MotifWmHints *motif_hints;
|
|
|
|
Window xwindow;
|
|
|
|
gulong cardinal;
|
2002-10-26 16:40:50 +00:00
|
|
|
XWMHints *wm_hints;
|
|
|
|
XClassHint class_hint;
|
2002-12-10 03:23:04 +00:00
|
|
|
#ifdef HAVE_XSYNC
|
|
|
|
XSyncCounter xcounter;
|
|
|
|
#endif
|
2002-10-26 07:37:11 +00:00
|
|
|
|
2002-10-28 20:22:22 +00:00
|
|
|
struct
|
|
|
|
{
|
|
|
|
XSizeHints *hints;
|
|
|
|
unsigned long flags;
|
|
|
|
} size_hints;
|
|
|
|
|
2002-10-26 07:37:11 +00:00
|
|
|
struct
|
|
|
|
{
|
|
|
|
gulong *cardinals;
|
|
|
|
int n_cardinals;
|
|
|
|
} cardinal_list;
|
|
|
|
|
|
|
|
struct
|
|
|
|
{
|
|
|
|
char **strings;
|
|
|
|
int n_strings;
|
|
|
|
} string_list;
|
|
|
|
|
|
|
|
struct
|
|
|
|
{
|
|
|
|
Atom *atoms;
|
|
|
|
int n_atoms;
|
|
|
|
} atom_list;
|
|
|
|
|
|
|
|
} v;
|
|
|
|
|
|
|
|
} MetaPropValue;
|
|
|
|
|
|
|
|
/* Each value has type and atom initialized. If there's an error,
|
|
|
|
* or property is unset, type comes back as INVALID;
|
|
|
|
* else type comes back as it originated, and the data
|
|
|
|
* is filled in.
|
|
|
|
*/
|
|
|
|
void meta_prop_get_values (MetaDisplay *display,
|
|
|
|
Window xwindow,
|
|
|
|
MetaPropValue *values,
|
|
|
|
int n_values);
|
|
|
|
|
2002-11-03 23:42:21 +00:00
|
|
|
void meta_prop_free_values (MetaPropValue *values,
|
|
|
|
int n_values);
|
|
|
|
|
2002-01-04 00:58:39 +00:00
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|