From 81a8d621cbbe9cfc87db6473d1f654b1e24b4c33 Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Jun 18 2007 21:20:17 +0000 Subject: Update patches --- diff --git a/libwnck-2.19.2-appearance.patch b/libwnck-2.19.2-appearance.patch deleted file mode 100644 index 7489aac..0000000 --- a/libwnck-2.19.2-appearance.patch +++ /dev/null @@ -1,712 +0,0 @@ ---- libwnck-2.19.3.1/libwnck/xutils.h.appearance 2007-06-05 14:25:40.000000000 -0400 -+++ libwnck-2.19.3.1/libwnck/xutils.h 2007-06-05 22:44:08.000000000 -0400 -@@ -109,6 +109,16 @@ void _wnck_change_viewport (Screen *scre - int x, - int y); - -+void _wnck_change_opacity (Screen *screen, -+ Window xwindow, -+ guint32 opacity); -+void _wnck_change_saturation (Screen *screen, -+ Window xwindow, -+ guint32 saturation); -+void _wnck_change_brightness (Screen *screen, -+ Window xwindow, -+ guint32 brightness); -+ - char* _wnck_get_session_id (Window xwindow); - int _wnck_get_pid (Window xwindow); - char* _wnck_get_name (Window xwindow); -@@ -117,6 +127,12 @@ void _wnck_get_wmclass (Window - char **res_class, - char **res_name); - -+guint32 _wnck_get_opacity (Window xwindow); -+ -+guint32 _wnck_get_saturation (Window xwindow); -+ -+guint32 _wnck_get_brightness (Window xwindow); -+ - void _wnck_select_input (Window xwindow, - int mask); - ---- libwnck-2.19.3.1/libwnck/xutils.c.appearance 2007-06-05 14:25:40.000000000 -0400 -+++ libwnck-2.19.3.1/libwnck/xutils.c 2007-06-05 22:44:08.000000000 -0400 -@@ -1091,6 +1091,87 @@ _wnck_toggle_showing_desktop (Screen *s - &xev); - } - -+void -+_wnck_change_opacity (Screen *screen, -+ Window xwindow, -+ guint32 opacity) -+{ -+ XEvent xev; -+ -+ xev.xclient.type = ClientMessage; -+ xev.xclient.serial = 0; -+ xev.xclient.send_event = True; -+ xev.xclient.display = gdk_display; -+ xev.xclient.window = xwindow; -+ xev.xclient.message_type = _wnck_atom_get ("_NET_WM_WINDOW_OPACITY"); -+ xev.xclient.format = 32; -+ xev.xclient.data.l[0] = opacity; -+ xev.xclient.data.l[1] = 0; -+ xev.xclient.data.l[2] = 0; -+ xev.xclient.data.l[3] = 0; -+ xev.xclient.data.l[4] = 0; -+ -+ XSendEvent (gdk_display, -+ RootWindowOfScreen (screen), -+ False, -+ SubstructureRedirectMask | SubstructureNotifyMask, -+ &xev); -+} -+ -+void -+_wnck_change_saturation (Screen *screen, -+ Window xwindow, -+ guint32 saturation) -+{ -+ XEvent xev; -+ -+ xev.xclient.type = ClientMessage; -+ xev.xclient.serial = 0; -+ xev.xclient.send_event = True; -+ xev.xclient.display = gdk_display; -+ xev.xclient.window = xwindow; -+ xev.xclient.message_type = _wnck_atom_get ("_NET_WM_WINDOW_SATURATION"); -+ xev.xclient.format = 32; -+ xev.xclient.data.l[0] = saturation; -+ xev.xclient.data.l[1] = 0; -+ xev.xclient.data.l[2] = 0; -+ xev.xclient.data.l[3] = 0; -+ xev.xclient.data.l[4] = 0; -+ -+ XSendEvent (gdk_display, -+ RootWindowOfScreen (screen), -+ False, -+ SubstructureRedirectMask | SubstructureNotifyMask, -+ &xev); -+} -+ -+void -+_wnck_change_brightness (Screen *screen, -+ Window xwindow, -+ guint32 brightness) -+{ -+ XEvent xev; -+ -+ xev.xclient.type = ClientMessage; -+ xev.xclient.serial = 0; -+ xev.xclient.send_event = True; -+ xev.xclient.display = gdk_display; -+ xev.xclient.window = xwindow; -+ xev.xclient.message_type = _wnck_atom_get ("_NET_WM_WINDOW_BRIGHTNESS"); -+ xev.xclient.format = 32; -+ xev.xclient.data.l[0] = brightness; -+ xev.xclient.data.l[1] = 0; -+ xev.xclient.data.l[2] = 0; -+ xev.xclient.data.l[3] = 0; -+ xev.xclient.data.l[4] = 0; -+ -+ XSendEvent (gdk_display, -+ RootWindowOfScreen (screen), -+ False, -+ SubstructureRedirectMask | SubstructureNotifyMask, -+ &xev); -+} -+ - char* - _wnck_get_session_id (Window xwindow) - { -@@ -1211,6 +1292,45 @@ _wnck_get_wmclass (Window xwindow, - } - } - -+guint32 -+_wnck_get_opacity (Window xwindow) -+{ -+ int val; -+ -+ if (_wnck_get_cardinal (xwindow, -+ _wnck_atom_get ("_NET_WM_WINDOW_OPACITY"), -+ &val)) -+ return val; -+ -+ return G_MAXUINT32; -+} -+ -+guint32 -+_wnck_get_saturation (Window xwindow) -+{ -+ int val; -+ -+ if (_wnck_get_cardinal (xwindow, -+ _wnck_atom_get ("_NET_WM_WINDOW_SATURATION"), -+ &val)) -+ return val; -+ -+ return G_MAXUINT32; -+} -+ -+guint32 -+_wnck_get_brightness (Window xwindow) -+{ -+ int val; -+ -+ if (_wnck_get_cardinal (xwindow, -+ _wnck_atom_get ("_NET_WM_WINDOW_BRIGHTNESS"), -+ &val)) -+ return val; -+ -+ return G_MAXUINT32; -+} -+ - void - _wnck_select_input (Window xwindow, - int mask) ---- libwnck-2.19.3.1/libwnck/window.c.appearance 2007-06-05 14:25:40.000000000 -0400 -+++ libwnck-2.19.3.1/libwnck/window.c 2007-06-05 22:44:08.000000000 -0400 -@@ -91,6 +91,10 @@ struct _WnckWindowPrivate - char *res_class; - char *res_name; - -+ guint32 opacity; -+ guint32 saturation; -+ guint32 brightness; -+ - /* true if transient_for points to root window, - * not another app window - */ -@@ -134,6 +138,10 @@ struct _WnckWindowPrivate - guint need_update_startup_id : 1; - guint need_update_wmclass : 1; - guint need_update_wmhints : 1; -+ -+ guint need_update_opacity : 1; -+ guint need_update_saturation : 1; -+ guint need_update_brightness : 1; - - guint need_emit_name_changed : 1; - guint need_emit_icon_changed : 1; -@@ -146,6 +154,9 @@ enum { - ICON_CHANGED, - ACTIONS_CHANGED, - GEOMETRY_CHANGED, -+ OPACITY_CHANGED, -+ SATURATION_CHANGED, -+ BRIGHTNESS_CHANGED, - LAST_SIGNAL - }; - -@@ -174,6 +185,9 @@ static void update_wintype (WnckWindow - static void update_transient_for (WnckWindow *window); - static void update_startup_id (WnckWindow *window); - static void update_wmclass (WnckWindow *window); -+static void update_opacity (WnckWindow *window); -+static void update_saturation (WnckWindow *window); -+static void update_brightness (WnckWindow *window); - static void unqueue_update (WnckWindow *window); - static void queue_update (WnckWindow *window); - static void force_update_now (WnckWindow *window); -@@ -293,6 +307,33 @@ wnck_window_class_init (WnckWindowClass - NULL, NULL, - g_cclosure_marshal_VOID__VOID, - G_TYPE_NONE, 0); -+ -+ signals[OPACITY_CHANGED] = -+ g_signal_new ("opacity_changed", -+ G_OBJECT_CLASS_TYPE (object_class), -+ G_SIGNAL_RUN_LAST, -+ G_STRUCT_OFFSET (WnckWindowClass, opacity_changed), -+ NULL, NULL, -+ g_cclosure_marshal_VOID__VOID, -+ G_TYPE_NONE, 0); -+ -+ signals[SATURATION_CHANGED] = -+ g_signal_new ("saturation_changed", -+ G_OBJECT_CLASS_TYPE (object_class), -+ G_SIGNAL_RUN_LAST, -+ G_STRUCT_OFFSET (WnckWindowClass, saturation_changed), -+ NULL, NULL, -+ g_cclosure_marshal_VOID__VOID, -+ G_TYPE_NONE, 0); -+ -+ signals[BRIGHTNESS_CHANGED] = -+ g_signal_new ("brightness_changed", -+ G_OBJECT_CLASS_TYPE (object_class), -+ G_SIGNAL_RUN_LAST, -+ G_STRUCT_OFFSET (WnckWindowClass, brightness_changed), -+ NULL, NULL, -+ g_cclosure_marshal_VOID__VOID, -+ G_TYPE_NONE, 0); - } - - static void -@@ -421,6 +462,9 @@ _wnck_window_create (Window xwindow - window->priv->need_update_startup_id = TRUE; - window->priv->need_update_wmclass = TRUE; - window->priv->need_update_wmhints = TRUE; -+ window->priv->need_update_opacity = TRUE; -+ window->priv->need_update_saturation = TRUE; -+ window->priv->need_update_brightness = TRUE; - window->priv->need_emit_name_changed = FALSE; - window->priv->need_emit_icon_changed = FALSE; - force_update_now (window); -@@ -1634,6 +1678,77 @@ wnck_window_set_geometry (WnckWindow - gravity_and_flags, x, y, width, height); - } - -+guint -+wnck_window_get_opacity (WnckWindow *window) -+{ -+ guint64 o; -+ -+ g_return_val_if_fail (WNCK_IS_WINDOW (window), 0); -+ -+ o = ((guint64) window->priv->opacity * 1005) / G_MAXUINT32; -+ -+ return o / 10; -+} -+ -+void -+wnck_window_set_opacity (WnckWindow *window, -+ guint opacity) -+{ -+ g_return_if_fail (WNCK_IS_WINDOW (window)); -+ -+ _wnck_change_opacity (WNCK_SCREEN_XSCREEN (window->priv->screen), -+ wnck_window_get_xid (window), -+ (((guint64) opacity * G_MAXUINT32) / 100)); -+} -+ -+ -+guint -+wnck_window_get_saturation (WnckWindow *window) -+{ -+ guint64 o; -+ -+ g_return_val_if_fail (WNCK_IS_WINDOW (window), 0); -+ -+ o = ((guint64) window->priv->saturation * 1005) / G_MAXUINT32; -+ -+ return o / 10; -+} -+ -+void -+wnck_window_set_saturation (WnckWindow *window, -+ guint saturation) -+{ -+ g_return_if_fail (WNCK_IS_WINDOW (window)); -+ -+ _wnck_change_saturation (WNCK_SCREEN_XSCREEN (window->priv->screen), -+ wnck_window_get_xid (window), -+ (((guint64) saturation * G_MAXUINT32) / 100)); -+} -+ -+ -+guint -+wnck_window_get_brightness (WnckWindow *window) -+{ -+ guint64 o; -+ -+ g_return_val_if_fail (WNCK_IS_WINDOW (window), 0); -+ -+ o = ((guint64) window->priv->brightness * 1005) / G_MAXUINT32; -+ -+ return o / 10; -+} -+ -+void -+wnck_window_set_brightness (WnckWindow *window, -+ guint brightness) -+{ -+ g_return_if_fail (WNCK_IS_WINDOW (window)); -+ -+ _wnck_change_brightness (WNCK_SCREEN_XSCREEN (window->priv->screen), -+ wnck_window_get_xid (window), -+ (((guint64) brightness * G_MAXUINT32) / 100)); -+} -+ - /** - * wnck_window_is_visible_on_workspace: - * @window: a #WnckWindow -@@ -1867,6 +1982,26 @@ _wnck_window_process_property_notify (Wn - window->priv->need_update_wmhints = TRUE; - queue_update (window); - } -+ else if (xevent->xproperty.atom == -+ _wnck_atom_get ("_NET_WM_WINDOW_OPACITY")) -+ { -+ window->priv->need_update_opacity = TRUE; -+ queue_update (window); -+ } -+ -+ else if (xevent->xproperty.atom == -+ _wnck_atom_get ("_NET_WM_WINDOW_SATURATION")) -+ { -+ window->priv->need_update_saturation = TRUE; -+ queue_update (window); -+ } -+ -+ else if (xevent->xproperty.atom == -+ _wnck_atom_get ("_NET_WM_WINDOW_BRIGHTNESS")) -+ { -+ window->priv->need_update_brightness = TRUE; -+ queue_update (window); -+ } - } - - void -@@ -2389,6 +2524,39 @@ update_wmhints (WnckWindow *window) - } - - static void -+update_opacity (WnckWindow *window) -+{ -+ if (!window->priv->need_update_opacity) -+ return; -+ -+ window->priv->need_update_opacity = FALSE; -+ -+ window->priv->opacity = _wnck_get_opacity (window->priv->xwindow); -+} -+ -+static void -+update_saturation (WnckWindow *window) -+{ -+ if (!window->priv->need_update_saturation) -+ return; -+ -+ window->priv->need_update_saturation = FALSE; -+ -+ window->priv->saturation = _wnck_get_saturation (window->priv->xwindow); -+} -+ -+static void -+update_brightness (WnckWindow *window) -+{ -+ if (!window->priv->need_update_brightness) -+ return; -+ -+ window->priv->need_update_brightness = FALSE; -+ -+ window->priv->brightness = _wnck_get_brightness (window->priv->xwindow); -+} -+ -+static void - force_update_now (WnckWindow *window) - { - WnckWindowState old_state; -@@ -2423,6 +2591,9 @@ force_update_now (WnckWindow *window) - */ - update_workspace (window); /* emits signals */ - update_actions (window); -+ update_opacity (window); -+ update_saturation (window); -+ update_brightness (window); - - get_icons (window); - ---- libwnck-2.19.3.1/libwnck/window.h.appearance 2007-06-05 14:25:40.000000000 -0400 -+++ libwnck-2.19.3.1/libwnck/window.h 2007-06-05 22:45:52.000000000 -0400 -@@ -151,6 +151,15 @@ struct _WnckWindowClass - /* Changed size/position */ - void (* geometry_changed) (WnckWindow *window); - -+ /* Changed opacity */ -+ void (* opacity_changed) (WnckWindow *window); -+ -+ /* Changed saturation */ -+ void (* saturation_changed) (WnckWindow *window); -+ -+ /* Changed brightness */ -+ void (* brightness_changed) (WnckWindow *window); -+ - /* Padding for future expansion */ - void (* pad1) (void); - void (* pad2) (void); -@@ -271,6 +280,15 @@ void wnck_window_set_geometry (WnckWindo - int width, - int height); - -+guint wnck_window_get_opacity (WnckWindow *window); -+void wnck_window_set_opacity (WnckWindow *window, guint opacity); -+ -+guint wnck_window_get_saturation (WnckWindow *window); -+void wnck_window_set_saturation (WnckWindow *window, guint saturation); -+ -+guint wnck_window_get_brightness (WnckWindow *window); -+void wnck_window_set_brightness (WnckWindow *window, guint brightness); -+ - gboolean wnck_window_is_visible_on_workspace (WnckWindow *window, - WnckWorkspace *workspace); - gboolean wnck_window_is_on_workspace (WnckWindow *window, ---- libwnck-2.19.3.1/libwnck/window-action-menu.c.appearance 2007-06-05 14:25:40.000000000 -0400 -+++ libwnck-2.19.3.1/libwnck/window-action-menu.c 2007-06-05 22:44:08.000000000 -0400 -@@ -36,6 +36,10 @@ typedef enum - ABOVE, - MOVE, - RESIZE, -+ CHANGE_OPACITY, -+ CHANGE_SATURATION, -+ CHANGE_BRIGHTNESS, -+ RESET, - PIN, - UNPIN, - LEFT, -@@ -56,6 +60,11 @@ struct _ActionMenuData - GtkWidget *above_item; - GtkWidget *move_item; - GtkWidget *resize_item; -+ GtkWidget *appearance_item; -+ GtkWidget *opacity_item; -+ GtkWidget *saturation_item; -+ GtkWidget *brightness_item; -+ GtkWidget *reset_item; - GtkWidget *close_item; - GtkWidget *workspace_separator; - GtkWidget *pin_item; -@@ -158,6 +167,46 @@ item_activated_callback (GtkWidget *menu - case RESIZE: - wnck_window_keyboard_size (amd->window); - break; -+ case CHANGE_OPACITY: -+ { -+ int opacity_value; -+ -+ opacity_value = -+ GPOINTER_TO_INT (g_object_get_data (G_OBJECT (menu_item), -+ "opacity")); -+ -+ wnck_window_set_opacity (amd->window, opacity_value); -+ break; -+ } -+ case CHANGE_SATURATION: -+ { -+ int saturation_value; -+ -+ saturation_value = -+ GPOINTER_TO_INT (g_object_get_data (G_OBJECT (menu_item), -+ "saturation")); -+ -+ wnck_window_set_saturation (amd->window, saturation_value); -+ break; -+ } -+ case CHANGE_BRIGHTNESS: -+ { -+ int brightness_value; -+ -+ brightness_value = -+ GPOINTER_TO_INT (g_object_get_data (G_OBJECT (menu_item), -+ "brightness")); -+ -+ wnck_window_set_brightness (amd->window, brightness_value); -+ break; -+ } -+ case RESET: -+ { -+ wnck_window_set_brightness (amd->window, 100); -+ wnck_window_set_saturation (amd->window, 100); -+ wnck_window_set_opacity (amd->window, 100); -+ break; -+ } - case PIN: - wnck_window_unpin (amd->window); - break; -@@ -257,6 +306,10 @@ update_menu_state (ActionMenuData *amd) - WnckWindowActions actions; - WnckScreen *screen; - -+ guint present_opacity; -+ guint present_saturation; -+ guint present_brightness; -+ - amd->idle_handler = 0; - - actions = wnck_window_get_actions (amd->window); -@@ -304,6 +357,19 @@ update_menu_state (ActionMenuData *amd) - gtk_widget_set_sensitive (amd->above_item, - (actions & WNCK_WINDOW_ACTION_ABOVE) != 0); - -+ present_opacity = wnck_window_get_opacity (amd->window); -+ present_saturation = wnck_window_get_saturation (amd->window); -+ present_brightness = wnck_window_get_brightness (amd->window); -+ -+ if (present_opacity == 100 && present_saturation == 100 && present_brightness == 100) -+ { -+ gtk_widget_set_sensitive (amd->reset_item, FALSE); -+ } -+ else -+ { -+ gtk_widget_set_sensitive (amd->reset_item, TRUE); -+ } -+ - g_signal_handlers_block_by_func (G_OBJECT (amd->pin_item), - item_activated_callback, - GINT_TO_POINTER (PIN)); -@@ -560,7 +626,7 @@ get_workspace_name_with_accel (WnckWindo - GtkWidget* - wnck_create_window_action_menu (WnckWindow *window) - { -- GtkWidget *menu, *submenu; -+ GtkWidget *menu, *submenu, *submenu2; - ActionMenuData *amd; - GtkWidget *separator; - int num_workspaces, present_workspace, i; -@@ -726,6 +792,154 @@ wnck_create_window_action_menu (WnckWind - g_free (label); - } - -+ if (wnck_screen_net_wm_supports (wnck_window_get_screen (amd->window), -+ "_NET_WM_WINDOW_OPACITY")) -+ { -+ -+ amd->appearance_item = gtk_menu_item_new_with_mnemonic (_("_Appearance")); -+ gtk_widget_show (amd->appearance_item); -+ -+ submenu = gtk_menu_new (); -+ gtk_menu_item_set_submenu (GTK_MENU_ITEM (amd->appearance_item), -+ submenu); -+ -+ gtk_menu_shell_append (GTK_MENU_SHELL (menu), amd->appearance_item); -+ -+ } -+ -+ if (wnck_screen_net_wm_supports (wnck_window_get_screen (amd->window), -+ "_NET_WM_WINDOW_OPACITY")) -+ { -+ guint present_opacity; -+ gint j; -+ -+ amd->opacity_item = gtk_menu_item_new_with_mnemonic (_("_Opacity")); -+ gtk_widget_show (amd->opacity_item); -+ -+ submenu2 = gtk_menu_new (); -+ gtk_menu_item_set_submenu (GTK_MENU_ITEM (amd->opacity_item), -+ submenu2); -+ -+ gtk_menu_shell_append (GTK_MENU_SHELL (submenu), amd->opacity_item); -+ -+ present_opacity = wnck_window_get_opacity (window); -+ for (j = 0; j < 4; j++) -+ { -+ GtkWidget *item; -+ gchar *label; -+ guint o; -+ -+ label = g_strdup_printf ("%d%%", (j + 1) * 25); -+ -+ item = make_menu_item (amd, CHANGE_OPACITY); -+ -+ o = (j + 1) * 25; -+ g_object_set_data (G_OBJECT (item), "opacity", GINT_TO_POINTER (o)); -+ -+ if (o == present_opacity) -+ gtk_widget_set_sensitive (item, FALSE); -+ -+ gtk_menu_shell_append (GTK_MENU_SHELL (submenu2), item); -+ -+ set_item_text (item, label); -+ set_item_stock (item, NULL); -+ -+ g_free (label); -+ } -+ } -+ -+ if (wnck_screen_net_wm_supports (wnck_window_get_screen (amd->window), -+ "_NET_WM_WINDOW_SATURATION")) -+ { -+ guint present_saturation; -+ gint j; -+ -+ amd->saturation_item = gtk_menu_item_new_with_mnemonic (_("_Saturation")); -+ gtk_widget_show (amd->saturation_item); -+ -+ submenu2 = gtk_menu_new (); -+ gtk_menu_item_set_submenu (GTK_MENU_ITEM (amd->saturation_item), -+ submenu2); -+ -+ gtk_menu_shell_append (GTK_MENU_SHELL (submenu), amd->saturation_item); -+ -+ present_saturation = wnck_window_get_saturation (window); -+ for (j = 0; j < 4; j++) -+ { -+ GtkWidget *item; -+ gchar *label; -+ guint o; -+ -+ label = g_strdup_printf ("%d%%", (j + 1) * 25); -+ -+ item = make_menu_item (amd, CHANGE_SATURATION); -+ -+ o = (j + 1) * 25; -+ g_object_set_data (G_OBJECT (item), "saturation", GINT_TO_POINTER (o)); -+ -+ if (o == present_saturation) -+ gtk_widget_set_sensitive (item, FALSE); -+ -+ gtk_menu_shell_append (GTK_MENU_SHELL (submenu2), item); -+ -+ set_item_text (item, label); -+ set_item_stock (item, NULL); -+ -+ g_free (label); -+ } -+ } -+ -+ if (wnck_screen_net_wm_supports (wnck_window_get_screen (amd->window), -+ "_NET_WM_WINDOW_BRIGHTNESS")) -+ { -+ guint present_brightness; -+ gint j; -+ -+ amd->brightness_item = gtk_menu_item_new_with_mnemonic (_("_Brightness")); -+ gtk_widget_show (amd->brightness_item); -+ -+ submenu2 = gtk_menu_new (); -+ gtk_menu_item_set_submenu (GTK_MENU_ITEM (amd->brightness_item), -+ submenu2); -+ -+ gtk_menu_shell_append (GTK_MENU_SHELL (submenu), amd->brightness_item); -+ -+ present_brightness = wnck_window_get_brightness (window); -+ for (j = 0; j < 4; j++) -+ { -+ GtkWidget *item; -+ gchar *label; -+ guint o; -+ -+ label = g_strdup_printf ("%d%%", (j + 1) * 25); -+ -+ item = make_menu_item (amd, CHANGE_BRIGHTNESS); -+ -+ o = (j + 1) * 25; -+ g_object_set_data (G_OBJECT (item), "brightness", GINT_TO_POINTER (o)); -+ -+ if (o == present_brightness) -+ gtk_widget_set_sensitive (item, FALSE); -+ -+ gtk_menu_shell_append (GTK_MENU_SHELL (submenu2), item); -+ -+ set_item_text (item, label); -+ set_item_stock (item, NULL); -+ -+ g_free (label); -+ } -+ } -+ -+ if (wnck_screen_net_wm_supports (wnck_window_get_screen (amd->window), -+ "_NET_WM_WINDOW_OPACITY")) -+ { -+ amd->reset_item = make_menu_item (amd, RESET); -+ gtk_menu_shell_append (GTK_MENU_SHELL (submenu), amd->reset_item); -+ -+ set_item_text (amd->reset_item, _("_Reset settings")); -+ } -+ -+ - separator = gtk_separator_menu_item_new (); - gtk_widget_show (separator); - gtk_menu_shell_append (GTK_MENU_SHELL (menu), diff --git a/libwnck-2.19.4-appearance.patch b/libwnck-2.19.4-appearance.patch new file mode 100644 index 0000000..c2850ae --- /dev/null +++ b/libwnck-2.19.4-appearance.patch @@ -0,0 +1,712 @@ +--- libwnck-2.19.4/libwnck/xutils.h.appearance 2007-06-18 15:59:14.000000000 -0400 ++++ libwnck-2.19.4/libwnck/xutils.h 2007-06-18 17:08:26.000000000 -0400 +@@ -110,6 +110,16 @@ void _wnck_change_viewport (Screen *scre + int x, + int y); + ++void _wnck_change_opacity (Screen *screen, ++ Window xwindow, ++ guint32 opacity); ++void _wnck_change_saturation (Screen *screen, ++ Window xwindow, ++ guint32 saturation); ++void _wnck_change_brightness (Screen *screen, ++ Window xwindow, ++ guint32 brightness); ++ + char* _wnck_get_session_id (Window xwindow); + int _wnck_get_pid (Window xwindow); + char* _wnck_get_name (Window xwindow); +@@ -124,6 +134,12 @@ gboolean _wnck_get_frame_extents (Windo + int *top_frame, + int *bottom_frame); + ++guint32 _wnck_get_opacity (Window xwindow); ++ ++guint32 _wnck_get_saturation (Window xwindow); ++ ++guint32 _wnck_get_brightness (Window xwindow); ++ + void _wnck_select_input (Window xwindow, + int mask); + +--- libwnck-2.19.4/libwnck/xutils.c.appearance 2007-06-18 15:59:14.000000000 -0400 ++++ libwnck-2.19.4/libwnck/xutils.c 2007-06-18 17:08:26.000000000 -0400 +@@ -1092,6 +1092,87 @@ _wnck_toggle_showing_desktop (Screen *s + &xev); + } + ++void ++_wnck_change_opacity (Screen *screen, ++ Window xwindow, ++ guint32 opacity) ++{ ++ XEvent xev; ++ ++ xev.xclient.type = ClientMessage; ++ xev.xclient.serial = 0; ++ xev.xclient.send_event = True; ++ xev.xclient.display = gdk_display; ++ xev.xclient.window = xwindow; ++ xev.xclient.message_type = _wnck_atom_get ("_NET_WM_WINDOW_OPACITY"); ++ xev.xclient.format = 32; ++ xev.xclient.data.l[0] = opacity; ++ xev.xclient.data.l[1] = 0; ++ xev.xclient.data.l[2] = 0; ++ xev.xclient.data.l[3] = 0; ++ xev.xclient.data.l[4] = 0; ++ ++ XSendEvent (gdk_display, ++ RootWindowOfScreen (screen), ++ False, ++ SubstructureRedirectMask | SubstructureNotifyMask, ++ &xev); ++} ++ ++void ++_wnck_change_saturation (Screen *screen, ++ Window xwindow, ++ guint32 saturation) ++{ ++ XEvent xev; ++ ++ xev.xclient.type = ClientMessage; ++ xev.xclient.serial = 0; ++ xev.xclient.send_event = True; ++ xev.xclient.display = gdk_display; ++ xev.xclient.window = xwindow; ++ xev.xclient.message_type = _wnck_atom_get ("_NET_WM_WINDOW_SATURATION"); ++ xev.xclient.format = 32; ++ xev.xclient.data.l[0] = saturation; ++ xev.xclient.data.l[1] = 0; ++ xev.xclient.data.l[2] = 0; ++ xev.xclient.data.l[3] = 0; ++ xev.xclient.data.l[4] = 0; ++ ++ XSendEvent (gdk_display, ++ RootWindowOfScreen (screen), ++ False, ++ SubstructureRedirectMask | SubstructureNotifyMask, ++ &xev); ++} ++ ++void ++_wnck_change_brightness (Screen *screen, ++ Window xwindow, ++ guint32 brightness) ++{ ++ XEvent xev; ++ ++ xev.xclient.type = ClientMessage; ++ xev.xclient.serial = 0; ++ xev.xclient.send_event = True; ++ xev.xclient.display = gdk_display; ++ xev.xclient.window = xwindow; ++ xev.xclient.message_type = _wnck_atom_get ("_NET_WM_WINDOW_BRIGHTNESS"); ++ xev.xclient.format = 32; ++ xev.xclient.data.l[0] = brightness; ++ xev.xclient.data.l[1] = 0; ++ xev.xclient.data.l[2] = 0; ++ xev.xclient.data.l[3] = 0; ++ xev.xclient.data.l[4] = 0; ++ ++ XSendEvent (gdk_display, ++ RootWindowOfScreen (screen), ++ False, ++ SubstructureRedirectMask | SubstructureNotifyMask, ++ &xev); ++} ++ + char* + _wnck_get_session_id (Window xwindow) + { +@@ -1266,6 +1347,45 @@ _wnck_get_frame_extents (Window xwindow + return retval; + } + ++guint32 ++_wnck_get_opacity (Window xwindow) ++{ ++ int val; ++ ++ if (_wnck_get_cardinal (xwindow, ++ _wnck_atom_get ("_NET_WM_WINDOW_OPACITY"), ++ &val)) ++ return val; ++ ++ return G_MAXUINT32; ++} ++ ++guint32 ++_wnck_get_saturation (Window xwindow) ++{ ++ int val; ++ ++ if (_wnck_get_cardinal (xwindow, ++ _wnck_atom_get ("_NET_WM_WINDOW_SATURATION"), ++ &val)) ++ return val; ++ ++ return G_MAXUINT32; ++} ++ ++guint32 ++_wnck_get_brightness (Window xwindow) ++{ ++ int val; ++ ++ if (_wnck_get_cardinal (xwindow, ++ _wnck_atom_get ("_NET_WM_WINDOW_BRIGHTNESS"), ++ &val)) ++ return val; ++ ++ return G_MAXUINT32; ++} ++ + void + _wnck_select_input (Window xwindow, + int mask) +--- libwnck-2.19.4/libwnck/window.c.appearance 2007-06-18 15:59:14.000000000 -0400 ++++ libwnck-2.19.4/libwnck/window.c 2007-06-18 17:11:29.000000000 -0400 +@@ -107,6 +107,10 @@ struct _WnckWindowPrivate + char *res_class; + char *res_name; + ++ guint32 opacity; ++ guint32 saturation; ++ guint32 brightness; ++ + /* true if transient_for points to root window, + * not another app window + */ +@@ -152,6 +156,10 @@ struct _WnckWindowPrivate + guint need_update_wmhints : 1; + guint need_update_frame_extents : 1; + ++ guint need_update_opacity : 1; ++ guint need_update_saturation : 1; ++ guint need_update_brightness : 1; ++ + guint need_emit_name_changed : 1; + guint need_emit_icon_changed : 1; + }; +@@ -165,6 +173,9 @@ enum { + ICON_CHANGED, + ACTIONS_CHANGED, + GEOMETRY_CHANGED, ++ OPACITY_CHANGED, ++ SATURATION_CHANGED, ++ BRIGHTNESS_CHANGED, + LAST_SIGNAL + }; + +@@ -193,6 +204,9 @@ static void update_wintype (WnckWindow + static void update_transient_for (WnckWindow *window); + static void update_startup_id (WnckWindow *window); + static void update_wmclass (WnckWindow *window); ++static void update_opacity (WnckWindow *window); ++static void update_saturation (WnckWindow *window); ++static void update_brightness (WnckWindow *window); + static void update_frame_extents (WnckWindow *window); + static void unqueue_update (WnckWindow *window); + static void queue_update (WnckWindow *window); +@@ -325,6 +339,33 @@ wnck_window_class_init (WnckWindowClass + NULL, NULL, + g_cclosure_marshal_VOID__VOID, + G_TYPE_NONE, 0); ++ ++ signals[OPACITY_CHANGED] = ++ g_signal_new ("opacity_changed", ++ G_OBJECT_CLASS_TYPE (object_class), ++ G_SIGNAL_RUN_LAST, ++ G_STRUCT_OFFSET (WnckWindowClass, opacity_changed), ++ NULL, NULL, ++ g_cclosure_marshal_VOID__VOID, ++ G_TYPE_NONE, 0); ++ ++ signals[SATURATION_CHANGED] = ++ g_signal_new ("saturation_changed", ++ G_OBJECT_CLASS_TYPE (object_class), ++ G_SIGNAL_RUN_LAST, ++ G_STRUCT_OFFSET (WnckWindowClass, saturation_changed), ++ NULL, NULL, ++ g_cclosure_marshal_VOID__VOID, ++ G_TYPE_NONE, 0); ++ ++ signals[BRIGHTNESS_CHANGED] = ++ g_signal_new ("brightness_changed", ++ G_OBJECT_CLASS_TYPE (object_class), ++ G_SIGNAL_RUN_LAST, ++ G_STRUCT_OFFSET (WnckWindowClass, brightness_changed), ++ NULL, NULL, ++ g_cclosure_marshal_VOID__VOID, ++ G_TYPE_NONE, 0); + } + + static void +@@ -460,6 +501,9 @@ _wnck_window_create (Window xwindow + window->priv->need_update_wmclass = TRUE; + window->priv->need_update_wmhints = TRUE; + window->priv->need_update_frame_extents = TRUE; ++ window->priv->need_update_opacity = TRUE; ++ window->priv->need_update_saturation = TRUE; ++ window->priv->need_update_brightness = TRUE; + window->priv->need_emit_name_changed = FALSE; + window->priv->need_emit_icon_changed = FALSE; + force_update_now (window); +@@ -2083,6 +2127,77 @@ wnck_window_set_geometry (WnckWindow + gravity_and_flags, x, y, width, height); + } + ++guint ++wnck_window_get_opacity (WnckWindow *window) ++{ ++ guint64 o; ++ ++ g_return_val_if_fail (WNCK_IS_WINDOW (window), 0); ++ ++ o = ((guint64) window->priv->opacity * 1005) / G_MAXUINT32; ++ ++ return o / 10; ++} ++ ++void ++wnck_window_set_opacity (WnckWindow *window, ++ guint opacity) ++{ ++ g_return_if_fail (WNCK_IS_WINDOW (window)); ++ ++ _wnck_change_opacity (WNCK_SCREEN_XSCREEN (window->priv->screen), ++ wnck_window_get_xid (window), ++ (((guint64) opacity * G_MAXUINT32) / 100)); ++} ++ ++ ++guint ++wnck_window_get_saturation (WnckWindow *window) ++{ ++ guint64 o; ++ ++ g_return_val_if_fail (WNCK_IS_WINDOW (window), 0); ++ ++ o = ((guint64) window->priv->saturation * 1005) / G_MAXUINT32; ++ ++ return o / 10; ++} ++ ++void ++wnck_window_set_saturation (WnckWindow *window, ++ guint saturation) ++{ ++ g_return_if_fail (WNCK_IS_WINDOW (window)); ++ ++ _wnck_change_saturation (WNCK_SCREEN_XSCREEN (window->priv->screen), ++ wnck_window_get_xid (window), ++ (((guint64) saturation * G_MAXUINT32) / 100)); ++} ++ ++ ++guint ++wnck_window_get_brightness (WnckWindow *window) ++{ ++ guint64 o; ++ ++ g_return_val_if_fail (WNCK_IS_WINDOW (window), 0); ++ ++ o = ((guint64) window->priv->brightness * 1005) / G_MAXUINT32; ++ ++ return o / 10; ++} ++ ++void ++wnck_window_set_brightness (WnckWindow *window, ++ guint brightness) ++{ ++ g_return_if_fail (WNCK_IS_WINDOW (window)); ++ ++ _wnck_change_brightness (WNCK_SCREEN_XSCREEN (window->priv->screen), ++ wnck_window_get_xid (window), ++ (((guint64) brightness * G_MAXUINT32) / 100)); ++} ++ + /** + * wnck_window_is_visible_on_workspace: + * @window: a #WnckWindow. +@@ -2328,6 +2443,26 @@ _wnck_window_process_property_notify (Wn + window->priv->need_update_frame_extents = TRUE; + queue_update (window); + } ++ else if (xevent->xproperty.atom == ++ _wnck_atom_get ("_NET_WM_WINDOW_OPACITY")) ++ { ++ window->priv->need_update_opacity = TRUE; ++ queue_update (window); ++ } ++ ++ else if (xevent->xproperty.atom == ++ _wnck_atom_get ("_NET_WM_WINDOW_SATURATION")) ++ { ++ window->priv->need_update_saturation = TRUE; ++ queue_update (window); ++ } ++ ++ else if (xevent->xproperty.atom == ++ _wnck_atom_get ("_NET_WM_WINDOW_BRIGHTNESS")) ++ { ++ window->priv->need_update_brightness = TRUE; ++ queue_update (window); ++ } + } + + void +@@ -2879,6 +3014,39 @@ update_frame_extents (WnckWindow *window + } + + static void ++update_opacity (WnckWindow *window) ++{ ++ if (!window->priv->need_update_opacity) ++ return; ++ ++ window->priv->need_update_opacity = FALSE; ++ ++ window->priv->opacity = _wnck_get_opacity (window->priv->xwindow); ++} ++ ++static void ++update_saturation (WnckWindow *window) ++{ ++ if (!window->priv->need_update_saturation) ++ return; ++ ++ window->priv->need_update_saturation = FALSE; ++ ++ window->priv->saturation = _wnck_get_saturation (window->priv->xwindow); ++} ++ ++static void ++update_brightness (WnckWindow *window) ++{ ++ if (!window->priv->need_update_brightness) ++ return; ++ ++ window->priv->need_update_brightness = FALSE; ++ ++ window->priv->brightness = _wnck_get_brightness (window->priv->xwindow); ++} ++ ++static void + force_update_now (WnckWindow *window) + { + WnckWindowState old_state; +@@ -2914,6 +3082,9 @@ force_update_now (WnckWindow *window) + update_workspace (window); /* emits signals */ + update_actions (window); + update_frame_extents (window); /* emits signals */ ++ update_opacity (window); ++ update_saturation (window); ++ update_brightness (window); + + get_icons (window); + +--- libwnck-2.19.4/libwnck/window.h.appearance 2007-06-18 15:59:14.000000000 -0400 ++++ libwnck-2.19.4/libwnck/window.h 2007-06-18 17:08:26.000000000 -0400 +@@ -268,6 +268,15 @@ struct _WnckWindowClass + /* Changed size/position */ + void (* geometry_changed) (WnckWindow *window); + ++ /* Changed opacity */ ++ void (* opacity_changed) (WnckWindow *window); ++ ++ /* Changed saturation */ ++ void (* saturation_changed) (WnckWindow *window); ++ ++ /* Changed brightness */ ++ void (* brightness_changed) (WnckWindow *window); ++ + /* Padding for future expansion */ + void (* pad1) (void); + void (* pad2) (void); +@@ -393,6 +402,15 @@ void wnck_window_set_geometry (WnckWindo + int width, + int height); + ++guint wnck_window_get_opacity (WnckWindow *window); ++void wnck_window_set_opacity (WnckWindow *window, guint opacity); ++ ++guint wnck_window_get_saturation (WnckWindow *window); ++void wnck_window_set_saturation (WnckWindow *window, guint saturation); ++ ++guint wnck_window_get_brightness (WnckWindow *window); ++void wnck_window_set_brightness (WnckWindow *window, guint brightness); ++ + gboolean wnck_window_is_visible_on_workspace (WnckWindow *window, + WnckWorkspace *workspace); + gboolean wnck_window_is_on_workspace (WnckWindow *window, +--- libwnck-2.19.4/libwnck/window-action-menu.c.appearance 2007-06-18 15:59:14.000000000 -0400 ++++ libwnck-2.19.4/libwnck/window-action-menu.c 2007-06-18 17:08:26.000000000 -0400 +@@ -48,6 +48,10 @@ typedef enum + ABOVE, + MOVE, + RESIZE, ++ CHANGE_OPACITY, ++ CHANGE_SATURATION, ++ CHANGE_BRIGHTNESS, ++ RESET, + PIN, + UNPIN, + LEFT, +@@ -68,6 +72,11 @@ struct _ActionMenuData + GtkWidget *above_item; + GtkWidget *move_item; + GtkWidget *resize_item; ++ GtkWidget *appearance_item; ++ GtkWidget *opacity_item; ++ GtkWidget *saturation_item; ++ GtkWidget *brightness_item; ++ GtkWidget *reset_item; + GtkWidget *close_item; + GtkWidget *workspace_separator; + GtkWidget *pin_item; +@@ -170,6 +179,46 @@ item_activated_callback (GtkWidget *menu + case RESIZE: + wnck_window_keyboard_size (amd->window); + break; ++ case CHANGE_OPACITY: ++ { ++ int opacity_value; ++ ++ opacity_value = ++ GPOINTER_TO_INT (g_object_get_data (G_OBJECT (menu_item), ++ "opacity")); ++ ++ wnck_window_set_opacity (amd->window, opacity_value); ++ break; ++ } ++ case CHANGE_SATURATION: ++ { ++ int saturation_value; ++ ++ saturation_value = ++ GPOINTER_TO_INT (g_object_get_data (G_OBJECT (menu_item), ++ "saturation")); ++ ++ wnck_window_set_saturation (amd->window, saturation_value); ++ break; ++ } ++ case CHANGE_BRIGHTNESS: ++ { ++ int brightness_value; ++ ++ brightness_value = ++ GPOINTER_TO_INT (g_object_get_data (G_OBJECT (menu_item), ++ "brightness")); ++ ++ wnck_window_set_brightness (amd->window, brightness_value); ++ break; ++ } ++ case RESET: ++ { ++ wnck_window_set_brightness (amd->window, 100); ++ wnck_window_set_saturation (amd->window, 100); ++ wnck_window_set_opacity (amd->window, 100); ++ break; ++ } + case PIN: + wnck_window_unpin (amd->window); + break; +@@ -269,6 +318,10 @@ update_menu_state (ActionMenuData *amd) + WnckWindowActions actions; + WnckScreen *screen; + ++ guint present_opacity; ++ guint present_saturation; ++ guint present_brightness; ++ + amd->idle_handler = 0; + + actions = wnck_window_get_actions (amd->window); +@@ -316,6 +369,19 @@ update_menu_state (ActionMenuData *amd) + gtk_widget_set_sensitive (amd->above_item, + (actions & WNCK_WINDOW_ACTION_ABOVE) != 0); + ++ present_opacity = wnck_window_get_opacity (amd->window); ++ present_saturation = wnck_window_get_saturation (amd->window); ++ present_brightness = wnck_window_get_brightness (amd->window); ++ ++ if (present_opacity == 100 && present_saturation == 100 && present_brightness == 100) ++ { ++ gtk_widget_set_sensitive (amd->reset_item, FALSE); ++ } ++ else ++ { ++ gtk_widget_set_sensitive (amd->reset_item, TRUE); ++ } ++ + g_signal_handlers_block_by_func (G_OBJECT (amd->pin_item), + item_activated_callback, + GINT_TO_POINTER (PIN)); +@@ -573,7 +639,7 @@ get_workspace_name_with_accel (WnckWindo + GtkWidget* + wnck_create_window_action_menu (WnckWindow *window) + { +- GtkWidget *menu, *submenu; ++ GtkWidget *menu, *submenu, *submenu2; + ActionMenuData *amd; + GtkWidget *separator; + int num_workspaces, window_space, i; +@@ -741,6 +807,154 @@ wnck_create_window_action_menu (WnckWind + g_free (label); + } + ++ if (wnck_screen_net_wm_supports (wnck_window_get_screen (amd->window), ++ "_NET_WM_WINDOW_OPACITY")) ++ { ++ ++ amd->appearance_item = gtk_menu_item_new_with_mnemonic (_("_Appearance")); ++ gtk_widget_show (amd->appearance_item); ++ ++ submenu = gtk_menu_new (); ++ gtk_menu_item_set_submenu (GTK_MENU_ITEM (amd->appearance_item), ++ submenu); ++ ++ gtk_menu_shell_append (GTK_MENU_SHELL (menu), amd->appearance_item); ++ ++ } ++ ++ if (wnck_screen_net_wm_supports (wnck_window_get_screen (amd->window), ++ "_NET_WM_WINDOW_OPACITY")) ++ { ++ guint present_opacity; ++ gint j; ++ ++ amd->opacity_item = gtk_menu_item_new_with_mnemonic (_("_Opacity")); ++ gtk_widget_show (amd->opacity_item); ++ ++ submenu2 = gtk_menu_new (); ++ gtk_menu_item_set_submenu (GTK_MENU_ITEM (amd->opacity_item), ++ submenu2); ++ ++ gtk_menu_shell_append (GTK_MENU_SHELL (submenu), amd->opacity_item); ++ ++ present_opacity = wnck_window_get_opacity (window); ++ for (j = 0; j < 4; j++) ++ { ++ GtkWidget *item; ++ gchar *label; ++ guint o; ++ ++ label = g_strdup_printf ("%d%%", (j + 1) * 25); ++ ++ item = make_menu_item (amd, CHANGE_OPACITY); ++ ++ o = (j + 1) * 25; ++ g_object_set_data (G_OBJECT (item), "opacity", GINT_TO_POINTER (o)); ++ ++ if (o == present_opacity) ++ gtk_widget_set_sensitive (item, FALSE); ++ ++ gtk_menu_shell_append (GTK_MENU_SHELL (submenu2), item); ++ ++ set_item_text (item, label); ++ set_item_stock (item, NULL); ++ ++ g_free (label); ++ } ++ } ++ ++ if (wnck_screen_net_wm_supports (wnck_window_get_screen (amd->window), ++ "_NET_WM_WINDOW_SATURATION")) ++ { ++ guint present_saturation; ++ gint j; ++ ++ amd->saturation_item = gtk_menu_item_new_with_mnemonic (_("_Saturation")); ++ gtk_widget_show (amd->saturation_item); ++ ++ submenu2 = gtk_menu_new (); ++ gtk_menu_item_set_submenu (GTK_MENU_ITEM (amd->saturation_item), ++ submenu2); ++ ++ gtk_menu_shell_append (GTK_MENU_SHELL (submenu), amd->saturation_item); ++ ++ present_saturation = wnck_window_get_saturation (window); ++ for (j = 0; j < 4; j++) ++ { ++ GtkWidget *item; ++ gchar *label; ++ guint o; ++ ++ label = g_strdup_printf ("%d%%", (j + 1) * 25); ++ ++ item = make_menu_item (amd, CHANGE_SATURATION); ++ ++ o = (j + 1) * 25; ++ g_object_set_data (G_OBJECT (item), "saturation", GINT_TO_POINTER (o)); ++ ++ if (o == present_saturation) ++ gtk_widget_set_sensitive (item, FALSE); ++ ++ gtk_menu_shell_append (GTK_MENU_SHELL (submenu2), item); ++ ++ set_item_text (item, label); ++ set_item_stock (item, NULL); ++ ++ g_free (label); ++ } ++ } ++ ++ if (wnck_screen_net_wm_supports (wnck_window_get_screen (amd->window), ++ "_NET_WM_WINDOW_BRIGHTNESS")) ++ { ++ guint present_brightness; ++ gint j; ++ ++ amd->brightness_item = gtk_menu_item_new_with_mnemonic (_("_Brightness")); ++ gtk_widget_show (amd->brightness_item); ++ ++ submenu2 = gtk_menu_new (); ++ gtk_menu_item_set_submenu (GTK_MENU_ITEM (amd->brightness_item), ++ submenu2); ++ ++ gtk_menu_shell_append (GTK_MENU_SHELL (submenu), amd->brightness_item); ++ ++ present_brightness = wnck_window_get_brightness (window); ++ for (j = 0; j < 4; j++) ++ { ++ GtkWidget *item; ++ gchar *label; ++ guint o; ++ ++ label = g_strdup_printf ("%d%%", (j + 1) * 25); ++ ++ item = make_menu_item (amd, CHANGE_BRIGHTNESS); ++ ++ o = (j + 1) * 25; ++ g_object_set_data (G_OBJECT (item), "brightness", GINT_TO_POINTER (o)); ++ ++ if (o == present_brightness) ++ gtk_widget_set_sensitive (item, FALSE); ++ ++ gtk_menu_shell_append (GTK_MENU_SHELL (submenu2), item); ++ ++ set_item_text (item, label); ++ set_item_stock (item, NULL); ++ ++ g_free (label); ++ } ++ } ++ ++ if (wnck_screen_net_wm_supports (wnck_window_get_screen (amd->window), ++ "_NET_WM_WINDOW_OPACITY")) ++ { ++ amd->reset_item = make_menu_item (amd, RESET); ++ gtk_menu_shell_append (GTK_MENU_SHELL (submenu), amd->reset_item); ++ ++ set_item_text (amd->reset_item, _("_Reset settings")); ++ } ++ ++ + separator = gtk_separator_menu_item_new (); + gtk_widget_show (separator); + gtk_menu_shell_append (GTK_MENU_SHELL (menu), diff --git a/libwnck.spec b/libwnck.spec index 4cf881e..0f404a8 100644 --- a/libwnck.spec +++ b/libwnck.spec @@ -28,7 +28,7 @@ BuildRequires: gettext # make the pager visible when running compiz Patch1: libwnck-2.16.0-viewports.patch -Patch3: libwnck-2.19.2-appearance.patch +Patch3: libwnck-2.19.4-appearance.patch Patch4: libwnck-2.19.3-viewport.patch Patch5: libwnck-2.18.0-above.patch