rpms/libwnck/devel libwnck-2.19.2-appearance.patch, NONE, 1.1 libwnck-2.19.2-viewport.patch, NONE, 1.1 .cvsignore, 1.44, 1.45 libwnck.spec, 1.68, 1.69 sources, 1.44, 1.45 libwnck-2.18.0-appearance.patch, 1.1, NONE libwnck-2.18.0-viewport.patch, 1.1, NONE
Matthias Clasen (mclasen)
fedora-extras-commits at redhat.com
Sun May 20 01:55:26 UTC 2007
- Previous message (by thread): rpms/gnome-system-monitor/devel .cvsignore, 1.49, 1.50 gnome-system-monitor.spec, 1.84, 1.85 sources, 1.49, 1.50
- Next message (by thread): rpms/gnome-vfs2/devel .cvsignore, 1.48, 1.49 gnome-vfs2.spec, 1.157, 1.158 sources, 1.50, 1.51
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
Author: mclasen
Update of /cvs/pkgs/rpms/libwnck/devel
In directory cvs-int.fedora.redhat.com:/tmp/cvs-serv18607
Modified Files:
.cvsignore libwnck.spec sources
Added Files:
libwnck-2.19.2-appearance.patch libwnck-2.19.2-viewport.patch
Removed Files:
libwnck-2.18.0-appearance.patch libwnck-2.18.0-viewport.patch
Log Message:
2.19.2
libwnck-2.19.2-appearance.patch:
--- NEW FILE libwnck-2.19.2-appearance.patch ---
--- libwnck-2.19.2/libwnck/xutils.h.appearance 2007-05-13 06:45:13.000000000 -0400
+++ libwnck-2.19.2/libwnck/xutils.h 2007-05-19 21:39:55.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.2/libwnck/xutils.c.appearance 2007-05-13 06:45:13.000000000 -0400
+++ libwnck-2.19.2/libwnck/xutils.c 2007-05-19 21:39:55.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.2/libwnck/window.c.appearance 2007-05-13 06:45:13.000000000 -0400
+++ libwnck-2.19.2/libwnck/window.c 2007-05-19 21:39:55.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);
@@ -1637,6 +1681,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
@@ -1870,6 +1985,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
@@ -2396,6 +2531,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;
@@ -2430,6 +2598,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.2/libwnck/window.h.appearance 2007-05-13 06:45:13.000000000 -0400
+++ libwnck-2.19.2/libwnck/window.h 2007-05-19 21:39:55.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);
};
GType wnck_window_get_type (void) G_GNUC_CONST;
@@ -266,6 +275,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.2/libwnck/window-action-menu.c.appearance 2007-05-13 06:45:13.000000000 -0400
+++ libwnck-2.19.2/libwnck/window-action-menu.c 2007-05-19 21:46:44.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;
@@ -608,6 +674,154 @@ wnck_create_window_action_menu (WnckWind
set_item_text (amd->resize_item, _("_Resize"));
set_item_stock (amd->move_item, NULL);
+ 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),
libwnck-2.19.2-viewport.patch:
--- NEW FILE libwnck-2.19.2-viewport.patch ---
--- libwnck-2.19.2/libwnck/window-action-menu.c.viewport 2007-05-19 21:47:18.000000000 -0400
+++ libwnck-2.19.2/libwnck/window-action-menu.c 2007-05-19 21:48:56.000000000 -0400
@@ -46,7 +46,13 @@ typedef enum
RIGHT,
UP,
DOWN,
- MOVE_TO_WORKSPACE
+ MOVE_TO_WORKSPACE,
+ STICK,
+ VIEWPORT_LEFT,
+ VIEWPORT_RIGHT,
+ VIEWPORT_UP,
+ VIEWPORT_DOWN,
+ MOVE_TO_VIEWPORT
} WindowAction;
typedef struct _ActionMenuData ActionMenuData;
@@ -74,6 +80,13 @@ struct _ActionMenuData
GtkWidget *up_item;
GtkWidget *down_item;
GtkWidget *workspace_item;
+ GtkWidget *viewport_separator;
+ GtkWidget *stick_item;
+ GtkWidget *viewport_left_item;
+ GtkWidget *viewport_right_item;
+ GtkWidget *viewport_up_item;
+ GtkWidget *viewport_down_item;
+ GtkWidget *viewport_item;
guint idle_handler;
};
@@ -260,6 +273,86 @@ item_activated_callback (GtkWidget *menu
workspace_index));
break;
}
+ case STICK:
+ if (wnck_window_is_sticky (amd->window))
+ wnck_window_unstick (amd->window);
+ else
+ wnck_window_stick (amd->window);
+ break;
+ case VIEWPORT_LEFT:
+ {
+ int width, xw, yw, ww, hw;
+
+ width = wnck_screen_get_width (wnck_window_get_screen (amd->window));
+ wnck_window_get_geometry (amd->window, &xw, &yw, &ww, &hw);
+ wnck_window_set_geometry (amd->window, 0,
+ WNCK_WINDOW_CHANGE_X|WNCK_WINDOW_CHANGE_Y,
+ xw - width, yw,
+ ww, hw);
+ break;
+ }
+ case VIEWPORT_RIGHT:
+ {
+ int width, xw, yw, ww, hw;
+
+ width = wnck_screen_get_width (wnck_window_get_screen (amd->window));
+ wnck_window_get_geometry (amd->window, &xw, &yw, &ww, &hw);
+ wnck_window_set_geometry (amd->window, 0,
+ WNCK_WINDOW_CHANGE_X|WNCK_WINDOW_CHANGE_Y,
+ xw + width, yw,
+ ww, hw);
+ break;
+ }
+ case VIEWPORT_UP:
+ {
+ int height, xw, yw, ww, hw;
+
+ height = wnck_screen_get_height (wnck_window_get_screen (amd->window));
+ wnck_window_get_geometry (amd->window, &xw, &yw, &ww, &hw);
+ wnck_window_set_geometry (amd->window, 0,
+ WNCK_WINDOW_CHANGE_X|WNCK_WINDOW_CHANGE_Y,
+ xw, yw - height,
+ ww, hw);
+ break;
+ }
+ case VIEWPORT_DOWN:
+ {
+ int height, xw, yw, ww, hw;
+
+ height = wnck_screen_get_height (wnck_window_get_screen (amd->window));
+ wnck_window_get_geometry (amd->window, &xw, &yw, &ww, &hw);
+ wnck_window_set_geometry (amd->window, 0,
+ WNCK_WINDOW_CHANGE_X|WNCK_WINDOW_CHANGE_Y,
+ xw, yw + height,
+ ww, hw);
+ break;
+ }
+ case MOVE_TO_VIEWPORT:
+ {
+ WnckWorkspace *workspace;
+ int viewport_x, viewport_y, xw, yw, x, y, width, height;
+
+ workspace = wnck_window_get_workspace (amd->window);
+ if (!workspace)
+ break;
+ viewport_x = wnck_workspace_get_viewport_x (workspace);
+ viewport_y = wnck_workspace_get_viewport_y (workspace);
+
+ x = GPOINTER_TO_INT (g_object_get_data (G_OBJECT (menu_item), "x"));
+ y = GPOINTER_TO_INT (g_object_get_data (G_OBJECT (menu_item), "y"));
+
+ wnck_window_get_geometry (amd->window, &xw, &yw, &width, &height);
+
+ if (wnck_window_is_sticky (amd->window))
+ wnck_window_unstick (amd->window);
+
+ wnck_window_set_geometry (amd->window, 0,
+ WNCK_WINDOW_CHANGE_X|WNCK_WINDOW_CHANGE_Y,
+ xw + x - viewport_x,
+ yw + y - viewport_y,
+ width, height);
+ break;
+ }
}
}
@@ -440,6 +533,56 @@ update_menu_state (ActionMenuData *amd)
gtk_widget_show (amd->unpin_item);
gtk_widget_hide (amd->workspace_item);
}
+
+ if (wnck_window_is_sticky (amd->window))
+ {
+ set_item_text (amd->stick_item, _("_Only on This Workspace"));
+ set_item_stock (amd->stick_item, NULL);
+ gtk_widget_set_sensitive (amd->stick_item,
+ (actions & WNCK_WINDOW_ACTION_STICK) != 0);
+ }
+ else
+ {
+ set_item_text (amd->stick_item, _("_Always on Visible Workspace"));
+ set_item_stock (amd->stick_item, NULL);
+ gtk_widget_set_sensitive (amd->stick_item,
+ (actions & WNCK_WINDOW_ACTION_STICK) != 0);
+ }
+
+ if (!wnck_window_is_sticky (amd->window))
+ {
+ if (amd->viewport_item)
+ gtk_widget_set_sensitive (amd->viewport_item,
+ (actions & WNCK_WINDOW_ACTION_MOVE) != 0);
+
+ if (amd->viewport_left_item)
+ gtk_widget_set_sensitive (amd->viewport_left_item,
+ (actions & WNCK_WINDOW_ACTION_MOVE) != 0);
+
+ if (amd->viewport_right_item)
+ gtk_widget_set_sensitive (amd->viewport_right_item,
+ (actions & WNCK_WINDOW_ACTION_MOVE) != 0);
+
+ if (amd->viewport_up_item)
+ gtk_widget_set_sensitive (amd->viewport_up_item,
+ (actions & WNCK_WINDOW_ACTION_MOVE) != 0);
+
+ if (amd->viewport_down_item)
+ gtk_widget_set_sensitive (amd->viewport_down_item,
+ (actions & WNCK_WINDOW_ACTION_MOVE) != 0);
+ }
+ if (wnck_workspace_is_virtual (wnck_screen_get_active_workspace (screen)))
+ {
+ gtk_widget_show (amd->viewport_separator);
+ gtk_widget_show (amd->stick_item);
+ gtk_widget_show (amd->viewport_item);
+ }
+ else
+ {
+ gtk_widget_hide (amd->viewport_separator);
+ gtk_widget_hide (amd->stick_item);
+ gtk_widget_hide (amd->viewport_item);
+ }
return FALSE;
}
@@ -632,6 +775,10 @@ wnck_create_window_action_menu (WnckWind
int num_workspaces, present_workspace, i;
WnckWorkspace *workspace;
WnckWorkspaceLayout layout;
+ int viewport_x, viewport_y, viewport_width, viewport_height;
+ int screen_width, screen_height;
+ int x, y;
+
GSList *pin_group;
_wnck_stock_icons_init ();
@@ -952,7 +1099,115 @@ wnck_create_window_action_menu (WnckWind
g_free (name);
g_free (label);
}
-
+
+ amd->viewport_separator = separator = gtk_separator_menu_item_new ();
+ gtk_widget_show (separator);
+ gtk_menu_shell_append (GTK_MENU_SHELL (menu),
+ separator);
+
+ amd->stick_item = make_menu_item (amd, STICK);
+ gtk_menu_shell_append (GTK_MENU_SHELL (menu),
+ amd->stick_item);
+ set_item_stock (amd->stick_item, NULL);
+
+ if (wnck_window_is_pinned (amd->window))
+ workspace = wnck_screen_get_active_workspace (wnck_window_get_screen (amd->window));
+ else
+ workspace = wnck_window_get_workspace (amd->window);
+ if (!workspace)
+ goto bail;
+
+ viewport_x = wnck_workspace_get_viewport_x (workspace);
+ viewport_y = wnck_workspace_get_viewport_y (workspace);
+ viewport_width = wnck_workspace_get_width (workspace);
+ viewport_height = wnck_workspace_get_height (workspace);
+
+ screen_width = wnck_screen_get_width (wnck_window_get_screen (amd->window));
+ screen_height = wnck_screen_get_height (wnck_window_get_screen (amd->window));
+
+ if (!wnck_window_is_sticky (amd->window))
+ {
+ if (viewport_x >= screen_width)
+ {
+ amd->viewport_left_item = make_menu_item (amd, VIEWPORT_LEFT);
+ gtk_menu_shell_append (GTK_MENU_SHELL (menu),
+ amd->viewport_left_item);
+ set_item_text (amd->viewport_left_item, _("Move to Workspace _Left"));
+ set_item_stock (amd->viewport_left_item, NULL);
+ }
+ else
+ amd->viewport_left_item = NULL;
+
+ if (viewport_x <= viewport_width - 2 * screen_width)
+ {
+ amd->viewport_right_item = make_menu_item (amd, VIEWPORT_RIGHT);
+ gtk_menu_shell_append (GTK_MENU_SHELL (menu),
+ amd->viewport_right_item);
+ set_item_text (amd->viewport_right_item, _("Move to Workspace R_ight"));
+ set_item_stock (amd->viewport_right_item, NULL);
+ }
+ else
+ amd->viewport_right_item = NULL;
+
+ if (viewport_y >= screen_height)
+ {
+ amd->viewport_up_item = make_menu_item (amd, VIEWPORT_UP);
+ gtk_menu_shell_append (GTK_MENU_SHELL (menu),
+ amd->viewport_up_item);
+ set_item_text (amd->viewport_up_item, _("Move to Workspace _Up"));
+ set_item_stock (amd->viewport_up_item, NULL);
+ }
+ else
+ amd->viewport_up_item = NULL;
+
+ if (viewport_y <= viewport_height - 2 * screen_height)
+ {
+ amd->viewport_down_item = make_menu_item (amd, VIEWPORT_DOWN);
+ gtk_menu_shell_append (GTK_MENU_SHELL (menu),
+ amd->viewport_down_item);
+ set_item_text (amd->viewport_down_item, _("Move to Workspace _Down"));
+ set_item_stock (amd->viewport_down_item, NULL);
+ }
+ else
+ amd->viewport_down_item = NULL;
+
+ amd->viewport_item = gtk_menu_item_new_with_mnemonic (_("Move to Another _Workspace"));
+ gtk_widget_show (amd->viewport_item);
+
+ submenu = gtk_menu_new ();
+ gtk_menu_item_set_submenu (GTK_MENU_ITEM (amd->viewport_item),
+ submenu);
+
+ i = 1;
+ for (y = 0; y < viewport_height; y += screen_height)
+ {
+ char *label;
+ GtkWidget *item;
+
+ for (x = 0; x < viewport_width; x += screen_width)
+ {
+ label = g_strdup_printf (_("Workspace _%d"), i++);
+
+ item = make_menu_item (amd, MOVE_TO_VIEWPORT);
+ g_object_set_data (G_OBJECT (item), "x", GINT_TO_POINTER (x));
+ g_object_set_data (G_OBJECT (item), "y", GINT_TO_POINTER (y));
+
+ if (x == viewport_x && y == viewport_y)
+ gtk_widget_set_sensitive (item, FALSE);
+
+ gtk_menu_shell_append (GTK_MENU_SHELL (submenu), item);
+ set_item_text (item, label);
+ set_item_stock (item, NULL);
+
+ g_free (label);
+ }
+ }
+
+ gtk_menu_shell_append (GTK_MENU_SHELL (menu),
+ amd->viewport_item);
+ }
+
+ bail:
g_signal_connect_object (G_OBJECT (amd->window),
"state_changed",
G_CALLBACK (state_changed_callback),
Index: .cvsignore
===================================================================
RCS file: /cvs/pkgs/rpms/libwnck/devel/.cvsignore,v
retrieving revision 1.44
retrieving revision 1.45
diff -u -r1.44 -r1.45
--- .cvsignore 13 Mar 2007 06:06:20 -0000 1.44
+++ .cvsignore 20 May 2007 01:54:50 -0000 1.45
@@ -1 +1 @@
-libwnck-2.18.0.tar.bz2
+libwnck-2.19.2.tar.bz2
Index: libwnck.spec
===================================================================
RCS file: /cvs/pkgs/rpms/libwnck/devel/libwnck.spec,v
retrieving revision 1.68
retrieving revision 1.69
diff -u -r1.68 -r1.69
--- libwnck.spec 9 Apr 2007 23:05:18 -0000 1.68
+++ libwnck.spec 20 May 2007 01:54:50 -0000 1.69
@@ -5,10 +5,10 @@
Summary: Window Navigator Construction Kit
Name: libwnck
-Version: 2.18.0
-Release: 3%{?dist}
-URL: http://ftp.gnome.org/pub/GNOME/sources/libwnck/
-Source0: http://ftp.gnome.org/pub/gnome/sources/libwnck/2.18/%{name}-%{version}.tar.bz2
+Version: 2.19.2
+Release: 1%{?dist}
+URL: http://download.gnome.org/sources/libwnck/
+Source0: http://download.gnome.org/sources/libwnck/2.19/%{name}-%{version}.tar.bz2
License: LGPL
Group: System Environment/Libraries
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
@@ -28,11 +28,9 @@
# make the pager visible when running compiz
Patch1: libwnck-2.16.0-viewports.patch
-Patch3: libwnck-2.18.0-appearance.patch
-Patch4: libwnck-2.18.0-viewport.patch
+Patch3: libwnck-2.19.2-appearance.patch
+Patch4: libwnck-2.19.2-viewport.patch
Patch5: libwnck-2.18.0-above.patch
-# http://bugzilla.gnome.org/show_bug.cgi?id=428056
-Patch6: libwnck-2.18.0-property-leak.patch
%description
@@ -65,7 +63,6 @@
%patch3 -p1 -b .appearance
%patch4 -p1 -b .viewport
%patch5 -p1 -b .above
-%patch6 -p1 -b .property-leak
%build
@@ -104,6 +101,10 @@
%{_datadir}/gtk-doc/html/libwnck
%changelog
+* Sat May 19 2007 Matthias Clasen <mclasen at redhat.com> - 2.19.2-1
+- Update to 2.19.2
+- Update patches
+
* Tue Apr 10 2007 Matthias Clasen <mclasen at redhat.com> - 2.18.0-3
- Plug a small memory leak
Index: sources
===================================================================
RCS file: /cvs/pkgs/rpms/libwnck/devel/sources,v
retrieving revision 1.44
retrieving revision 1.45
diff -u -r1.44 -r1.45
--- sources 13 Mar 2007 06:06:20 -0000 1.44
+++ sources 20 May 2007 01:54:50 -0000 1.45
@@ -1 +1 @@
-9b02dea0448a28d73b46a1e8c6eab3d5 libwnck-2.18.0.tar.bz2
+6f69efaf57b8cf76d772af4a2f4ad4b2 libwnck-2.19.2.tar.bz2
--- libwnck-2.18.0-appearance.patch DELETED ---
--- libwnck-2.18.0-viewport.patch DELETED ---
- Previous message (by thread): rpms/gnome-system-monitor/devel .cvsignore, 1.49, 1.50 gnome-system-monitor.spec, 1.84, 1.85 sources, 1.49, 1.50
- Next message (by thread): rpms/gnome-vfs2/devel .cvsignore, 1.48, 1.49 gnome-vfs2.spec, 1.157, 1.158 sources, 1.50, 1.51
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
More information about the fedora-extras-commits
mailing list