2006-10-01 18:30:10 -04:00
|
|
|
/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
|
2008-06-30 09:42:37 -04:00
|
|
|
|
2002-12-16 20:08:29 -05:00
|
|
|
/*
|
|
|
|
* 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
|
|
|
|
* 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
|
2014-01-11 20:42:06 -05:00
|
|
|
* along with this program; if not, see <http://www.gnu.org/licenses/>.
|
2002-12-16 20:08:29 -05:00
|
|
|
*/
|
|
|
|
|
2003-04-29 18:07:47 -04:00
|
|
|
#include <X11/Xlib.h>
|
2002-12-16 20:08:29 -05:00
|
|
|
#ifdef HAVE_XKB
|
|
|
|
#include <X11/XKBlib.h>
|
|
|
|
#endif
|
2008-05-18 20:00:09 -04:00
|
|
|
#include "display-private.h"
|
2011-03-05 19:29:12 -05:00
|
|
|
#include "frame.h"
|
2002-12-16 20:08:29 -05:00
|
|
|
|
|
|
|
#ifdef HAVE_XKB
|
2008-06-30 09:42:37 -04:00
|
|
|
/**
|
2013-02-15 13:42:08 -05:00
|
|
|
* meta_bell_notify:
|
|
|
|
* @display: The display the bell event came in on
|
|
|
|
* @xkb_ev: The bell event we just received
|
|
|
|
*
|
2008-06-30 09:42:37 -04:00
|
|
|
* 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
|
|
|
|
* notified about visual bells, and X deals with audible ones.
|
|
|
|
*
|
|
|
|
* If the configure script found we had no XKB, this does not exist.
|
|
|
|
*/
|
2002-12-16 20:08:29 -05:00
|
|
|
void meta_bell_notify (MetaDisplay *display, XkbAnyEvent *xkb_ev);
|
|
|
|
#endif
|
2008-06-30 09:42:37 -04:00
|
|
|
|
|
|
|
/**
|
2013-02-15 13:42:08 -05:00
|
|
|
* meta_bell_set_audible:
|
|
|
|
* @display: The display we're configuring
|
|
|
|
* @audible: True for an audible bell, false for a visual bell
|
|
|
|
*
|
2008-06-30 09:42:37 -04:00
|
|
|
* Turns the bell to audible or visual. This tells X what to do, but
|
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 06:29:20 -04:00
|
|
|
* not Mutter; you will need to set the "visual bell" pref for that.
|
2008-06-30 09:42:37 -04:00
|
|
|
*
|
|
|
|
* If the configure script found we had no XKB, this is a no-op.
|
|
|
|
*/
|
2002-12-16 20:08:29 -05:00
|
|
|
void meta_bell_set_audible (MetaDisplay *display, gboolean audible);
|
2008-06-30 09:42:37 -04:00
|
|
|
|
|
|
|
/**
|
2013-02-15 13:42:08 -05:00
|
|
|
* meta_bell_init:
|
|
|
|
* @display: The display which is opening
|
|
|
|
*
|
2008-06-30 09:42:37 -04:00
|
|
|
* Initialises the bell subsystem. This involves intialising
|
|
|
|
* XKB (which, despite being a keyboard extension, is the
|
|
|
|
* place to look for bell notifications), then asking it
|
|
|
|
* to send us bell notifications, and then also switching
|
|
|
|
* off the audible bell if we're using a visual one ourselves.
|
|
|
|
*
|
|
|
|
* Unlike most X extensions we use, we only initialise XKB here
|
|
|
|
* (rather than in main()). It's possible that XKB is not
|
|
|
|
* installed at all, but if that was known at build time
|
|
|
|
* we will have HAVE_XKB undefined, which will cause this
|
|
|
|
* function to be a no-op.
|
|
|
|
*
|
|
|
|
* \bug There is a line of code that's never run that tells
|
|
|
|
* XKB to reset the bell status after we quit. Bill H said
|
|
|
|
* (<http://bugzilla.gnome.org/show_bug.cgi?id=99886#c12>)
|
|
|
|
* that XFree86's implementation is broken so we shouldn't
|
|
|
|
* call it, but that was in 2002. Is it working now?
|
|
|
|
*/
|
2002-12-16 20:08:29 -05:00
|
|
|
gboolean meta_bell_init (MetaDisplay *display);
|
2008-06-30 09:42:37 -04:00
|
|
|
|
|
|
|
/**
|
2013-02-15 13:42:08 -05:00
|
|
|
* meta_bell_shutdown:
|
|
|
|
* @display: The display which is closing
|
2008-06-30 09:42:37 -04:00
|
|
|
*
|
2013-02-15 13:42:08 -05:00
|
|
|
* Shuts down the bell subsystem.
|
2008-06-30 09:42:37 -04:00
|
|
|
*
|
|
|
|
* \bug This is never called! If we had XkbSetAutoResetControls
|
|
|
|
* enabled in meta_bell_init(), this wouldn't be a problem, but
|
|
|
|
* we don't.
|
|
|
|
*/
|
2002-12-16 20:08:29 -05:00
|
|
|
void meta_bell_shutdown (MetaDisplay *display);
|
2008-06-30 09:42:37 -04:00
|
|
|
|
|
|
|
/**
|
2013-02-15 13:42:08 -05:00
|
|
|
* meta_bell_notify_frame_destroy:
|
|
|
|
* @frame: The frame which is being destroyed
|
|
|
|
*
|
2008-06-30 09:42:37 -04:00
|
|
|
* Deals with a frame being destroyed. This is important because if we're
|
|
|
|
* using a visual bell, we might be flashing the edges of the frame, and
|
|
|
|
* so we'd have a timeout function waiting ready to un-flash them. If the
|
|
|
|
* frame's going away, we can tell the timeout not to bother.
|
|
|
|
*/
|
2002-12-16 20:08:29 -05:00
|
|
|
void meta_bell_notify_frame_destroy (MetaFrame *frame);
|