move SM init a bit later in the process, and init prefs
2001-12-09 Havoc Pennington <hp@pobox.com> * src/main.c (main): move SM init a bit later in the process, and init prefs * src/session.c: fix no SM case (though I hardly know why I'm bothering) * src/main.c (main): call bindtextdomain * src/util.h (_): actually call gettext * configure.in: put in AM_GLIB_GNU_GETTEXT and gconf stuff * src/prefs.c: Preferences - this marks the beginning of our doom. None of them are actually implemented yet, but we monitor some stuff from gconf.
This commit is contained in:
parent
b3778e4470
commit
6981a8198b
18
ChangeLog
18
ChangeLog
@ -1,3 +1,21 @@
|
|||||||
|
2001-12-09 Havoc Pennington <hp@pobox.com>
|
||||||
|
|
||||||
|
* src/main.c (main): move SM init a bit later in the process, and
|
||||||
|
init prefs
|
||||||
|
|
||||||
|
* src/session.c: fix no SM case (though I hardly know why I'm
|
||||||
|
bothering)
|
||||||
|
|
||||||
|
* src/main.c (main): call bindtextdomain
|
||||||
|
|
||||||
|
* src/util.h (_): actually call gettext
|
||||||
|
|
||||||
|
* configure.in: put in AM_GLIB_GNU_GETTEXT and gconf stuff
|
||||||
|
|
||||||
|
* src/prefs.c: Preferences - this marks the beginning of our doom.
|
||||||
|
None of them are actually implemented yet, but we monitor
|
||||||
|
some stuff from gconf.
|
||||||
|
|
||||||
2001-12-07 Havoc Pennington <hp@pobox.com>
|
2001-12-07 Havoc Pennington <hp@pobox.com>
|
||||||
|
|
||||||
* src/window.c (meta_window_unminimize): when unminimizing an app,
|
* src/window.c (meta_window_unminimize): when unminimizing an app,
|
||||||
|
14
configure.in
14
configure.in
@ -38,11 +38,11 @@ fi
|
|||||||
changequote([,])dnl
|
changequote([,])dnl
|
||||||
|
|
||||||
ALL_LINGUAS="es gl ru sv uk"
|
ALL_LINGUAS="es gl ru sv uk"
|
||||||
dnl AM_GNU_GETTEXT
|
AM_GLIB_GNU_GETTEXT
|
||||||
|
|
||||||
## here we get the flags we'll actually use
|
## here we get the flags we'll actually use
|
||||||
PKG_CHECK_MODULES(METACITY, gtk+-2.0 >= 1.3.10)
|
PKG_CHECK_MODULES(METACITY, gtk+-2.0 >= 1.3.11 gconf-2.0 >= 1.1.5)
|
||||||
PKG_CHECK_MODULES(METACITY_RESTART, gtk+-2.0 >= 1.3.10)
|
PKG_CHECK_MODULES(METACITY_RESTART, gtk+-2.0 >= 1.3.11)
|
||||||
|
|
||||||
CFLAGS="$METACITY_CFLAGS $CFLAGS"
|
CFLAGS="$METACITY_CFLAGS $CFLAGS"
|
||||||
|
|
||||||
@ -82,6 +82,14 @@ LDFLAGS="$METACITY_LIBS $LDFLAGS"
|
|||||||
AC_CHECK_FUNCS(gdk_pixbuf_new_from_stream)
|
AC_CHECK_FUNCS(gdk_pixbuf_new_from_stream)
|
||||||
LDFLAGS=$save_LDFLAGS
|
LDFLAGS=$save_LDFLAGS
|
||||||
|
|
||||||
|
AC_PATH_PROG(GCONFTOOL, gconftool-2, no)
|
||||||
|
|
||||||
|
if test x"$GCONFTOOL" = xno; then
|
||||||
|
AC_MSG_ERROR([gconftool-2 executable not found in your path - should be installed with GConf])
|
||||||
|
fi
|
||||||
|
|
||||||
|
AM_GCONF_SOURCE_2
|
||||||
|
|
||||||
AC_OUTPUT([
|
AC_OUTPUT([
|
||||||
Makefile
|
Makefile
|
||||||
src/Makefile
|
src/Makefile
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
|
|
||||||
SUBDIRS=wm-tester tools
|
SUBDIRS=wm-tester tools
|
||||||
|
|
||||||
INCLUDES=@METACITY_CFLAGS@ -DMETACITY_LIBEXECDIR=\"$(libexecdir)\" -DHOST_ALIAS=\"@HOST_ALIAS@\"
|
INCLUDES=@METACITY_CFLAGS@ -DMETACITY_LIBEXECDIR=\"$(libexecdir)\" -DHOST_ALIAS=\"@HOST_ALIAS@\" -DMETACITY_LOCALEDIR=\"$(datadir)/locale\"
|
||||||
|
|
||||||
metacity_SOURCES= \
|
metacity_SOURCES= \
|
||||||
common.h \
|
common.h \
|
||||||
@ -30,6 +30,8 @@ metacity_SOURCES= \
|
|||||||
menu.h \
|
menu.h \
|
||||||
place.c \
|
place.c \
|
||||||
place.h \
|
place.h \
|
||||||
|
prefs.c \
|
||||||
|
prefs.h \
|
||||||
screen.c \
|
screen.c \
|
||||||
screen.h \
|
screen.h \
|
||||||
session.c \
|
session.c \
|
||||||
@ -54,6 +56,12 @@ metacity_LDADD= @METACITY_LIBS@
|
|||||||
desktopfilesdir=$(datadir)/gnome/wm-properties
|
desktopfilesdir=$(datadir)/gnome/wm-properties
|
||||||
desktopfiles_DATA=metacity.desktop
|
desktopfiles_DATA=metacity.desktop
|
||||||
|
|
||||||
|
schemadir = @GCONF_SCHEMA_FILE_DIR@
|
||||||
|
schema_DATA = metacity.schemas
|
||||||
|
|
||||||
|
install-data-local:
|
||||||
|
GCONF_CONFIG_SOURCE=$(GCONF_SCHEMA_CONFIG_SOURCE) $(GCONFTOOL) --makefile-install-rule $(srcdir)/$(schema_DATA)
|
||||||
|
|
||||||
IMAGES=default_icon.png
|
IMAGES=default_icon.png
|
||||||
VARIABLES=default_icon_data $(srcdir)/default_icon.png
|
VARIABLES=default_icon_data $(srcdir)/default_icon.png
|
||||||
|
|
||||||
@ -63,4 +71,4 @@ CLEANFILES += inlinepixbufs.h
|
|||||||
inlinepixbufs.h: $(IMAGES)
|
inlinepixbufs.h: $(IMAGES)
|
||||||
$(GDK_PIXBUF_CSOURCE) --raw --build-list $(VARIABLES) >$(srcdir)/inlinepixbufs.h
|
$(GDK_PIXBUF_CSOURCE) --raw --build-list $(VARIABLES) >$(srcdir)/inlinepixbufs.h
|
||||||
|
|
||||||
EXTRA_DIST=$(desktopfiles_DATA) $(IMAGES)
|
EXTRA_DIST=$(desktopfiles_DATA) $(IMAGES) $(schema_DATA)
|
||||||
|
@ -123,6 +123,13 @@ typedef enum
|
|||||||
} MetaCursor;
|
} MetaCursor;
|
||||||
|
|
||||||
|
|
||||||
|
typedef enum
|
||||||
|
{
|
||||||
|
META_FOCUS_MODE_CLICK,
|
||||||
|
META_FOCUS_MODE_SLOPPY,
|
||||||
|
META_FOCUS_MODE_MOUSE
|
||||||
|
} MetaFocusMode;
|
||||||
|
|
||||||
/* should investigate changing these to whatever most apps use */
|
/* should investigate changing these to whatever most apps use */
|
||||||
#define META_ICON_WIDTH 32
|
#define META_ICON_WIDTH 32
|
||||||
#define META_ICON_HEIGHT 32
|
#define META_ICON_HEIGHT 32
|
||||||
|
@ -19,6 +19,7 @@
|
|||||||
* 02111-1307, USA.
|
* 02111-1307, USA.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include <config.h>
|
||||||
#include "display.h"
|
#include "display.h"
|
||||||
#include "util.h"
|
#include "util.h"
|
||||||
#include "main.h"
|
#include "main.h"
|
||||||
|
@ -20,6 +20,7 @@
|
|||||||
* 02111-1307, USA.
|
* 02111-1307, USA.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include <config.h>
|
||||||
#include "errors.h"
|
#include "errors.h"
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
@ -19,6 +19,7 @@
|
|||||||
* 02111-1307, USA.
|
* 02111-1307, USA.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include <config.h>
|
||||||
#include "frames.h"
|
#include "frames.h"
|
||||||
#include "util.h"
|
#include "util.h"
|
||||||
#include "core.h"
|
#include "core.h"
|
||||||
|
@ -19,6 +19,7 @@
|
|||||||
* 02111-1307, USA.
|
* 02111-1307, USA.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include <config.h>
|
||||||
#include "keybindings.h"
|
#include "keybindings.h"
|
||||||
#include "workspace.h"
|
#include "workspace.h"
|
||||||
#include "errors.h"
|
#include "errors.h"
|
||||||
|
17
src/main.c
17
src/main.c
@ -19,12 +19,14 @@
|
|||||||
* 02111-1307, USA.
|
* 02111-1307, USA.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include <config.h>
|
||||||
#include "main.h"
|
#include "main.h"
|
||||||
#include "util.h"
|
#include "util.h"
|
||||||
#include "display.h"
|
#include "display.h"
|
||||||
#include "errors.h"
|
#include "errors.h"
|
||||||
#include "ui.h"
|
#include "ui.h"
|
||||||
#include "session.h"
|
#include "session.h"
|
||||||
|
#include "prefs.h"
|
||||||
|
|
||||||
#include <glib-object.h>
|
#include <glib-object.h>
|
||||||
|
|
||||||
@ -74,7 +76,9 @@ main (int argc, char **argv)
|
|||||||
act.sa_flags = 0;
|
act.sa_flags = 0;
|
||||||
sigaction (SIGPIPE, &act, 0);
|
sigaction (SIGPIPE, &act, 0);
|
||||||
|
|
||||||
g_set_prgname (PACKAGE);
|
g_set_prgname (argv[0]);
|
||||||
|
|
||||||
|
bindtextdomain (GETTEXT_PACKAGE, METACITY_LOCALEDIR);
|
||||||
|
|
||||||
meta_set_verbose (TRUE);
|
meta_set_verbose (TRUE);
|
||||||
meta_set_debugging (TRUE);
|
meta_set_debugging (TRUE);
|
||||||
@ -169,8 +173,8 @@ main (int argc, char **argv)
|
|||||||
|
|
||||||
g_type_init ();
|
g_type_init ();
|
||||||
|
|
||||||
if (!disable_sm)
|
/* Load prefs */
|
||||||
meta_session_init (client_id); /* client_id == NULL is fine */
|
meta_prefs_init ();
|
||||||
|
|
||||||
meta_ui_init (&argc, &argv);
|
meta_ui_init (&argc, &argv);
|
||||||
|
|
||||||
@ -182,6 +186,13 @@ main (int argc, char **argv)
|
|||||||
log_handler, NULL);
|
log_handler, NULL);
|
||||||
g_log_set_always_fatal (G_LOG_LEVEL_MASK);
|
g_log_set_always_fatal (G_LOG_LEVEL_MASK);
|
||||||
|
|
||||||
|
/* Connect to SM as late as possible - but before managing display,
|
||||||
|
* or we might try to manage a window before we have the session
|
||||||
|
* info
|
||||||
|
*/
|
||||||
|
if (!disable_sm)
|
||||||
|
meta_session_init (client_id); /* client_id == NULL is fine */
|
||||||
|
|
||||||
if (!meta_display_open (NULL))
|
if (!meta_display_open (NULL))
|
||||||
meta_exit (META_EXIT_ERROR);
|
meta_exit (META_EXIT_ERROR);
|
||||||
|
|
||||||
|
@ -19,6 +19,7 @@
|
|||||||
* 02111-1307, USA.
|
* 02111-1307, USA.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include <config.h>
|
||||||
#include "menu.h"
|
#include "menu.h"
|
||||||
#include "main.h"
|
#include "main.h"
|
||||||
#include "util.h"
|
#include "util.h"
|
||||||
|
@ -4,7 +4,8 @@
|
|||||||
<!-- General preferences -->
|
<!-- General preferences -->
|
||||||
|
|
||||||
<schema>
|
<schema>
|
||||||
<key>/apps/metacity/general/focus_mode</key>
|
<key>/schemas/apps/metacity/general/focus_mode</key>
|
||||||
|
<applyto>/apps/metacity/general/focus_mode</applyto>
|
||||||
<owner>metacity</owner>
|
<owner>metacity</owner>
|
||||||
<type>string</type>
|
<type>string</type>
|
||||||
<default>click</default>
|
<default>click</default>
|
||||||
@ -22,7 +23,8 @@
|
|||||||
</schema>
|
</schema>
|
||||||
|
|
||||||
<schema>
|
<schema>
|
||||||
<key>/apps/metacity/general/titlebar_uses_desktop_font</key>
|
<key>/schemas/apps/metacity/general/titlebar_uses_desktop_font</key>
|
||||||
|
<applyto>/apps/metacity/general/titlebar_uses_desktop_font</applyto>
|
||||||
<owner>metacity</owner>
|
<owner>metacity</owner>
|
||||||
<type>bool</type>
|
<type>bool</type>
|
||||||
<default>true</default>
|
<default>true</default>
|
||||||
@ -37,7 +39,8 @@
|
|||||||
</schema>
|
</schema>
|
||||||
|
|
||||||
<schema>
|
<schema>
|
||||||
<key>/apps/metacity/general/titlebar_font</key>
|
<key>/schemas/apps/metacity/general/titlebar_font</key>
|
||||||
|
<applyto>/apps/metacity/general/titlebar_font</applyto>
|
||||||
<owner>metacity</owner>
|
<owner>metacity</owner>
|
||||||
<type>string</type>
|
<type>string</type>
|
||||||
<!-- no default is deliberate - we want to be unset by default -->
|
<!-- no default is deliberate - we want to be unset by default -->
|
||||||
@ -57,7 +60,8 @@
|
|||||||
</schema>
|
</schema>
|
||||||
|
|
||||||
<schema>
|
<schema>
|
||||||
<key>/apps/metacity/general/titlebar_font_size</key>
|
<key>/schemas/apps/metacity/general/titlebar_font_size</key>
|
||||||
|
<applyto>/apps/metacity/general/titlebar_font_size</applyto>
|
||||||
<owner>metacity</owner>
|
<owner>metacity</owner>
|
||||||
<type>int</type>
|
<type>int</type>
|
||||||
<default>0</default>
|
<default>0</default>
|
||||||
@ -75,18 +79,19 @@
|
|||||||
<!-- Keybindings -->
|
<!-- Keybindings -->
|
||||||
|
|
||||||
<schema>
|
<schema>
|
||||||
<key>/apps/metacity/keybindings/activate_window_menu</key>
|
<key>/schemas/apps/metacity/keybindings/activate_window_menu</key>
|
||||||
|
<applyto>/apps/metacity/keybindings/activate_window_menu</applyto>
|
||||||
<owner>metacity</owner>
|
<owner>metacity</owner>
|
||||||
<type>string</type>
|
<type>string</type>
|
||||||
<default>
|
<default><Alt>space</default>
|
||||||
<locale name="C">
|
<locale name="C">
|
||||||
<short>Activate window menu</short>
|
<short>Activate window menu</short>
|
||||||
<long>
|
<long>
|
||||||
The keybinding used to activate the window menu.
|
The keybinding used to activate the window menu.
|
||||||
The format looks like "<Control>a" or "<Shift><Alt>F1" or
|
The format looks like "<Control>a" or "<Shift><Alt>F1" or
|
||||||
"<Release>z" (the last one is for key release). The parser is
|
"<Release>z" (the last one is for key release). The parser is
|
||||||
fairly liberal and allows lower or upper case, and also
|
fairly liberal and allows lower or upper case, and also
|
||||||
abbreviations such as "<Ctl>" and "<Ctrl>". This option can be
|
abbreviations such as "<Ctl>" and "<Ctrl>". This option can be
|
||||||
set to a single string, or a list of strings; if a list,
|
set to a single string, or a list of strings; if a list,
|
||||||
all of the given keybindings will be present. If you set
|
all of the given keybindings will be present. If you set
|
||||||
the option to the special string "disabled", then there
|
the option to the special string "disabled", then there
|
||||||
|
441
src/prefs.c
Normal file
441
src/prefs.c
Normal file
@ -0,0 +1,441 @@
|
|||||||
|
/* Metacity preferences */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 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.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <config.h>
|
||||||
|
#include "prefs.h"
|
||||||
|
#include "util.h"
|
||||||
|
#include <gconf/gconf-client.h>
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
|
/* If you add a key, it needs updating in init() and in the gconf
|
||||||
|
* notify listener and of course in the .schemas file
|
||||||
|
*/
|
||||||
|
#define KEY_FOCUS_MODE "/apps/metacity/general/focus_mode"
|
||||||
|
#define KEY_USE_DESKTOP_FONT "/apps/metacity/general/titlebar_uses_desktop_font"
|
||||||
|
#define KEY_TITLEBAR_FONT "/apps/metacity/general/titlebar_font"
|
||||||
|
#define KEY_TITLEBAR_FONT_SIZE "/apps/metacity/general/titlebar_font_size"
|
||||||
|
|
||||||
|
static GConfClient *client = NULL;
|
||||||
|
static GList *listeners = NULL;
|
||||||
|
static GList *changes = NULL;
|
||||||
|
static guint changed_idle;
|
||||||
|
static gboolean use_desktop_font = TRUE;
|
||||||
|
static PangoFontDescription *titlebar_font = NULL;
|
||||||
|
static int titlebar_font_size = 0;
|
||||||
|
static MetaFocusMode focus_mode = META_FOCUS_MODE_CLICK;
|
||||||
|
|
||||||
|
static gboolean update_use_desktop_font (gboolean value);
|
||||||
|
static gboolean update_titlebar_font (const char *value);
|
||||||
|
static gboolean update_titlebar_font_size (int value);
|
||||||
|
static gboolean update_focus_mode (const char *value);
|
||||||
|
|
||||||
|
static void queue_changed (MetaPreference pref);
|
||||||
|
static void change_notify (GConfClient *client,
|
||||||
|
guint cnxn_id,
|
||||||
|
GConfEntry *entry,
|
||||||
|
gpointer user_data);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
MetaPrefsChangedFunc func;
|
||||||
|
gpointer data;
|
||||||
|
} MetaPrefsListener;
|
||||||
|
|
||||||
|
void
|
||||||
|
meta_prefs_add_listener (MetaPrefsChangedFunc func,
|
||||||
|
gpointer data)
|
||||||
|
{
|
||||||
|
MetaPrefsListener *l;
|
||||||
|
|
||||||
|
l = g_new (MetaPrefsListener, 1);
|
||||||
|
l->func = func;
|
||||||
|
l->data = data;
|
||||||
|
|
||||||
|
listeners = g_list_prepend (listeners, l);
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
meta_prefs_remove_listener (MetaPrefsChangedFunc func,
|
||||||
|
gpointer data)
|
||||||
|
{
|
||||||
|
GList *tmp;
|
||||||
|
|
||||||
|
tmp = listeners;
|
||||||
|
while (tmp != NULL)
|
||||||
|
{
|
||||||
|
MetaPrefsListener *l = tmp->data;
|
||||||
|
|
||||||
|
if (l->func == func &&
|
||||||
|
l->data == data)
|
||||||
|
{
|
||||||
|
g_free (l);
|
||||||
|
listeners = g_list_delete_link (listeners, tmp);
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
tmp = tmp->next;
|
||||||
|
}
|
||||||
|
|
||||||
|
meta_bug ("Did not find listener to remove\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
emit_changed (MetaPreference pref)
|
||||||
|
{
|
||||||
|
GList *tmp;
|
||||||
|
GList *copy;
|
||||||
|
|
||||||
|
meta_verbose ("Notifying listeners that pref %s changed\n",
|
||||||
|
meta_preference_to_string (pref));
|
||||||
|
|
||||||
|
copy = g_list_copy (listeners);
|
||||||
|
|
||||||
|
tmp = copy;
|
||||||
|
while (tmp != NULL)
|
||||||
|
{
|
||||||
|
MetaPrefsListener *l = tmp->data;
|
||||||
|
|
||||||
|
(* l->func) (pref, l->data);
|
||||||
|
|
||||||
|
tmp = tmp->next;
|
||||||
|
}
|
||||||
|
|
||||||
|
g_list_free (copy);
|
||||||
|
}
|
||||||
|
|
||||||
|
static gboolean
|
||||||
|
changed_idle_handler (gpointer data)
|
||||||
|
{
|
||||||
|
GList *tmp;
|
||||||
|
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;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
queue_changed (MetaPreference pref)
|
||||||
|
{
|
||||||
|
meta_verbose ("Queueing change of pref %s\n",
|
||||||
|
meta_preference_to_string (pref));
|
||||||
|
|
||||||
|
if (g_list_find (changes, GINT_TO_POINTER (pref)) == NULL)
|
||||||
|
changes = g_list_prepend (changes, GINT_TO_POINTER (pref));
|
||||||
|
else
|
||||||
|
meta_verbose ("Change of pref %s was already pending\n",
|
||||||
|
meta_preference_to_string (pref));
|
||||||
|
|
||||||
|
if (changed_idle == 0)
|
||||||
|
changed_idle = g_idle_add (changed_idle_handler, NULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
cleanup_error (GError **error)
|
||||||
|
{
|
||||||
|
if (*error)
|
||||||
|
{
|
||||||
|
meta_warning ("%s", (*error)->message);
|
||||||
|
|
||||||
|
g_error_free (*error);
|
||||||
|
*error = NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
meta_prefs_init (void)
|
||||||
|
{
|
||||||
|
GError *err = NULL;
|
||||||
|
char *str_val;
|
||||||
|
int int_val;
|
||||||
|
gboolean bool_val;
|
||||||
|
|
||||||
|
if (client != NULL)
|
||||||
|
return;
|
||||||
|
|
||||||
|
/* returns a reference which we hold forever */
|
||||||
|
client = gconf_client_get_default ();
|
||||||
|
|
||||||
|
gconf_client_add_dir (client, "/apps/metacity",
|
||||||
|
GCONF_CLIENT_PRELOAD_RECURSIVE,
|
||||||
|
&err);
|
||||||
|
cleanup_error (&err);
|
||||||
|
|
||||||
|
str_val = gconf_client_get_string (client, KEY_FOCUS_MODE,
|
||||||
|
&err);
|
||||||
|
cleanup_error (&err);
|
||||||
|
update_focus_mode (str_val);
|
||||||
|
g_free (str_val);
|
||||||
|
|
||||||
|
bool_val = gconf_client_get_bool (client, KEY_USE_DESKTOP_FONT,
|
||||||
|
&err);
|
||||||
|
cleanup_error (&err);
|
||||||
|
update_use_desktop_font (bool_val);
|
||||||
|
|
||||||
|
int_val = gconf_client_get_int (client, KEY_TITLEBAR_FONT_SIZE,
|
||||||
|
&err);
|
||||||
|
cleanup_error (&err);
|
||||||
|
update_titlebar_font_size (int_val);
|
||||||
|
|
||||||
|
str_val = gconf_client_get_string (client, KEY_TITLEBAR_FONT,
|
||||||
|
&err);
|
||||||
|
cleanup_error (&err);
|
||||||
|
update_titlebar_font (str_val);
|
||||||
|
g_free (str_val);
|
||||||
|
|
||||||
|
gconf_client_notify_add (client, "/apps/metacity",
|
||||||
|
change_notify,
|
||||||
|
NULL,
|
||||||
|
NULL,
|
||||||
|
&err);
|
||||||
|
cleanup_error (&err);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
change_notify (GConfClient *client,
|
||||||
|
guint cnxn_id,
|
||||||
|
GConfEntry *entry,
|
||||||
|
gpointer user_data)
|
||||||
|
{
|
||||||
|
const char *key;
|
||||||
|
GConfValue *value;
|
||||||
|
|
||||||
|
key = gconf_entry_get_key (entry);
|
||||||
|
value = gconf_entry_get_value (entry);
|
||||||
|
|
||||||
|
if (strcmp (key, KEY_FOCUS_MODE) == 0)
|
||||||
|
{
|
||||||
|
const char *str;
|
||||||
|
|
||||||
|
if (value && value->type != GCONF_VALUE_STRING)
|
||||||
|
{
|
||||||
|
meta_warning (_("GConf key \"%s\" is set to an invalid type\n"),
|
||||||
|
KEY_FOCUS_MODE);
|
||||||
|
goto out;
|
||||||
|
}
|
||||||
|
|
||||||
|
str = value ? gconf_value_get_string (value) : NULL;
|
||||||
|
|
||||||
|
if (update_focus_mode (str))
|
||||||
|
queue_changed (META_PREF_FOCUS_MODE);
|
||||||
|
}
|
||||||
|
else if (strcmp (key, KEY_TITLEBAR_FONT) == 0)
|
||||||
|
{
|
||||||
|
const char *str;
|
||||||
|
|
||||||
|
if (value && value->type != GCONF_VALUE_STRING)
|
||||||
|
{
|
||||||
|
meta_warning (_("GConf key \"%s\" is set to an invalid type\n"),
|
||||||
|
KEY_TITLEBAR_FONT);
|
||||||
|
goto out;
|
||||||
|
}
|
||||||
|
|
||||||
|
str = value ? gconf_value_get_string (value) : NULL;
|
||||||
|
|
||||||
|
if (update_titlebar_font (str))
|
||||||
|
queue_changed (META_PREF_TITLEBAR_FONT);
|
||||||
|
}
|
||||||
|
else if (strcmp (key, KEY_TITLEBAR_FONT_SIZE) == 0)
|
||||||
|
{
|
||||||
|
int d;
|
||||||
|
|
||||||
|
if (value && value->type != GCONF_VALUE_INT)
|
||||||
|
{
|
||||||
|
meta_warning (_("GConf key \"%s\" is set to an invalid type\n"),
|
||||||
|
KEY_TITLEBAR_FONT_SIZE);
|
||||||
|
goto out;
|
||||||
|
}
|
||||||
|
|
||||||
|
d = value ? gconf_value_get_int (value) : 0;
|
||||||
|
|
||||||
|
if (update_titlebar_font_size (d))
|
||||||
|
queue_changed (META_PREF_TITLEBAR_FONT_SIZE);
|
||||||
|
}
|
||||||
|
else if (strcmp (key, KEY_USE_DESKTOP_FONT) == 0)
|
||||||
|
{
|
||||||
|
gboolean b;
|
||||||
|
|
||||||
|
if (value && value->type != GCONF_VALUE_BOOL)
|
||||||
|
{
|
||||||
|
meta_warning (_("GConf key \"%s\" is set to an invalid type\n"),
|
||||||
|
KEY_USE_DESKTOP_FONT);
|
||||||
|
goto out;
|
||||||
|
}
|
||||||
|
|
||||||
|
b = value ? gconf_value_get_bool (value) : TRUE;
|
||||||
|
|
||||||
|
/* There's no external pref for this, it just affects whether
|
||||||
|
* get_titlebar_font returns NULL, so that's what we queue
|
||||||
|
* the change on
|
||||||
|
*/
|
||||||
|
if (update_use_desktop_font (b))
|
||||||
|
queue_changed (META_PREF_TITLEBAR_FONT);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
meta_verbose ("Key %s doesn't mean anything to Metacity\n",
|
||||||
|
key);
|
||||||
|
|
||||||
|
out:
|
||||||
|
/* nothing */
|
||||||
|
}
|
||||||
|
|
||||||
|
static gboolean
|
||||||
|
update_focus_mode (const char *value)
|
||||||
|
{
|
||||||
|
MetaFocusMode old_mode = focus_mode;
|
||||||
|
|
||||||
|
if (value != NULL)
|
||||||
|
{
|
||||||
|
if (g_ascii_strcasecmp (value, "click") == 0)
|
||||||
|
focus_mode = META_FOCUS_MODE_CLICK;
|
||||||
|
else if (g_ascii_strcasecmp (value, "sloppy") == 0)
|
||||||
|
focus_mode = META_FOCUS_MODE_SLOPPY;
|
||||||
|
else if (g_ascii_strcasecmp (value, "mouse") == 0)
|
||||||
|
focus_mode = META_FOCUS_MODE_MOUSE;
|
||||||
|
else
|
||||||
|
meta_warning (_("GConf key '%s' is set to an invalid value"),
|
||||||
|
KEY_FOCUS_MODE);
|
||||||
|
}
|
||||||
|
|
||||||
|
return (old_mode != focus_mode);
|
||||||
|
}
|
||||||
|
|
||||||
|
MetaFocusMode
|
||||||
|
meta_prefs_get_focus_mode (void)
|
||||||
|
{
|
||||||
|
return focus_mode;
|
||||||
|
}
|
||||||
|
|
||||||
|
static gboolean
|
||||||
|
update_use_desktop_font (gboolean value)
|
||||||
|
{
|
||||||
|
gboolean old = use_desktop_font;
|
||||||
|
|
||||||
|
use_desktop_font = value;
|
||||||
|
|
||||||
|
return old != value;
|
||||||
|
}
|
||||||
|
|
||||||
|
static gboolean
|
||||||
|
update_titlebar_font (const char *value)
|
||||||
|
{
|
||||||
|
PangoFontDescription *new_desc;
|
||||||
|
|
||||||
|
new_desc = NULL;
|
||||||
|
|
||||||
|
if (value)
|
||||||
|
{
|
||||||
|
new_desc = pango_font_description_from_string (value);
|
||||||
|
if (new_desc == NULL)
|
||||||
|
meta_warning (_("Could not parse font description \"%s\" from GConf key %s\n"),
|
||||||
|
value, KEY_TITLEBAR_FONT);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (new_desc && titlebar_font &&
|
||||||
|
pango_font_description_equal (new_desc, titlebar_font))
|
||||||
|
{
|
||||||
|
pango_font_description_free (new_desc);
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (titlebar_font)
|
||||||
|
pango_font_description_free (titlebar_font);
|
||||||
|
|
||||||
|
titlebar_font = new_desc;
|
||||||
|
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const PangoFontDescription*
|
||||||
|
meta_prefs_get_titlebar_font (void)
|
||||||
|
{
|
||||||
|
if (use_desktop_font)
|
||||||
|
return NULL;
|
||||||
|
else
|
||||||
|
return titlebar_font;
|
||||||
|
}
|
||||||
|
|
||||||
|
static gboolean
|
||||||
|
update_titlebar_font_size (int value)
|
||||||
|
{
|
||||||
|
int old = titlebar_font_size;
|
||||||
|
|
||||||
|
if (value < 0)
|
||||||
|
{
|
||||||
|
meta_warning (_("%d stored in GConf key %s is not a valid font size\n"),
|
||||||
|
value, KEY_TITLEBAR_FONT_SIZE);
|
||||||
|
value = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
titlebar_font_size = value;
|
||||||
|
|
||||||
|
return old != titlebar_font_size;
|
||||||
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
meta_prefs_get_titlebar_font_size (void)
|
||||||
|
{
|
||||||
|
return titlebar_font_size;
|
||||||
|
}
|
||||||
|
|
||||||
|
const char*
|
||||||
|
meta_preference_to_string (MetaPreference pref)
|
||||||
|
{
|
||||||
|
switch (pref)
|
||||||
|
{
|
||||||
|
case META_PREF_FOCUS_MODE:
|
||||||
|
return "FOCUS_MODE";
|
||||||
|
break;
|
||||||
|
|
||||||
|
case META_PREF_TITLEBAR_FONT:
|
||||||
|
return "TITLEBAR_FONT";
|
||||||
|
break;
|
||||||
|
|
||||||
|
case META_PREF_TITLEBAR_FONT_SIZE:
|
||||||
|
return "TITLEBAR_FONT_SIZE";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return "(unknown)";
|
||||||
|
}
|
58
src/prefs.h
Normal file
58
src/prefs.h
Normal file
@ -0,0 +1,58 @@
|
|||||||
|
/* Metacity preferences */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 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_PREFS_H
|
||||||
|
#define META_PREFS_H
|
||||||
|
|
||||||
|
/* This header is a "common" one between the UI and core side */
|
||||||
|
#include "common.h"
|
||||||
|
#include <pango/pango-font.h>
|
||||||
|
|
||||||
|
typedef enum
|
||||||
|
{
|
||||||
|
META_PREF_FOCUS_MODE,
|
||||||
|
META_PREF_TITLEBAR_FONT,
|
||||||
|
META_PREF_TITLEBAR_FONT_SIZE
|
||||||
|
|
||||||
|
} MetaPreference;
|
||||||
|
|
||||||
|
typedef void (* MetaPrefsChangedFunc) (MetaPreference pref,
|
||||||
|
gpointer data);
|
||||||
|
|
||||||
|
void meta_prefs_add_listener (MetaPrefsChangedFunc func,
|
||||||
|
gpointer data);
|
||||||
|
void meta_prefs_remove_listener (MetaPrefsChangedFunc func,
|
||||||
|
gpointer data);
|
||||||
|
|
||||||
|
void meta_prefs_init (void);
|
||||||
|
const char* meta_preference_to_string (MetaPreference pref);
|
||||||
|
|
||||||
|
MetaFocusMode meta_prefs_get_focus_mode (void);
|
||||||
|
/* returns NULL if GTK default should be used */
|
||||||
|
const PangoFontDescription* meta_prefs_get_titlebar_font (void);
|
||||||
|
/* returns 0 if default should be used */
|
||||||
|
int meta_prefs_get_titlebar_font_size (void);
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -19,6 +19,7 @@
|
|||||||
* 02111-1307, USA.
|
* 02111-1307, USA.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include <config.h>
|
||||||
#include "screen.h"
|
#include "screen.h"
|
||||||
#include "util.h"
|
#include "util.h"
|
||||||
#include "errors.h"
|
#include "errors.h"
|
||||||
|
@ -19,6 +19,8 @@
|
|||||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||||
* 02111-1307, USA. */
|
* 02111-1307, USA. */
|
||||||
|
|
||||||
|
#include <config.h>
|
||||||
|
|
||||||
#include "session.h"
|
#include "session.h"
|
||||||
|
|
||||||
#ifndef HAVE_SM
|
#ifndef HAVE_SM
|
||||||
@ -27,6 +29,18 @@ meta_session_init (const char *previous_id)
|
|||||||
{
|
{
|
||||||
meta_verbose ("Compiled without session management support\n");
|
meta_verbose ("Compiled without session management support\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const MetaWindowSessionInfo*
|
||||||
|
meta_window_lookup_saved_state (MetaWindow *window)
|
||||||
|
{
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
meta_window_release_saved_state (const MetaWindowSessionInfo *info)
|
||||||
|
{
|
||||||
|
;
|
||||||
|
}
|
||||||
#else /* HAVE_SM */
|
#else /* HAVE_SM */
|
||||||
|
|
||||||
#include <X11/ICE/ICElib.h>
|
#include <X11/ICE/ICElib.h>
|
||||||
|
@ -46,9 +46,8 @@ void meta_fatal (const char *format,
|
|||||||
void meta_push_no_msg_prefix (void);
|
void meta_push_no_msg_prefix (void);
|
||||||
void meta_pop_no_msg_prefix (void);
|
void meta_pop_no_msg_prefix (void);
|
||||||
|
|
||||||
/* FIXME */
|
#include <libintl.h>
|
||||||
#include <config.h>
|
#define _(x) dgettext (GETTEXT_PACKAGE, x)
|
||||||
#define _(x) x
|
|
||||||
#define N_(x) x
|
#define N_(x) x
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -19,6 +19,7 @@
|
|||||||
* 02111-1307, USA.
|
* 02111-1307, USA.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include <config.h>
|
||||||
#include "window.h"
|
#include "window.h"
|
||||||
#include "util.h"
|
#include "util.h"
|
||||||
#include "frame.h"
|
#include "frame.h"
|
||||||
|
Loading…
Reference in New Issue
Block a user