- Update to 2.28.1, remove 7 patches now applied upstream

This commit is contained in:
Owen Taylor 2010-01-27 14:30:35 +00:00
parent 0445ab3763
commit 068875fea6
14 changed files with 5 additions and 801 deletions

View File

@ -1,34 +0,0 @@
From 6558e661d22d9c2a70df8ce4bddcea083e61c328 Mon Sep 17 00:00:00 2001
From: Lennart Poettering <lennart@poettering.net>
Date: Fri, 28 Aug 2009 05:43:14 +0200
Subject: [PATCH] bell: increase bell rate limit from 1/s to 1/100ms
Right now metacity issues only 1 bell event per second. This is
feels buggy when triggering multiple alarm sounds in a terminal.
This patch simple increases the limit to 1/100ms. 100ms is probably a
good choice since the HIG recommends that all user reaction should
happen within 100ms. With this applied pressing 'Left' in gnome-terminal
feels much more responsive.
https://bugzilla.redhat.com/show_bug.cgi?id=498608
---
src/core/display.c | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/src/core/display.c b/src/core/display.c
index b1661e3..bf22a9e 100644
--- a/src/core/display.c
+++ b/src/core/display.c
@@ -2385,7 +2385,7 @@ event_callback (XEvent *event,
{
case XkbBellNotify:
if (XSERVER_TIME_IS_BEFORE(display->last_bell_time,
- xkb_ev->time - 1000))
+ xkb_ev->time - 100))
{
display->last_bell_time = xkb_ev->time;
meta_bell_notify (display, xkb_ev);
--
1.6.4

View File

@ -1,42 +0,0 @@
From 84e14cd8587c470e925e2fbf1a5a13c63686bcd4 Mon Sep 17 00:00:00 2001
From: Lennart Poettering <lennart@poettering.net>
Date: Fri, 28 Aug 2009 05:38:17 +0200
Subject: [PATCH] sound: ask libcanberra to cache alert/desktop switch sounds
These sounds are good candidates for caching in the sound server, to
save a bit of CPU and make reaction faster. Hence, tell libcanberra to
cache them.
---
src/core/bell.c | 1 +
src/core/workspace.c | 1 +
2 files changed, 2 insertions(+), 0 deletions(-)
diff --git a/src/core/bell.c b/src/core/bell.c
index 92d1dbd..676ebac 100644
--- a/src/core/bell.c
+++ b/src/core/bell.c
@@ -292,6 +292,7 @@ meta_bell_notify (MetaDisplay *display,
ca_proplist_create (&p);
ca_proplist_sets (p, CA_PROP_EVENT_ID, "bell-window-system");
ca_proplist_sets (p, CA_PROP_EVENT_DESCRIPTION, _("Bell event"));
+ ca_proplist_sets (p, CA_PROP_CANBERRA_CACHE_CONTROL, "permanent");
window = meta_display_lookup_x_window (display, xkb_bell_event->window);
if (!window && (display->focus_window) && (display->focus_window->frame))
diff --git a/src/core/display.c b/src/core/display.c
index 55c374a..b1661e3 100644
diff --git a/src/core/workspace.c b/src/core/workspace.c
index a0170a6..063f867 100644
--- a/src/core/workspace.c
+++ b/src/core/workspace.c
@@ -358,6 +358,7 @@ static void workspace_switch_sound(MetaWorkspace *from,
ca_context_play(ca_gtk_context_get(), 1,
CA_PROP_EVENT_ID, e,
CA_PROP_EVENT_DESCRIPTION, "Desktop switched",
+ CA_PROP_CANBERRA_CACHE_CONTROL, "permanent",
NULL);
finish:
--
1.6.4

View File

@ -1,30 +0,0 @@
From 8132127a749b150d188631e03d36462838620a82 Mon Sep 17 00:00:00 2001
From: Lennart Poettering <lennart@poettering.net>
Date: Fri, 28 Aug 2009 07:29:11 +0200
Subject: [PATCH] tooltip: set window type hint for self-drawn tooltips to GDK_WINDOW_TYPE_HINT_TOOLTIP
libcanberra generates specific tooltip popup sounds and for that
recognizes the tooltip windows by the GtkWindowTypeHint set for them.
This trivial patch simply sets the hint for the self-drawn tooltips
metacity uses.
---
src/ui/fixedtip.c | 2 ++
1 files changed, 2 insertions(+), 0 deletions(-)
diff --git a/src/ui/fixedtip.c b/src/ui/fixedtip.c
index d2b95f2..31a6082 100644
--- a/src/ui/fixedtip.c
+++ b/src/ui/fixedtip.c
@@ -71,6 +71,8 @@ meta_fixed_tip_show (Display *xdisplay, int screen_number,
if (tip == NULL)
{
tip = gtk_window_new (GTK_WINDOW_POPUP);
+ gtk_window_set_type_hint (GTK_WINDOW(tip), GDK_WINDOW_TYPE_HINT_TOOLTIP);
+
{
GdkScreen *gdk_screen;
GdkRectangle monitor;
--
1.6.4

View File

@ -1,28 +0,0 @@
From bf7327acb41a43b2bdeee9f0855455ebaef8b816 Mon Sep 17 00:00:00 2001
From: Owen W. Taylor <otaylor@fishsoup.net>
Date: Wed, 21 Oct 2009 21:11:46 -0400
Subject: [PATCH] Add XFCE Terminal as a terminal
Include the XFCE terminal program 'Terminal' in the list of terminals.
https://bugzilla.gnome.org/show_bug.cgi?id=599262
---
src/core/window.c | 3 +++
1 files changed, 3 insertions(+), 0 deletions(-)
diff --git a/src/core/window.c b/src/core/window.c
index 0ae6a01..b481ccf 100644
--- a/src/core/window.c
+++ b/src/core/window.c
@@ -1951,6 +1951,9 @@ __window_is_terminal (MetaWindow *window)
/* mlterm ("multi lingual terminal emulator on X") */
else if (strcmp (window->res_class, "mlterm") == 0)
return TRUE;
+ /* Terminal -- XFCE Terminal */
+ else if (strcmp (window->res_class, "Terminal") == 0)
+ return TRUE;
return FALSE;
}
--
1.6.5.rc2

View File

@ -1,43 +0,0 @@
Patch from Travis Watkins
https://bugzilla.gnome.org/show_bug.cgi?id=530702
diff -ru metacity-2.27.0/src/core/screen.c metacity-2.27.0.new/src/core/screen.c
--- metacity-2.27.0/src/core/screen.c 2008-10-19 16:15:38.000000000 -0500
+++ metacity-2.27.0.new/src/core/screen.c 2009-08-24 04:56:26.929023537 -0500
@@ -2782,11 +2782,14 @@
char selection[32];
Atom a;
+ screen->wm_cm_timestamp = meta_display_get_current_time_roundtrip (
+ screen->display);
+
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,
- screen->wm_cm_selection_window, CurrentTime);
+ screen->wm_cm_selection_window, screen->wm_cm_timestamp);
}
void
@@ -2797,6 +2800,7 @@
g_snprintf (selection, sizeof(selection), "_NET_WM_CM_S%d", screen->number);
a = XInternAtom (screen->display->xdisplay, selection, FALSE);
- XSetSelectionOwner (screen->display->xdisplay, a, None, CurrentTime);
+ XSetSelectionOwner (screen->display->xdisplay, a,
+ None, screen->wm_cm_timestamp);
}
#endif /* HAVE_COMPOSITE_EXTENSIONS */
diff -ru metacity-2.27.0/src/core/screen-private.h metacity-2.27.0.new/src/core/screen-private.h
--- metacity-2.27.0/src/core/screen-private.h 2008-10-19 16:15:38.000000000 -0500
+++ metacity-2.27.0.new/src/core/screen-private.h 2009-08-24 04:50:41.469785283 -0500
@@ -113,6 +113,7 @@
#ifdef HAVE_COMPOSITE_EXTENSIONS
Window wm_cm_selection_window;
+ guint32 wm_cm_timestamp;
#endif
guint work_area_idle;

View File

@ -1,12 +0,0 @@
diff -up metacity-2.19.55/src/metacity.schemas.in.in.default-theme metacity-2.19.55/src/metacity.schemas.in.in
--- metacity-2.19.55/src/metacity.schemas.in.in.default-theme 2007-08-12 00:19:23.000000000 -0400
+++ metacity-2.19.55/src/metacity.schemas.in.in 2007-08-12 00:19:35.000000000 -0400
@@ -212,7 +212,7 @@
<applyto>/apps/metacity/general/theme</applyto>
<owner>metacity</owner>
<type>string</type>
- <default>Clearlooks</default>
+ <default>Nodoka</default>
<locale name="C">
<short>Current theme</short>
<long>

View File

@ -1,46 +0,0 @@
From 13f6daee4752ae5b1fb61447deaca43161d5b0bc Mon Sep 17 00:00:00 2001
From: Owen W. Taylor <otaylor@fishsoup.net>
Date: Thu, 17 Dec 2009 16:20:18 -0500
Subject: [PATCH] Don't call IceCloseConnection() behind libSM's back
The ICE connection is opened by libSM; we can't just close it when
we get an IOError on the ICE connection; instead call SmcCloseConnection()
and mark the connection as closed. This will prevent a segfault if we
exit out of the metacity main loop and get to meta_finalize().
https://bugzilla.gnome.org/show_bug.cgi?id=604867
---
src/core/session.c | 10 +++++++---
1 files changed, 7 insertions(+), 3 deletions(-)
diff --git a/src/core/session.c b/src/core/session.c
index 96d8d71..2ca15c9 100644
--- a/src/core/session.c
+++ b/src/core/session.c
@@ -84,6 +84,7 @@ static char* load_state (const char *previous_save_file);
static void regenerate_save_file (void);
static const char* full_save_file (void);
static void warn_about_lame_clients_and_finish_interact (gboolean shutdown);
+static void disconnect (void);
/* This is called when data is available on an ICE connection. */
static gboolean
@@ -106,9 +107,12 @@ process_ice_messages (GIOChannel *channel,
IcePointer context = IceGetConnectionContext (connection);
#endif
- /* We were disconnected */
- IceSetShutdownNegotiation (connection, False);
- IceCloseConnection (connection);
+ /* 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.
+ */
+ disconnect ();
+ meta_quit (META_EXIT_SUCCESS);
return FALSE;
}
--
1.6.5.2

View File

@ -1,41 +0,0 @@
From 80bd3db7b6711c90af19c7ee17e86aea0b804d7c Mon Sep 17 00:00:00 2001
From: Owen W. Taylor <otaylor@fishsoup.net>
Date: Fri, 20 Nov 2009 10:08:20 -0500
Subject: [PATCH] Don't crash for visual bell on undecorated window
When an XKB bell is sent on a undecorated window, flash the
entire screen rather than crashing trying to flash the frame.
Based on patch by Daniel Erat
https://bugzilla.gnome.org/show_bug.cgi?id=598231
---
src/core/bell.c | 7 ++++---
1 files changed, 4 insertions(+), 3 deletions(-)
diff --git a/src/core/bell.c b/src/core/bell.c
index 1e01cd6..9904f97 100644
--- a/src/core/bell.c
+++ b/src/core/bell.c
@@ -231,15 +231,16 @@ bell_flash_frame (MetaDisplay *display,
g_assert (xkb_ev->xkb_type == XkbBellNotify);
window = meta_display_lookup_x_window (display, xkb_bell_event->window);
- if (!window && (display->focus_window) && (display->focus_window->frame))
+ if (!window)
{
window = display->focus_window;
}
- if (window)
+ if (window && window->frame)
{
bell_flash_window_frame (window);
}
- else /* revert to fullscreen flash if there's no focussed window */
+ else /* revert to fullscreen flash if there's no focused window or if it
+ has no frame */
{
bell_flash_fullscreen (display, xkb_ev);
}
--
1.6.5.2

View File

@ -1,172 +0,0 @@
--- metacity-2.25.144/configure.in 2009-02-01 15:33:42.000000000 -0500
+++ hacked/configure.in 2009-02-09 21:15:32.000000000 -0500
@@ -107,7 +107,7 @@
fi
changequote([,])dnl
-METACITY_PC_MODULES='gtk+-2.0 >= 2.10.0 pango >= 1.2.0'
+METACITY_PC_MODULES='gtk+-2.0 >= 2.10.0 pango >= 1.2.0 libcanberra-gtk'
AC_ARG_ENABLE(gconf,
AC_HELP_STRING([--disable-gconf],
--- metacity-2.25.144/src/core/bell.c 2009-02-01 15:33:15.000000000 -0500
+++ hacked/src/core/bell.c 2009-02-09 23:50:43.000000000 -0500
@@ -52,6 +52,7 @@
#include "bell.h"
#include "screen-private.h"
#include "prefs.h"
+#include <canberra-gtk.h>
/**
* Flashes one entire screen. This is done by making a window the size of the
@@ -223,7 +224,7 @@
*/
static void
bell_flash_frame (MetaDisplay *display,
- XkbAnyEvent *xkb_ev)
+ XkbAnyEvent *xkb_ev)
{
XkbBellNotifyEvent *xkb_bell_event = (XkbBellNotifyEvent *) xkb_ev;
MetaWindow *window;
@@ -280,6 +281,47 @@
/* flash something */
if (meta_prefs_get_visual_bell ())
bell_visual_notify (display, xkb_ev);
+
+ if (meta_prefs_bell_is_audible ())
+ {
+ ca_proplist *p;
+ XkbBellNotifyEvent *xkb_bell_event = (XkbBellNotifyEvent*) xkb_ev;
+ MetaWindow *window;
+ int res;
+
+ ca_proplist_create (&p);
+ ca_proplist_sets (p, CA_PROP_EVENT_ID, "bell-window-system");
+ ca_proplist_sets (p, CA_PROP_EVENT_DESCRIPTION, _("Bell event"));
+ ca_proplist_sets (p, CA_PROP_MEDIA_ROLE, "event");
+ ca_proplist_sets (p, CA_PROP_CANBERRA_ENABLE, "1");
+
+ window = meta_display_lookup_x_window (display, xkb_bell_event->window);
+ if (!window && (display->focus_window) && (display->focus_window->frame))
+ window = display->focus_window;
+
+ if (window)
+ {
+ ca_proplist_sets (p, CA_PROP_WINDOW_NAME, window->title);
+ ca_proplist_setf (p, CA_PROP_WINDOW_X11_XID, "%lu", (unsigned long)window->xwindow);
+ ca_proplist_sets (p, CA_PROP_APPLICATION_NAME, window->res_name);
+ ca_proplist_setf (p, CA_PROP_APPLICATION_PROCESS_ID, "%d", window->net_wm_pid);
+ }
+
+ /* First, we try to play a real sound ... */
+ res = ca_context_play_full (ca_gtk_context_get (), 1, p, NULL, NULL);
+
+ ca_proplist_destroy (p);
+
+ if (res != CA_SUCCESS && res != CA_ERROR_DISABLED)
+ {
+ /* ...and in case that failed we use the classic X11 bell. */
+ XkbForceDeviceBell (display->xdisplay,
+ xkb_bell_event->device,
+ xkb_bell_event->bell_class,
+ xkb_bell_event->bell_id,
+ xkb_bell_event->percent);
+ }
+ }
}
#endif /* HAVE_XKB */
@@ -321,8 +363,7 @@
XkbChangeEnabledControls (display->xdisplay,
XkbUseCoreKbd,
XkbAudibleBellMask,
- meta_prefs_bell_is_audible ()
- ? XkbAudibleBellMask : 0);
+ 0);
if (visual_bell_auto_reset) {
XkbSetAutoResetControls (display->xdisplay,
XkbAudibleBellMask,
--- metacity-2.25.144/src/core/workspace.c 2009-02-01 15:33:15.000000000 -0500
+++ hacked/src/core/workspace.c 2009-02-09 21:15:32.000000000 -0500
@@ -29,6 +29,7 @@
#include "prefs.h"
#include <X11/Xatom.h>
#include <string.h>
+#include <canberra-gtk.h>
void meta_workspace_queue_calc_showing (MetaWorkspace *workspace);
static void set_active_space_hint (MetaScreen *screen);
@@ -306,6 +307,63 @@
}
}
+static void workspace_switch_sound(MetaWorkspace *from,
+ MetaWorkspace *to) {
+
+ MetaWorkspaceLayout layout;
+ int i, nw, x, y, fi, ti;
+ const char *e;
+
+ nw = meta_screen_get_n_workspaces(from->screen);
+ fi = meta_workspace_index(from);
+ ti = meta_workspace_index(to);
+
+ meta_screen_calc_workspace_layout(from->screen,
+ nw,
+ fi,
+ &layout);
+
+ for (i = 0; i < nw; i++)
+ if (layout.grid[i] == ti)
+ break;
+
+ if (i >= nw) {
+ meta_bug("Failed to find destination workspace in layout\n");
+ goto finish;
+ }
+
+ y = i / layout.cols;
+ x = i % layout.cols;
+
+ /* We priorize horizontal over vertical movements here. The
+ rationale for this is that horizontal movements are probably more
+ interesting for sound effects because speakers are usually
+ positioned on a horizontal and not a vertical axis. i.e. your
+ spatial "Woosh!" effects will easily be able to encode horizontal
+ movement but not such much vertical movement. */
+
+ if (x < layout.current_col)
+ e = "desktop-switch-left";
+ else if (x > layout.current_col)
+ e = "desktop-switch-right";
+ else if (y < layout.current_row)
+ e = "desktop-switch-up";
+ else if (y > layout.current_row)
+ e = "desktop-switch-down";
+ else {
+ meta_bug("Uh, origin and destination workspace at same logic position!\n");
+ goto finish;
+ }
+
+ ca_context_play(ca_gtk_context_get(), 1,
+ CA_PROP_EVENT_ID, e,
+ CA_PROP_EVENT_DESCRIPTION, "Desktop switched",
+ NULL);
+
+ finish:
+ meta_screen_free_workspace_layout (&layout);
+}
+
void
meta_workspace_activate_with_focus (MetaWorkspace *workspace,
MetaWindow *focus_this,
@@ -320,6 +378,9 @@
if (workspace->screen->active_workspace == workspace)
return;
+ if (workspace->screen->active_workspace)
+ workspace_switch_sound(workspace->screen->active_workspace, workspace);
+
/* Note that old can be NULL; e.g. when starting up */
old = workspace->screen->active_workspace;

View File

@ -1,64 +0,0 @@
diff -up metacity-2.28.0/src/core/main.c.sigterm metacity-2.28.0/src/core/main.c
--- metacity-2.28.0/src/core/main.c.sigterm 2009-11-05 14:53:40.599237201 -0500
+++ metacity-2.28.0/src/core/main.c 2009-11-05 17:28:18.601486344 -0500
@@ -67,6 +67,7 @@
#include <fcntl.h>
#include <locale.h>
#include <time.h>
+#include <unistd.h>
/**
* The exit code we'll return to our parent process when we eventually die.
@@ -368,12 +369,25 @@ meta_finalize (void)
meta_session_shutdown ();
}
+static int sigterm_pipe_fds[2] = { -1, -1 };
+
static void
sigterm_handler (int signum)
{
- meta_finalize ();
+ if (sigterm_pipe_fds[1] >= 0)
+ {
+ ssize_t bytes_written;
+ bytes_written = write (sigterm_pipe_fds[1], "", 1);
+ close (sigterm_pipe_fds[1]);
+ sigterm_pipe_fds[1] = -1;
+ }
+}
- exit (meta_exit_code);
+static gboolean
+on_sigterm (void)
+{
+ meta_quit (META_EXIT_SUCCESS);
+ return FALSE;
}
static guint sigchld_signal_id = 0;
@@ -421,6 +434,7 @@ main (int argc, char **argv)
"Pango", "GLib-GObject", "GThread"
};
guint i;
+ GIOChannel *channel;
if (!g_thread_supported ())
g_thread_init (NULL);
@@ -443,6 +457,16 @@ main (int argc, char **argv)
g_strerror (errno));
#endif
+ if (pipe (sigterm_pipe_fds) != 0)
+ g_printerr ("Failed to create SIGTERM pipe: %s\n",
+ g_strerror (errno));
+
+ channel = g_io_channel_unix_new (sigterm_pipe_fds[0]);
+ g_io_channel_set_flags (channel, G_IO_FLAG_NONBLOCK, NULL);
+ g_io_add_watch (channel, G_IO_IN, (GIOFunc) on_sigterm, NULL);
+ g_io_channel_set_close_on_unref (channel, TRUE);
+ g_io_channel_unref (channel);
+
act.sa_handler = &sigterm_handler;
if (sigaction (SIGTERM, &act, NULL) < 0)
g_printerr ("Failed to register SIGTERM handler: %s\n",

View File

@ -1,11 +0,0 @@
diff -up metacity-2.25.144/src/core/bell.c.no-more-brokkoli metacity-2.25.144/src/core/bell.c
--- metacity-2.25.144/src/core/bell.c.no-more-brokkoli 2009-02-21 12:04:32.447950258 -0500
+++ metacity-2.25.144/src/core/bell.c 2009-02-21 12:04:41.191943469 -0500
@@ -293,7 +293,6 @@ meta_bell_notify (MetaDisplay *display,
ca_proplist_sets (p, CA_PROP_EVENT_ID, "bell-window-system");
ca_proplist_sets (p, CA_PROP_EVENT_DESCRIPTION, _("Bell event"));
ca_proplist_sets (p, CA_PROP_MEDIA_ROLE, "event");
- ca_proplist_sets (p, CA_PROP_CANBERRA_ENABLE, "1");
window = meta_display_lookup_x_window (display, xkb_bell_event->window);
if (!window && (display->focus_window) && (display->focus_window->frame))

View File

@ -1,142 +0,0 @@
From b625ec30d99b2dcf86d8fa78b09f6d04dce3a6e0 Mon Sep 17 00:00:00 2001
From: Tomeu Vizoso <tomeu@sugarlabs.org>
Date: Fri, 19 Jun 2009 15:30:37 +0000
Subject: Add a switch to disable autofullscreen'ing maximized windows without decorations
---
diff --git a/src/core/constraints.c b/src/core/constraints.c
index 800b293..a060d20 100644
--- a/src/core/constraints.c
+++ b/src/core/constraints.c
@@ -27,6 +27,7 @@
#include "constraints.h"
#include "workspace.h"
#include "place.h"
+#include "prefs.h"
#include <stdlib.h>
#include <math.h>
@@ -424,7 +425,8 @@ setup_constraint_info (ConstraintInfo *info,
/* Workaround braindead legacy apps that don't know how to
* fullscreen themselves properly.
*/
- if (meta_rectangle_equal (new, &xinerama_info->rect) &&
+ if (meta_prefs_get_force_fullscreen() &&
+ meta_rectangle_equal (new, &xinerama_info->rect) &&
window->has_fullscreen_func &&
!window->fullscreen)
{
diff --git a/src/core/main.c b/src/core/main.c
index 6c36f10..a36a396 100644
--- a/src/core/main.c
+++ b/src/core/main.c
@@ -233,6 +233,7 @@ typedef struct
gboolean sync;
gboolean composite;
gboolean no_composite;
+ gboolean no_force_fullscreen;
} MetaArguments;
#ifdef HAVE_COMPOSITE_EXTENSIONS
@@ -314,6 +315,12 @@ meta_parse_options (int *argc, char ***argv,
N_("Turn compositing off"),
NULL
},
+ {
+ "no-force-fullscreen", 0, COMPOSITE_OPTS_FLAGS, G_OPTION_ARG_NONE,
+ &my_args.no_force_fullscreen,
+ N_("Don't make fullscreen windows that are maximized and have no decorations"),
+ NULL
+ },
{NULL}
};
GOptionContext *ctx;
@@ -584,6 +591,9 @@ main (int argc, char **argv)
if (meta_args.composite || meta_args.no_composite)
meta_prefs_set_compositing_manager (meta_args.composite);
+ if (meta_args.no_force_fullscreen)
+ meta_prefs_set_force_fullscreen (FALSE);
+
if (!meta_display_open ())
meta_exit (META_EXIT_ERROR);
diff --git a/src/core/prefs.c b/src/core/prefs.c
index 1f4fe41..6e41b3c 100644
--- a/src/core/prefs.c
+++ b/src/core/prefs.c
@@ -95,6 +95,7 @@ static char *cursor_theme = NULL;
static int cursor_size = 24;
static gboolean compositing_manager = FALSE;
static gboolean resize_with_right_button = FALSE;
+static gboolean force_fullscreen = TRUE;
static MetaVisualBellType visual_bell_type = META_VISUAL_BELL_FULLSCREEN_FLASH;
static MetaButtonLayout button_layout;
@@ -1751,6 +1752,9 @@ meta_preference_to_string (MetaPreference pref)
case META_PREF_RESIZE_WITH_RIGHT_BUTTON:
return "RESIZE_WITH_RIGHT_BUTTON";
+
+ case META_PREF_FORCE_FULLSCREEN:
+ return "FORCE_FULLSCREEN";
}
return "(unknown)";
@@ -2737,6 +2741,12 @@ meta_prefs_get_mouse_button_menu (void)
return resize_with_right_button ? 2: 3;
}
+gboolean
+meta_prefs_get_force_fullscreen (void)
+{
+ return force_fullscreen;
+}
+
void
meta_prefs_set_compositing_manager (gboolean whether)
{
@@ -2797,3 +2807,10 @@ init_button_layout(void)
};
#endif
+
+void
+meta_prefs_set_force_fullscreen (gboolean whether)
+{
+ force_fullscreen = whether;
+}
+
diff --git a/src/include/prefs.h b/src/include/prefs.h
index 2f1ce8e..a4193ff 100644
--- a/src/include/prefs.h
+++ b/src/include/prefs.h
@@ -59,7 +59,8 @@ typedef enum
META_PREF_CURSOR_THEME,
META_PREF_CURSOR_SIZE,
META_PREF_COMPOSITING_MANAGER,
- META_PREF_RESIZE_WITH_RIGHT_BUTTON
+ META_PREF_RESIZE_WITH_RIGHT_BUTTON,
+ META_PREF_FORCE_FULLSCREEN
} MetaPreference;
typedef void (* MetaPrefsChangedFunc) (MetaPreference pref,
@@ -114,6 +115,7 @@ void meta_prefs_change_workspace_name (int i,
const char* meta_prefs_get_cursor_theme (void);
int meta_prefs_get_cursor_size (void);
gboolean meta_prefs_get_compositing_manager (void);
+gboolean meta_prefs_get_force_fullscreen (void);
/**
* Sets whether the compositor is turned on.
@@ -122,6 +124,8 @@ gboolean meta_prefs_get_compositing_manager (void);
*/
void meta_prefs_set_compositing_manager (gboolean whether);
+void meta_prefs_set_force_fullscreen (gboolean whether);
+
/* 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
* system. It needs some more thought, perhaps after the current system
--
cgit v0.8.2

View File

@ -1,109 +0,0 @@
--- trunk/src/core/window-props.c 2009/03/11 14:21:33 4190
+++ trunk/src/core/window-props.c 2009/03/12 01:09:41 4191
@@ -73,12 +73,6 @@
ReloadValueFunc reload_func;
} MetaWindowPropHooks;
-static void init_prop_value (MetaDisplay *display,
- Atom property,
- MetaPropValue *value);
-static void reload_prop_value (MetaWindow *window,
- MetaPropValue *value,
- gboolean initial);
static MetaWindowPropHooks* find_hooks (MetaDisplay *display,
Atom property);
@@ -128,23 +122,34 @@
g_return_if_fail (n_properties > 0);
values = g_new0 (MetaPropValue, n_properties);
-
- i = 0;
- while (i < n_properties)
+
+ for (i=0; i<n_properties; i++)
{
- init_prop_value (window->display, properties[i], &values[i]);
- ++i;
+ MetaWindowPropHooks *hooks = find_hooks (window->display,
+ properties[i]);
+
+ if (!hooks || hooks->type == META_PROP_VALUE_INVALID)
+ {
+ values[i].type = META_PROP_VALUE_INVALID;
+ values[i].atom = None;
+ }
+ else
+ {
+ values[i].type = hooks->type;
+ values[i].atom = properties[i];
+ }
}
meta_prop_get_values (window->display, xwindow,
values, n_properties);
- i = 0;
- while (i < n_properties)
+ for (i=0; i<n_properties; i++)
{
- reload_prop_value (window, &values[i], initial);
-
- ++i;
+ MetaWindowPropHooks *hooks = find_hooks (window->display,
+ properties[i]);
+
+ if (hooks && hooks->reload_func != NULL)
+ (* hooks->reload_func) (window, &values[i], initial);
}
meta_prop_free_values (values, n_properties);
@@ -152,37 +157,6 @@
g_free (values);
}
-/* Fill in the MetaPropValue used to get the value of "property" */
-static void
-init_prop_value (MetaDisplay *display,
- Atom property,
- MetaPropValue *value)
-{
- MetaWindowPropHooks *hooks = find_hooks (display, property);
-
- if (!hooks || hooks->type == META_PROP_VALUE_INVALID)
- {
- value->type = META_PROP_VALUE_INVALID;
- value->atom = None;
- }
- else
- {
- value->type = hooks->type;
- value->atom = property;
- }
-}
-
-static void
-reload_prop_value (MetaWindow *window,
- MetaPropValue *value,
- gboolean initial)
-{
- MetaWindowPropHooks *hooks = find_hooks (window->display, value->atom);
-
- if (hooks && hooks->reload_func != NULL)
- (* hooks->reload_func) (window, value, initial);
-}
-
static void
reload_wm_client_machine (MetaWindow *window,
MetaPropValue *value,
@@ -1566,6 +1540,9 @@
display->prop_hooks_table = NULL;
}
+/**
+ * Finds the hooks for a particular property.
+ */
static MetaWindowPropHooks*
find_hooks (MetaDisplay *display,
Atom property)

View File

@ -2,8 +2,8 @@
Summary: Unobtrusive window manager
Name: metacity
Version: 2.28.0
Release: 15%{?dist}
Version: 2.28.1
Release: 1%{?dist}
URL: http://download.gnome.org/sources/metacity/
Source0: http://download.gnome.org/sources/metacity/2.28/metacity-%{version}.tar.bz2
# http://bugzilla.gnome.org/show_bug.cgi?id=558723
@ -12,12 +12,6 @@ Patch4: stop-spamming-xsession-errors.patch
Patch5: dnd-keynav.patch
# http://bugzilla.gnome.org/show_bug.cgi?id=588119
Patch6: Should-set-RestartStyleHint-to-RestartIfRunning-when.patch
# http://bugzilla.gnome.org/show_bug.cgi?id=593355
Patch7: 0001-bell-increase-bell-rate-limit-from-1-s-to-1-100ms.patch
# http://bugzilla.gnome.org/show_bug.cgi?id=593356
Patch8: 0001-sound-ask-libcanberra-to-cache-alert-desktop-switch-.patch
# http://bugzilla.gnome.org/show_bug.cgi?id=593358
Patch9: 0001-tooltip-set-window-type-hint-for-self-drawn-tooltips.patch
# http://bugzilla.gnome.org/show_bug.cgi?id=336750
Patch10: screenshot-forkbomb.patch
@ -25,17 +19,12 @@ Patch10: screenshot-forkbomb.patch
Patch11: workspaces.patch
Patch12: fresh-tooltips.patch
# https://bugzilla.gnome.org/show_bug.cgi?id=600864
# https://bugzilla.redhat.com/show_bug.cgi?id=533239
Patch13: metacity-dont-do-bad-stuff-on-sigterm.patch
# https://bugzilla.gnome.org/show_bug.cgi?id=567528
Patch14: Allow-explicit-raises-from-same-client-not-just-sa.patch
# https://bugzilla.gnome.org/show_bug.cgi?id=445447
Patch15: Allow-applications-to-raise-windows-when-raise_on_cl.patch
# https://bugzilla.gnome.org/show_bug.cgi?id=598995
Patch16: Dont-focus-ancestor-window-on-a-different-workspac.patch
# https://bugzilla.gnome.org/show_bug.cgi?id=599262
Patch17: Add-XFCE-Terminal-as-a-terminal.patch
# https://bugzilla.gnome.org/show_bug.cgi?id=599097
Patch18: For-mouse-and-sloppy-focus-return-to-mouse-mode-on.patch
# https://bugzilla.gnome.org/show_bug.cgi?id=599248
@ -44,16 +33,10 @@ Patch19: Add-nofocuswindows-preference-to-list-windows-that.patch
Patch20: Add-a-newwindowsalwaysontop-preference.patch
# https://bugzilla.gnome.org/show_bug.cgi?id=577576
Patch21: Dont-warn-about-a-missing-session-file.patch
# https://bugzilla.gnome.org/show_bug.cgi?id=530702
Patch22: cm-selection-timestamp.patch
# https://bugzilla.gnome.org/show_bug.cgi?id=598231
Patch23: metacity-2.28-visual-bell.patch
# https://bugzilla.gnome.org/show_bug.cgi?id=559816
Patch24: metacity-2.28-empty-keybindings.patch
# https://bugzilla.gnome.org/show_bug.cgi?id=604319
Patch25: metacity-2.28-xioerror-unknown-display.patch
# https://bugzilla.gnome.org/show_bug.cgi?id=604867
Patch26: metacity-2.28-IceCloseConnection.patch
License: GPLv2+
Group: User Interface/Desktops
@ -116,27 +99,19 @@ API. This package exists purely for technical reasons.
%patch4 -p1 -b .stop-spamming-xsession-errors
%patch5 -p1 -b .dnd-keynav
%patch6 -p1 -b .restart-if-running
%patch7 -p1 -b .bell
%patch8 -p1 -b .sound-cache
%patch9 -p1 -b .tooltip
%patch10 -p1 -b .screenshot-forkbomb
%patch11 -p1 -b .workspaces
%patch12 -p1 -b .fresh-tooltips
%patch13 -p1 -b .sigterm
%patch14 -p1 -b .raises-from-same-client
%patch15 -p1 -b .raise-on-click-stacking
%patch16 -p1 -b .focus-different-workspace
%patch17 -p1 -b .xfce-terminal
%patch18 -p1 -b .focus-on-motion
%patch19 -p1 -b .no-focus-windows
%patch20 -p1 -b .always-on-top
%patch21 -p1 -b .missing-session
%patch22 -p1 -b .cm-selection-timestamp
%patch23 -p1 -b .visual-bell
%patch24 -p1 -b .empty-keybindings
%patch25 -p1 -b .xioerror-unknown-display
%patch26 -p1 -b .IceCloseConnection
# force regeneration
rm src/metacity.schemas
@ -244,6 +219,9 @@ fi
%{_mandir}/man1/metacity-window-demo.1.gz
%changelog
* Wed Jan 27 2010 Owen Taylor <otaylor@redhat.com> - 2.28.1-1
- Update to 2.28.1, remove 7 patches now applied upstream
* Sun Jan 3 2010 Owen Taylor <otaylor@redhat.com> - 2.28.0-15
- Fix crash in _IceTransClose (rhbz 551994)
The previous patch for rhbz 539905 didn't actually fix the