|
|
81a8d62 |
--- libwnck-2.19.4/libwnck/xutils.h.appearance 2007-06-18 15:59:14.000000000 -0400
|
|
|
81a8d62 |
+++ libwnck-2.19.4/libwnck/xutils.h 2007-06-18 17:08:26.000000000 -0400
|
|
|
81a8d62 |
@@ -110,6 +110,16 @@ void _wnck_change_viewport (Screen *scre
|
|
Kristian Høgsberg |
77f9263 |
int x,
|
|
Kristian Høgsberg |
77f9263 |
int y);
|
|
Kristian Høgsberg |
77f9263 |
|
|
Kristian Høgsberg |
77f9263 |
+void _wnck_change_opacity (Screen *screen,
|
|
Kristian Høgsberg |
77f9263 |
+ Window xwindow,
|
|
Kristian Høgsberg |
77f9263 |
+ guint32 opacity);
|
|
Kristian Høgsberg |
77f9263 |
+void _wnck_change_saturation (Screen *screen,
|
|
Kristian Høgsberg |
77f9263 |
+ Window xwindow,
|
|
Kristian Høgsberg |
77f9263 |
+ guint32 saturation);
|
|
Kristian Høgsberg |
77f9263 |
+void _wnck_change_brightness (Screen *screen,
|
|
Kristian Høgsberg |
77f9263 |
+ Window xwindow,
|
|
Kristian Høgsberg |
77f9263 |
+ guint32 brightness);
|
|
Kristian Høgsberg |
77f9263 |
+
|
|
Kristian Høgsberg |
77f9263 |
char* _wnck_get_session_id (Window xwindow);
|
|
Kristian Høgsberg |
77f9263 |
int _wnck_get_pid (Window xwindow);
|
|
Kristian Høgsberg |
77f9263 |
char* _wnck_get_name (Window xwindow);
|
|
|
81a8d62 |
@@ -124,6 +134,12 @@ gboolean _wnck_get_frame_extents (Windo
|
|
|
81a8d62 |
int *top_frame,
|
|
|
81a8d62 |
int *bottom_frame);
|
|
Kristian Høgsberg |
77f9263 |
|
|
Kristian Høgsberg |
77f9263 |
+guint32 _wnck_get_opacity (Window xwindow);
|
|
Kristian Høgsberg |
77f9263 |
+
|
|
Kristian Høgsberg |
77f9263 |
+guint32 _wnck_get_saturation (Window xwindow);
|
|
Kristian Høgsberg |
77f9263 |
+
|
|
Kristian Høgsberg |
77f9263 |
+guint32 _wnck_get_brightness (Window xwindow);
|
|
Kristian Høgsberg |
77f9263 |
+
|
|
Kristian Høgsberg |
77f9263 |
void _wnck_select_input (Window xwindow,
|
|
Kristian Høgsberg |
77f9263 |
int mask);
|
|
Kristian Høgsberg |
77f9263 |
|
|
|
81a8d62 |
--- libwnck-2.19.4/libwnck/xutils.c.appearance 2007-06-18 15:59:14.000000000 -0400
|
|
|
81a8d62 |
+++ libwnck-2.19.4/libwnck/xutils.c 2007-06-18 17:08:26.000000000 -0400
|
|
|
81a8d62 |
@@ -1092,6 +1092,87 @@ _wnck_toggle_showing_desktop (Screen *s
|
|
|
6b12524 |
&xev);
|
|
|
6b12524 |
}
|
|
|
6b12524 |
|
|
|
6b12524 |
+void
|
|
|
6b12524 |
+_wnck_change_opacity (Screen *screen,
|
|
|
6b12524 |
+ Window xwindow,
|
|
|
6b12524 |
+ guint32 opacity)
|
|
|
6b12524 |
+{
|
|
|
6b12524 |
+ XEvent xev;
|
|
|
6b12524 |
+
|
|
|
6b12524 |
+ xev.xclient.type = ClientMessage;
|
|
|
6b12524 |
+ xev.xclient.serial = 0;
|
|
|
6b12524 |
+ xev.xclient.send_event = True;
|
|
|
6b12524 |
+ xev.xclient.display = gdk_display;
|
|
|
6b12524 |
+ xev.xclient.window = xwindow;
|
|
|
6b12524 |
+ xev.xclient.message_type = _wnck_atom_get ("_NET_WM_WINDOW_OPACITY");
|
|
|
6b12524 |
+ xev.xclient.format = 32;
|
|
|
6b12524 |
+ xev.xclient.data.l[0] = opacity;
|
|
|
6b12524 |
+ xev.xclient.data.l[1] = 0;
|
|
|
6b12524 |
+ xev.xclient.data.l[2] = 0;
|
|
|
6b12524 |
+ xev.xclient.data.l[3] = 0;
|
|
|
6b12524 |
+ xev.xclient.data.l[4] = 0;
|
|
|
6b12524 |
+
|
|
|
6b12524 |
+ XSendEvent (gdk_display,
|
|
|
6b12524 |
+ RootWindowOfScreen (screen),
|
|
|
6b12524 |
+ False,
|
|
|
6b12524 |
+ SubstructureRedirectMask | SubstructureNotifyMask,
|
|
|
6b12524 |
+ &xev);
|
|
|
6b12524 |
+}
|
|
|
6b12524 |
+
|
|
|
6b12524 |
+void
|
|
|
6b12524 |
+_wnck_change_saturation (Screen *screen,
|
|
|
6b12524 |
+ Window xwindow,
|
|
|
6b12524 |
+ guint32 saturation)
|
|
|
6b12524 |
+{
|
|
|
6b12524 |
+ XEvent xev;
|
|
|
6b12524 |
+
|
|
|
6b12524 |
+ xev.xclient.type = ClientMessage;
|
|
|
6b12524 |
+ xev.xclient.serial = 0;
|
|
|
6b12524 |
+ xev.xclient.send_event = True;
|
|
|
6b12524 |
+ xev.xclient.display = gdk_display;
|
|
|
6b12524 |
+ xev.xclient.window = xwindow;
|
|
|
6b12524 |
+ xev.xclient.message_type = _wnck_atom_get ("_NET_WM_WINDOW_SATURATION");
|
|
|
6b12524 |
+ xev.xclient.format = 32;
|
|
|
6b12524 |
+ xev.xclient.data.l[0] = saturation;
|
|
|
6b12524 |
+ xev.xclient.data.l[1] = 0;
|
|
|
6b12524 |
+ xev.xclient.data.l[2] = 0;
|
|
|
6b12524 |
+ xev.xclient.data.l[3] = 0;
|
|
|
6b12524 |
+ xev.xclient.data.l[4] = 0;
|
|
|
6b12524 |
+
|
|
|
6b12524 |
+ XSendEvent (gdk_display,
|
|
|
6b12524 |
+ RootWindowOfScreen (screen),
|
|
|
6b12524 |
+ False,
|
|
|
6b12524 |
+ SubstructureRedirectMask | SubstructureNotifyMask,
|
|
|
6b12524 |
+ &xev);
|
|
|
6b12524 |
+}
|
|
|
6b12524 |
+
|
|
|
6b12524 |
+void
|
|
|
6b12524 |
+_wnck_change_brightness (Screen *screen,
|
|
|
6b12524 |
+ Window xwindow,
|
|
|
6b12524 |
+ guint32 brightness)
|
|
|
6b12524 |
+{
|
|
|
6b12524 |
+ XEvent xev;
|
|
|
6b12524 |
+
|
|
|
6b12524 |
+ xev.xclient.type = ClientMessage;
|
|
|
6b12524 |
+ xev.xclient.serial = 0;
|
|
|
6b12524 |
+ xev.xclient.send_event = True;
|
|
|
6b12524 |
+ xev.xclient.display = gdk_display;
|
|
|
6b12524 |
+ xev.xclient.window = xwindow;
|
|
|
6b12524 |
+ xev.xclient.message_type = _wnck_atom_get ("_NET_WM_WINDOW_BRIGHTNESS");
|
|
|
6b12524 |
+ xev.xclient.format = 32;
|
|
|
6b12524 |
+ xev.xclient.data.l[0] = brightness;
|
|
|
6b12524 |
+ xev.xclient.data.l[1] = 0;
|
|
|
6b12524 |
+ xev.xclient.data.l[2] = 0;
|
|
|
6b12524 |
+ xev.xclient.data.l[3] = 0;
|
|
|
6b12524 |
+ xev.xclient.data.l[4] = 0;
|
|
|
6b12524 |
+
|
|
|
6b12524 |
+ XSendEvent (gdk_display,
|
|
|
6b12524 |
+ RootWindowOfScreen (screen),
|
|
|
6b12524 |
+ False,
|
|
|
6b12524 |
+ SubstructureRedirectMask | SubstructureNotifyMask,
|
|
|
6b12524 |
+ &xev);
|
|
|
6b12524 |
+}
|
|
|
6b12524 |
+
|
|
|
6b12524 |
char*
|
|
|
6b12524 |
_wnck_get_session_id (Window xwindow)
|
|
|
6b12524 |
{
|
|
|
81a8d62 |
@@ -1266,6 +1347,45 @@ _wnck_get_frame_extents (Window xwindow
|
|
|
81a8d62 |
return retval;
|
|
|
6b12524 |
}
|
|
|
6b12524 |
|
|
|
6b12524 |
+guint32
|
|
|
6b12524 |
+_wnck_get_opacity (Window xwindow)
|
|
|
6b12524 |
+{
|
|
|
6b12524 |
+ int val;
|
|
|
6b12524 |
+
|
|
|
6b12524 |
+ if (_wnck_get_cardinal (xwindow,
|
|
|
6b12524 |
+ _wnck_atom_get ("_NET_WM_WINDOW_OPACITY"),
|
|
|
6b12524 |
+ &val))
|
|
|
6b12524 |
+ return val;
|
|
|
6b12524 |
+
|
|
|
6b12524 |
+ return G_MAXUINT32;
|
|
|
6b12524 |
+}
|
|
|
6b12524 |
+
|
|
|
6b12524 |
+guint32
|
|
|
6b12524 |
+_wnck_get_saturation (Window xwindow)
|
|
|
6b12524 |
+{
|
|
|
6b12524 |
+ int val;
|
|
|
6b12524 |
+
|
|
|
6b12524 |
+ if (_wnck_get_cardinal (xwindow,
|
|
|
6b12524 |
+ _wnck_atom_get ("_NET_WM_WINDOW_SATURATION"),
|
|
|
6b12524 |
+ &val))
|
|
|
6b12524 |
+ return val;
|
|
|
6b12524 |
+
|
|
|
6b12524 |
+ return G_MAXUINT32;
|
|
|
6b12524 |
+}
|
|
|
6b12524 |
+
|
|
|
6b12524 |
+guint32
|
|
|
6b12524 |
+_wnck_get_brightness (Window xwindow)
|
|
|
6b12524 |
+{
|
|
|
6b12524 |
+ int val;
|
|
|
6b12524 |
+
|
|
|
6b12524 |
+ if (_wnck_get_cardinal (xwindow,
|
|
|
6b12524 |
+ _wnck_atom_get ("_NET_WM_WINDOW_BRIGHTNESS"),
|
|
|
6b12524 |
+ &val))
|
|
|
6b12524 |
+ return val;
|
|
|
6b12524 |
+
|
|
|
6b12524 |
+ return G_MAXUINT32;
|
|
|
6b12524 |
+}
|
|
|
6b12524 |
+
|
|
|
6b12524 |
void
|
|
|
6b12524 |
_wnck_select_input (Window xwindow,
|
|
|
6b12524 |
int mask)
|
|
|
81a8d62 |
--- libwnck-2.19.4/libwnck/window.c.appearance 2007-06-18 15:59:14.000000000 -0400
|
|
|
81a8d62 |
+++ libwnck-2.19.4/libwnck/window.c 2007-06-18 17:11:29.000000000 -0400
|
|
|
81a8d62 |
@@ -107,6 +107,10 @@ struct _WnckWindowPrivate
|
|
Kristian Høgsberg |
77f9263 |
char *res_class;
|
|
Kristian Høgsberg |
77f9263 |
char *res_name;
|
|
Kristian Høgsberg |
77f9263 |
|
|
Kristian Høgsberg |
77f9263 |
+ guint32 opacity;
|
|
Kristian Høgsberg |
77f9263 |
+ guint32 saturation;
|
|
Kristian Høgsberg |
77f9263 |
+ guint32 brightness;
|
|
Kristian Høgsberg |
77f9263 |
+
|
|
Kristian Høgsberg |
77f9263 |
/* true if transient_for points to root window,
|
|
Kristian Høgsberg |
77f9263 |
* not another app window
|
|
Kristian Høgsberg |
77f9263 |
*/
|
|
|
81a8d62 |
@@ -152,6 +156,10 @@ struct _WnckWindowPrivate
|
|
Kristian Høgsberg |
77f9263 |
guint need_update_wmhints : 1;
|
|
|
81a8d62 |
guint need_update_frame_extents : 1;
|
|
|
81a8d62 |
|
|
Kristian Høgsberg |
77f9263 |
+ guint need_update_opacity : 1;
|
|
Kristian Høgsberg |
77f9263 |
+ guint need_update_saturation : 1;
|
|
Kristian Høgsberg |
77f9263 |
+ guint need_update_brightness : 1;
|
|
|
81a8d62 |
+
|
|
Kristian Høgsberg |
77f9263 |
guint need_emit_name_changed : 1;
|
|
Kristian Høgsberg |
77f9263 |
guint need_emit_icon_changed : 1;
|
|
|
81a8d62 |
};
|
|
|
81a8d62 |
@@ -165,6 +173,9 @@ enum {
|
|
Kristian Høgsberg |
77f9263 |
ICON_CHANGED,
|
|
Kristian Høgsberg |
77f9263 |
ACTIONS_CHANGED,
|
|
Kristian Høgsberg |
77f9263 |
GEOMETRY_CHANGED,
|
|
Kristian Høgsberg |
77f9263 |
+ OPACITY_CHANGED,
|
|
Kristian Høgsberg |
77f9263 |
+ SATURATION_CHANGED,
|
|
Kristian Høgsberg |
77f9263 |
+ BRIGHTNESS_CHANGED,
|
|
Kristian Høgsberg |
77f9263 |
LAST_SIGNAL
|
|
Kristian Høgsberg |
77f9263 |
};
|
|
Kristian Høgsberg |
77f9263 |
|
|
|
81a8d62 |
@@ -193,6 +204,9 @@ static void update_wintype (WnckWindow
|
|
Kristian Høgsberg |
77f9263 |
static void update_transient_for (WnckWindow *window);
|
|
Kristian Høgsberg |
77f9263 |
static void update_startup_id (WnckWindow *window);
|
|
Kristian Høgsberg |
77f9263 |
static void update_wmclass (WnckWindow *window);
|
|
Kristian Høgsberg |
77f9263 |
+static void update_opacity (WnckWindow *window);
|
|
Kristian Høgsberg |
77f9263 |
+static void update_saturation (WnckWindow *window);
|
|
Kristian Høgsberg |
77f9263 |
+static void update_brightness (WnckWindow *window);
|
|
|
81a8d62 |
static void update_frame_extents (WnckWindow *window);
|
|
Kristian Høgsberg |
77f9263 |
static void unqueue_update (WnckWindow *window);
|
|
Kristian Høgsberg |
77f9263 |
static void queue_update (WnckWindow *window);
|
|
|
81a8d62 |
@@ -325,6 +339,33 @@ wnck_window_class_init (WnckWindowClass
|
|
Kristian Høgsberg |
77f9263 |
NULL, NULL,
|
|
Kristian Høgsberg |
77f9263 |
g_cclosure_marshal_VOID__VOID,
|
|
Kristian Høgsberg |
77f9263 |
G_TYPE_NONE, 0);
|
|
Kristian Høgsberg |
77f9263 |
+
|
|
Kristian Høgsberg |
77f9263 |
+ signals[OPACITY_CHANGED] =
|
|
Kristian Høgsberg |
77f9263 |
+ g_signal_new ("opacity_changed",
|
|
Kristian Høgsberg |
77f9263 |
+ G_OBJECT_CLASS_TYPE (object_class),
|
|
Kristian Høgsberg |
77f9263 |
+ G_SIGNAL_RUN_LAST,
|
|
Kristian Høgsberg |
77f9263 |
+ G_STRUCT_OFFSET (WnckWindowClass, opacity_changed),
|
|
Kristian Høgsberg |
77f9263 |
+ NULL, NULL,
|
|
Kristian Høgsberg |
77f9263 |
+ g_cclosure_marshal_VOID__VOID,
|
|
Kristian Høgsberg |
77f9263 |
+ G_TYPE_NONE, 0);
|
|
Kristian Høgsberg |
77f9263 |
+
|
|
Kristian Høgsberg |
77f9263 |
+ signals[SATURATION_CHANGED] =
|
|
Kristian Høgsberg |
77f9263 |
+ g_signal_new ("saturation_changed",
|
|
Kristian Høgsberg |
77f9263 |
+ G_OBJECT_CLASS_TYPE (object_class),
|
|
Kristian Høgsberg |
77f9263 |
+ G_SIGNAL_RUN_LAST,
|
|
Kristian Høgsberg |
77f9263 |
+ G_STRUCT_OFFSET (WnckWindowClass, saturation_changed),
|
|
Kristian Høgsberg |
77f9263 |
+ NULL, NULL,
|
|
Kristian Høgsberg |
77f9263 |
+ g_cclosure_marshal_VOID__VOID,
|
|
Kristian Høgsberg |
77f9263 |
+ G_TYPE_NONE, 0);
|
|
Kristian Høgsberg |
77f9263 |
+
|
|
Kristian Høgsberg |
77f9263 |
+ signals[BRIGHTNESS_CHANGED] =
|
|
Kristian Høgsberg |
77f9263 |
+ g_signal_new ("brightness_changed",
|
|
Kristian Høgsberg |
77f9263 |
+ G_OBJECT_CLASS_TYPE (object_class),
|
|
Kristian Høgsberg |
77f9263 |
+ G_SIGNAL_RUN_LAST,
|
|
Kristian Høgsberg |
77f9263 |
+ G_STRUCT_OFFSET (WnckWindowClass, brightness_changed),
|
|
Kristian Høgsberg |
77f9263 |
+ NULL, NULL,
|
|
Kristian Høgsberg |
77f9263 |
+ g_cclosure_marshal_VOID__VOID,
|
|
Kristian Høgsberg |
77f9263 |
+ G_TYPE_NONE, 0);
|
|
Kristian Høgsberg |
77f9263 |
}
|
|
Kristian Høgsberg |
77f9263 |
|
|
Kristian Høgsberg |
77f9263 |
static void
|
|
|
81a8d62 |
@@ -460,6 +501,9 @@ _wnck_window_create (Window xwindow
|
|
Kristian Høgsberg |
77f9263 |
window->priv->need_update_wmclass = TRUE;
|
|
Kristian Høgsberg |
77f9263 |
window->priv->need_update_wmhints = TRUE;
|
|
|
81a8d62 |
window->priv->need_update_frame_extents = TRUE;
|
|
Kristian Høgsberg |
77f9263 |
+ window->priv->need_update_opacity = TRUE;
|
|
Kristian Høgsberg |
77f9263 |
+ window->priv->need_update_saturation = TRUE;
|
|
Kristian Høgsberg |
77f9263 |
+ window->priv->need_update_brightness = TRUE;
|
|
Kristian Høgsberg |
77f9263 |
window->priv->need_emit_name_changed = FALSE;
|
|
Kristian Høgsberg |
77f9263 |
window->priv->need_emit_icon_changed = FALSE;
|
|
Kristian Høgsberg |
77f9263 |
force_update_now (window);
|
|
|
81a8d62 |
@@ -2083,6 +2127,77 @@ wnck_window_set_geometry (WnckWindow
|
|
Kristian Høgsberg |
77f9263 |
gravity_and_flags, x, y, width, height);
|
|
Kristian Høgsberg |
77f9263 |
}
|
|
Kristian Høgsberg |
77f9263 |
|
|
Kristian Høgsberg |
77f9263 |
+guint
|
|
Kristian Høgsberg |
77f9263 |
+wnck_window_get_opacity (WnckWindow *window)
|
|
Kristian Høgsberg |
77f9263 |
+{
|
|
Kristian Høgsberg |
77f9263 |
+ guint64 o;
|
|
Kristian Høgsberg |
77f9263 |
+
|
|
Kristian Høgsberg |
77f9263 |
+ g_return_val_if_fail (WNCK_IS_WINDOW (window), 0);
|
|
Kristian Høgsberg |
77f9263 |
+
|
|
Kristian Høgsberg |
77f9263 |
+ o = ((guint64) window->priv->opacity * 1005) / G_MAXUINT32;
|
|
Kristian Høgsberg |
77f9263 |
+
|
|
Kristian Høgsberg |
77f9263 |
+ return o / 10;
|
|
Kristian Høgsberg |
77f9263 |
+}
|
|
Kristian Høgsberg |
77f9263 |
+
|
|
Kristian Høgsberg |
77f9263 |
+void
|
|
Kristian Høgsberg |
77f9263 |
+wnck_window_set_opacity (WnckWindow *window,
|
|
Kristian Høgsberg |
77f9263 |
+ guint opacity)
|
|
Kristian Høgsberg |
77f9263 |
+{
|
|
Kristian Høgsberg |
77f9263 |
+ g_return_if_fail (WNCK_IS_WINDOW (window));
|
|
Kristian Høgsberg |
77f9263 |
+
|
|
Kristian Høgsberg |
77f9263 |
+ _wnck_change_opacity (WNCK_SCREEN_XSCREEN (window->priv->screen),
|
|
Kristian Høgsberg |
77f9263 |
+ wnck_window_get_xid (window),
|
|
Kristian Høgsberg |
77f9263 |
+ (((guint64) opacity * G_MAXUINT32) / 100));
|
|
Kristian Høgsberg |
77f9263 |
+}
|
|
Kristian Høgsberg |
77f9263 |
+
|
|
Kristian Høgsberg |
77f9263 |
+
|
|
Kristian Høgsberg |
77f9263 |
+guint
|
|
Kristian Høgsberg |
77f9263 |
+wnck_window_get_saturation (WnckWindow *window)
|
|
Kristian Høgsberg |
77f9263 |
+{
|
|
Kristian Høgsberg |
77f9263 |
+ guint64 o;
|
|
Kristian Høgsberg |
77f9263 |
+
|
|
Kristian Høgsberg |
77f9263 |
+ g_return_val_if_fail (WNCK_IS_WINDOW (window), 0);
|
|
Kristian Høgsberg |
77f9263 |
+
|
|
Kristian Høgsberg |
77f9263 |
+ o = ((guint64) window->priv->saturation * 1005) / G_MAXUINT32;
|
|
Kristian Høgsberg |
77f9263 |
+
|
|
Kristian Høgsberg |
77f9263 |
+ return o / 10;
|
|
Kristian Høgsberg |
77f9263 |
+}
|
|
Kristian Høgsberg |
77f9263 |
+
|
|
Kristian Høgsberg |
77f9263 |
+void
|
|
Kristian Høgsberg |
77f9263 |
+wnck_window_set_saturation (WnckWindow *window,
|
|
Kristian Høgsberg |
77f9263 |
+ guint saturation)
|
|
Kristian Høgsberg |
77f9263 |
+{
|
|
Kristian Høgsberg |
77f9263 |
+ g_return_if_fail (WNCK_IS_WINDOW (window));
|
|
Kristian Høgsberg |
77f9263 |
+
|
|
Kristian Høgsberg |
77f9263 |
+ _wnck_change_saturation (WNCK_SCREEN_XSCREEN (window->priv->screen),
|
|
Kristian Høgsberg |
77f9263 |
+ wnck_window_get_xid (window),
|
|
Kristian Høgsberg |
77f9263 |
+ (((guint64) saturation * G_MAXUINT32) / 100));
|
|
Kristian Høgsberg |
77f9263 |
+}
|
|
Kristian Høgsberg |
77f9263 |
+
|
|
Kristian Høgsberg |
77f9263 |
+
|
|
Kristian Høgsberg |
77f9263 |
+guint
|
|
Kristian Høgsberg |
77f9263 |
+wnck_window_get_brightness (WnckWindow *window)
|
|
Kristian Høgsberg |
77f9263 |
+{
|
|
Kristian Høgsberg |
77f9263 |
+ guint64 o;
|
|
Kristian Høgsberg |
77f9263 |
+
|
|
Kristian Høgsberg |
77f9263 |
+ g_return_val_if_fail (WNCK_IS_WINDOW (window), 0);
|
|
Kristian Høgsberg |
77f9263 |
+
|
|
Kristian Høgsberg |
77f9263 |
+ o = ((guint64) window->priv->brightness * 1005) / G_MAXUINT32;
|
|
Kristian Høgsberg |
77f9263 |
+
|
|
Kristian Høgsberg |
77f9263 |
+ return o / 10;
|
|
Kristian Høgsberg |
77f9263 |
+}
|
|
Kristian Høgsberg |
77f9263 |
+
|
|
Kristian Høgsberg |
77f9263 |
+void
|
|
Kristian Høgsberg |
77f9263 |
+wnck_window_set_brightness (WnckWindow *window,
|
|
Kristian Høgsberg |
77f9263 |
+ guint brightness)
|
|
Kristian Høgsberg |
77f9263 |
+{
|
|
Kristian Høgsberg |
77f9263 |
+ g_return_if_fail (WNCK_IS_WINDOW (window));
|
|
Kristian Høgsberg |
77f9263 |
+
|
|
Kristian Høgsberg |
77f9263 |
+ _wnck_change_brightness (WNCK_SCREEN_XSCREEN (window->priv->screen),
|
|
Kristian Høgsberg |
77f9263 |
+ wnck_window_get_xid (window),
|
|
Kristian Høgsberg |
77f9263 |
+ (((guint64) brightness * G_MAXUINT32) / 100));
|
|
Kristian Høgsberg |
77f9263 |
+}
|
|
Kristian Høgsberg |
77f9263 |
+
|
|
Kristian Høgsberg |
77f9263 |
/**
|
|
Kristian Høgsberg |
77f9263 |
* wnck_window_is_visible_on_workspace:
|
|
|
81a8d62 |
* @window: a #WnckWindow.
|
|
|
81a8d62 |
@@ -2328,6 +2443,26 @@ _wnck_window_process_property_notify (Wn
|
|
|
81a8d62 |
window->priv->need_update_frame_extents = TRUE;
|
|
Kristian Høgsberg |
77f9263 |
queue_update (window);
|
|
Kristian Høgsberg |
77f9263 |
}
|
|
Kristian Høgsberg |
77f9263 |
+ else if (xevent->xproperty.atom ==
|
|
Kristian Høgsberg |
77f9263 |
+ _wnck_atom_get ("_NET_WM_WINDOW_OPACITY"))
|
|
Kristian Høgsberg |
77f9263 |
+ {
|
|
Kristian Høgsberg |
77f9263 |
+ window->priv->need_update_opacity = TRUE;
|
|
Kristian Høgsberg |
77f9263 |
+ queue_update (window);
|
|
Kristian Høgsberg |
77f9263 |
+ }
|
|
Kristian Høgsberg |
77f9263 |
+
|
|
Kristian Høgsberg |
77f9263 |
+ else if (xevent->xproperty.atom ==
|
|
Kristian Høgsberg |
77f9263 |
+ _wnck_atom_get ("_NET_WM_WINDOW_SATURATION"))
|
|
Kristian Høgsberg |
77f9263 |
+ {
|
|
Kristian Høgsberg |
77f9263 |
+ window->priv->need_update_saturation = TRUE;
|
|
Kristian Høgsberg |
77f9263 |
+ queue_update (window);
|
|
Kristian Høgsberg |
77f9263 |
+ }
|
|
Kristian Høgsberg |
77f9263 |
+
|
|
Kristian Høgsberg |
77f9263 |
+ else if (xevent->xproperty.atom ==
|
|
Kristian Høgsberg |
77f9263 |
+ _wnck_atom_get ("_NET_WM_WINDOW_BRIGHTNESS"))
|
|
Kristian Høgsberg |
77f9263 |
+ {
|
|
Kristian Høgsberg |
77f9263 |
+ window->priv->need_update_brightness = TRUE;
|
|
Kristian Høgsberg |
77f9263 |
+ queue_update (window);
|
|
Kristian Høgsberg |
77f9263 |
+ }
|
|
Kristian Høgsberg |
77f9263 |
}
|
|
Kristian Høgsberg |
77f9263 |
|
|
Kristian Høgsberg |
77f9263 |
void
|
|
|
81a8d62 |
@@ -2879,6 +3014,39 @@ update_frame_extents (WnckWindow *window
|
|
Kristian Høgsberg |
77f9263 |
}
|
|
Kristian Høgsberg |
77f9263 |
|
|
Kristian Høgsberg |
77f9263 |
static void
|
|
Kristian Høgsberg |
77f9263 |
+update_opacity (WnckWindow *window)
|
|
Kristian Høgsberg |
77f9263 |
+{
|
|
Kristian Høgsberg |
77f9263 |
+ if (!window->priv->need_update_opacity)
|
|
Kristian Høgsberg |
77f9263 |
+ return;
|
|
Kristian Høgsberg |
77f9263 |
+
|
|
Kristian Høgsberg |
77f9263 |
+ window->priv->need_update_opacity = FALSE;
|
|
Kristian Høgsberg |
77f9263 |
+
|
|
Kristian Høgsberg |
77f9263 |
+ window->priv->opacity = _wnck_get_opacity (window->priv->xwindow);
|
|
Kristian Høgsberg |
77f9263 |
+}
|
|
Kristian Høgsberg |
77f9263 |
+
|
|
Kristian Høgsberg |
77f9263 |
+static void
|
|
Kristian Høgsberg |
77f9263 |
+update_saturation (WnckWindow *window)
|
|
Kristian Høgsberg |
77f9263 |
+{
|
|
Kristian Høgsberg |
77f9263 |
+ if (!window->priv->need_update_saturation)
|
|
Kristian Høgsberg |
77f9263 |
+ return;
|
|
Kristian Høgsberg |
77f9263 |
+
|
|
Kristian Høgsberg |
77f9263 |
+ window->priv->need_update_saturation = FALSE;
|
|
Kristian Høgsberg |
77f9263 |
+
|
|
Kristian Høgsberg |
77f9263 |
+ window->priv->saturation = _wnck_get_saturation (window->priv->xwindow);
|
|
Kristian Høgsberg |
77f9263 |
+}
|
|
Kristian Høgsberg |
77f9263 |
+
|
|
Kristian Høgsberg |
77f9263 |
+static void
|
|
Kristian Høgsberg |
77f9263 |
+update_brightness (WnckWindow *window)
|
|
Kristian Høgsberg |
77f9263 |
+{
|
|
Kristian Høgsberg |
77f9263 |
+ if (!window->priv->need_update_brightness)
|
|
Kristian Høgsberg |
77f9263 |
+ return;
|
|
Kristian Høgsberg |
77f9263 |
+
|
|
Kristian Høgsberg |
77f9263 |
+ window->priv->need_update_brightness = FALSE;
|
|
Kristian Høgsberg |
77f9263 |
+
|
|
Kristian Høgsberg |
77f9263 |
+ window->priv->brightness = _wnck_get_brightness (window->priv->xwindow);
|
|
Kristian Høgsberg |
77f9263 |
+}
|
|
Kristian Høgsberg |
77f9263 |
+
|
|
Kristian Høgsberg |
77f9263 |
+static void
|
|
Kristian Høgsberg |
77f9263 |
force_update_now (WnckWindow *window)
|
|
Kristian Høgsberg |
77f9263 |
{
|
|
Kristian Høgsberg |
77f9263 |
WnckWindowState old_state;
|
|
|
81a8d62 |
@@ -2914,6 +3082,9 @@ force_update_now (WnckWindow *window)
|
|
Kristian Høgsberg |
77f9263 |
update_workspace (window); /* emits signals */
|
|
Kristian Høgsberg |
77f9263 |
update_actions (window);
|
|
|
81a8d62 |
update_frame_extents (window); /* emits signals */
|
|
Kristian Høgsberg |
77f9263 |
+ update_opacity (window);
|
|
Kristian Høgsberg |
77f9263 |
+ update_saturation (window);
|
|
Kristian Høgsberg |
77f9263 |
+ update_brightness (window);
|
|
Kristian Høgsberg |
77f9263 |
|
|
Kristian Høgsberg |
77f9263 |
get_icons (window);
|
|
Kristian Høgsberg |
77f9263 |
|
|
|
81a8d62 |
--- libwnck-2.19.4/libwnck/window.h.appearance 2007-06-18 15:59:14.000000000 -0400
|
|
|
81a8d62 |
+++ libwnck-2.19.4/libwnck/window.h 2007-06-18 17:08:26.000000000 -0400
|
|
|
81a8d62 |
@@ -268,6 +268,15 @@ struct _WnckWindowClass
|
|
Kristian Høgsberg |
77f9263 |
/* Changed size/position */
|
|
Kristian Høgsberg |
77f9263 |
void (* geometry_changed) (WnckWindow *window);
|
|
|
e4123c2 |
|
|
|
e4123c2 |
+ /* Changed opacity */
|
|
|
e4123c2 |
+ void (* opacity_changed) (WnckWindow *window);
|
|
Kristian Høgsberg |
77f9263 |
+
|
|
|
e4123c2 |
+ /* Changed saturation */
|
|
|
e4123c2 |
+ void (* saturation_changed) (WnckWindow *window);
|
|
Kristian Høgsberg |
77f9263 |
+
|
|
|
e4123c2 |
+ /* Changed brightness */
|
|
|
e4123c2 |
+ void (* brightness_changed) (WnckWindow *window);
|
|
|
e4123c2 |
+
|
|
|
e4123c2 |
/* Padding for future expansion */
|
|
|
e4123c2 |
void (* pad1) (void);
|
|
|
e4123c2 |
void (* pad2) (void);
|
|
|
81a8d62 |
@@ -393,6 +402,15 @@ void wnck_window_set_geometry (WnckWindo
|
|
Kristian Høgsberg |
77f9263 |
int width,
|
|
Kristian Høgsberg |
77f9263 |
int height);
|
|
Kristian Høgsberg |
77f9263 |
|
|
Kristian Høgsberg |
77f9263 |
+guint wnck_window_get_opacity (WnckWindow *window);
|
|
Kristian Høgsberg |
77f9263 |
+void wnck_window_set_opacity (WnckWindow *window, guint opacity);
|
|
Kristian Høgsberg |
77f9263 |
+
|
|
Kristian Høgsberg |
77f9263 |
+guint wnck_window_get_saturation (WnckWindow *window);
|
|
Kristian Høgsberg |
77f9263 |
+void wnck_window_set_saturation (WnckWindow *window, guint saturation);
|
|
Kristian Høgsberg |
77f9263 |
+
|
|
Kristian Høgsberg |
77f9263 |
+guint wnck_window_get_brightness (WnckWindow *window);
|
|
Kristian Høgsberg |
77f9263 |
+void wnck_window_set_brightness (WnckWindow *window, guint brightness);
|
|
Kristian Høgsberg |
77f9263 |
+
|
|
Kristian Høgsberg |
77f9263 |
gboolean wnck_window_is_visible_on_workspace (WnckWindow *window,
|
|
Kristian Høgsberg |
77f9263 |
WnckWorkspace *workspace);
|
|
Kristian Høgsberg |
77f9263 |
gboolean wnck_window_is_on_workspace (WnckWindow *window,
|
|
|
81a8d62 |
--- libwnck-2.19.4/libwnck/window-action-menu.c.appearance 2007-06-18 15:59:14.000000000 -0400
|
|
|
81a8d62 |
+++ libwnck-2.19.4/libwnck/window-action-menu.c 2007-06-18 17:08:26.000000000 -0400
|
|
|
81a8d62 |
@@ -48,6 +48,10 @@ typedef enum
|
|
Kristian Høgsberg |
77f9263 |
ABOVE,
|
|
Kristian Høgsberg |
77f9263 |
MOVE,
|
|
Kristian Høgsberg |
77f9263 |
RESIZE,
|
|
Kristian Høgsberg |
77f9263 |
+ CHANGE_OPACITY,
|
|
Kristian Høgsberg |
77f9263 |
+ CHANGE_SATURATION,
|
|
Kristian Høgsberg |
77f9263 |
+ CHANGE_BRIGHTNESS,
|
|
Kristian Høgsberg |
77f9263 |
+ RESET,
|
|
Kristian Høgsberg |
77f9263 |
PIN,
|
|
|
6b12524 |
UNPIN,
|
|
Kristian Høgsberg |
77f9263 |
LEFT,
|
|
|
81a8d62 |
@@ -68,6 +72,11 @@ struct _ActionMenuData
|
|
Kristian Høgsberg |
77f9263 |
GtkWidget *above_item;
|
|
Kristian Høgsberg |
77f9263 |
GtkWidget *move_item;
|
|
Kristian Høgsberg |
77f9263 |
GtkWidget *resize_item;
|
|
Kristian Høgsberg |
77f9263 |
+ GtkWidget *appearance_item;
|
|
Kristian Høgsberg |
77f9263 |
+ GtkWidget *opacity_item;
|
|
Kristian Høgsberg |
77f9263 |
+ GtkWidget *saturation_item;
|
|
Kristian Høgsberg |
77f9263 |
+ GtkWidget *brightness_item;
|
|
Kristian Høgsberg |
77f9263 |
+ GtkWidget *reset_item;
|
|
Kristian Høgsberg |
77f9263 |
GtkWidget *close_item;
|
|
Kristian Høgsberg |
77f9263 |
GtkWidget *workspace_separator;
|
|
Kristian Høgsberg |
77f9263 |
GtkWidget *pin_item;
|
|
|
81a8d62 |
@@ -170,6 +179,46 @@ item_activated_callback (GtkWidget *menu
|
|
Kristian Høgsberg |
77f9263 |
case RESIZE:
|
|
Kristian Høgsberg |
77f9263 |
wnck_window_keyboard_size (amd->window);
|
|
Kristian Høgsberg |
77f9263 |
break;
|
|
Kristian Høgsberg |
77f9263 |
+ case CHANGE_OPACITY:
|
|
Kristian Høgsberg |
77f9263 |
+ {
|
|
Kristian Høgsberg |
77f9263 |
+ int opacity_value;
|
|
Kristian Høgsberg |
77f9263 |
+
|
|
Kristian Høgsberg |
77f9263 |
+ opacity_value =
|
|
Kristian Høgsberg |
77f9263 |
+ GPOINTER_TO_INT (g_object_get_data (G_OBJECT (menu_item),
|
|
Kristian Høgsberg |
77f9263 |
+ "opacity"));
|
|
Kristian Høgsberg |
77f9263 |
+
|
|
Kristian Høgsberg |
77f9263 |
+ wnck_window_set_opacity (amd->window, opacity_value);
|
|
Kristian Høgsberg |
77f9263 |
+ break;
|
|
Kristian Høgsberg |
77f9263 |
+ }
|
|
Kristian Høgsberg |
77f9263 |
+ case CHANGE_SATURATION:
|
|
Kristian Høgsberg |
77f9263 |
+ {
|
|
Kristian Høgsberg |
77f9263 |
+ int saturation_value;
|
|
Kristian Høgsberg |
77f9263 |
+
|
|
Kristian Høgsberg |
77f9263 |
+ saturation_value =
|
|
Kristian Høgsberg |
77f9263 |
+ GPOINTER_TO_INT (g_object_get_data (G_OBJECT (menu_item),
|
|
Kristian Høgsberg |
77f9263 |
+ "saturation"));
|
|
Kristian Høgsberg |
77f9263 |
+
|
|
Kristian Høgsberg |
77f9263 |
+ wnck_window_set_saturation (amd->window, saturation_value);
|
|
Kristian Høgsberg |
77f9263 |
+ break;
|
|
Kristian Høgsberg |
77f9263 |
+ }
|
|
Kristian Høgsberg |
77f9263 |
+ case CHANGE_BRIGHTNESS:
|
|
Kristian Høgsberg |
77f9263 |
+ {
|
|
Kristian Høgsberg |
77f9263 |
+ int brightness_value;
|
|
Kristian Høgsberg |
77f9263 |
+
|
|
Kristian Høgsberg |
77f9263 |
+ brightness_value =
|
|
Kristian Høgsberg |
77f9263 |
+ GPOINTER_TO_INT (g_object_get_data (G_OBJECT (menu_item),
|
|
Kristian Høgsberg |
77f9263 |
+ "brightness"));
|
|
Kristian Høgsberg |
77f9263 |
+
|
|
Kristian Høgsberg |
77f9263 |
+ wnck_window_set_brightness (amd->window, brightness_value);
|
|
Kristian Høgsberg |
77f9263 |
+ break;
|
|
Kristian Høgsberg |
77f9263 |
+ }
|
|
Kristian Høgsberg |
77f9263 |
+ case RESET:
|
|
Kristian Høgsberg |
77f9263 |
+ {
|
|
Kristian Høgsberg |
77f9263 |
+ wnck_window_set_brightness (amd->window, 100);
|
|
Kristian Høgsberg |
77f9263 |
+ wnck_window_set_saturation (amd->window, 100);
|
|
Kristian Høgsberg |
77f9263 |
+ wnck_window_set_opacity (amd->window, 100);
|
|
Kristian Høgsberg |
77f9263 |
+ break;
|
|
Kristian Høgsberg |
77f9263 |
+ }
|
|
Kristian Høgsberg |
77f9263 |
case PIN:
|
|
Kristian Høgsberg |
77f9263 |
wnck_window_unpin (amd->window);
|
|
|
6b12524 |
break;
|
|
|
81a8d62 |
@@ -269,6 +318,10 @@ update_menu_state (ActionMenuData *amd)
|
|
Kristian Høgsberg |
77f9263 |
WnckWindowActions actions;
|
|
Kristian Høgsberg |
77f9263 |
WnckScreen *screen;
|
|
Kristian Høgsberg |
77f9263 |
|
|
Kristian Høgsberg |
77f9263 |
+ guint present_opacity;
|
|
Kristian Høgsberg |
77f9263 |
+ guint present_saturation;
|
|
Kristian Høgsberg |
77f9263 |
+ guint present_brightness;
|
|
Kristian Høgsberg |
77f9263 |
+
|
|
Kristian Høgsberg |
77f9263 |
amd->idle_handler = 0;
|
|
Kristian Høgsberg |
77f9263 |
|
|
Kristian Høgsberg |
77f9263 |
actions = wnck_window_get_actions (amd->window);
|
|
|
81a8d62 |
@@ -316,6 +369,19 @@ update_menu_state (ActionMenuData *amd)
|
|
Kristian Høgsberg |
77f9263 |
gtk_widget_set_sensitive (amd->above_item,
|
|
Kristian Høgsberg |
77f9263 |
(actions & WNCK_WINDOW_ACTION_ABOVE) != 0);
|
|
Kristian Høgsberg |
77f9263 |
|
|
Kristian Høgsberg |
77f9263 |
+ present_opacity = wnck_window_get_opacity (amd->window);
|
|
Kristian Høgsberg |
77f9263 |
+ present_saturation = wnck_window_get_saturation (amd->window);
|
|
Kristian Høgsberg |
77f9263 |
+ present_brightness = wnck_window_get_brightness (amd->window);
|
|
Kristian Høgsberg |
77f9263 |
+
|
|
Kristian Høgsberg |
77f9263 |
+ if (present_opacity == 100 && present_saturation == 100 && present_brightness == 100)
|
|
Kristian Høgsberg |
77f9263 |
+ {
|
|
Kristian Høgsberg |
77f9263 |
+ gtk_widget_set_sensitive (amd->reset_item, FALSE);
|
|
Kristian Høgsberg |
77f9263 |
+ }
|
|
Kristian Høgsberg |
77f9263 |
+ else
|
|
Kristian Høgsberg |
77f9263 |
+ {
|
|
Kristian Høgsberg |
77f9263 |
+ gtk_widget_set_sensitive (amd->reset_item, TRUE);
|
|
Kristian Høgsberg |
77f9263 |
+ }
|
|
Kristian Høgsberg |
77f9263 |
+
|
|
|
6b12524 |
g_signal_handlers_block_by_func (G_OBJECT (amd->pin_item),
|
|
|
6b12524 |
item_activated_callback,
|
|
|
6b12524 |
GINT_TO_POINTER (PIN));
|
|
|
81a8d62 |
@@ -573,7 +639,7 @@ get_workspace_name_with_accel (WnckWindo
|
|
Kristian Høgsberg |
77f9263 |
GtkWidget*
|
|
Kristian Høgsberg |
77f9263 |
wnck_create_window_action_menu (WnckWindow *window)
|
|
Kristian Høgsberg |
77f9263 |
{
|
|
Kristian Høgsberg |
77f9263 |
- GtkWidget *menu, *submenu;
|
|
Kristian Høgsberg |
77f9263 |
+ GtkWidget *menu, *submenu, *submenu2;
|
|
Kristian Høgsberg |
77f9263 |
ActionMenuData *amd;
|
|
Kristian Høgsberg |
77f9263 |
GtkWidget *separator;
|
|
|
81a8d62 |
int num_workspaces, window_space, i;
|
|
|
81a8d62 |
@@ -741,6 +807,154 @@ wnck_create_window_action_menu (WnckWind
|
|
|
e4123c2 |
g_free (label);
|
|
|
e4123c2 |
}
|
|
Kristian Høgsberg |
77f9263 |
|
|
Kristian Høgsberg |
77f9263 |
+ if (wnck_screen_net_wm_supports (wnck_window_get_screen (amd->window),
|
|
Kristian Høgsberg |
77f9263 |
+ "_NET_WM_WINDOW_OPACITY"))
|
|
Kristian Høgsberg |
77f9263 |
+ {
|
|
Kristian Høgsberg |
77f9263 |
+
|
|
Kristian Høgsberg |
77f9263 |
+ amd->appearance_item = gtk_menu_item_new_with_mnemonic (_("_Appearance"));
|
|
Kristian Høgsberg |
77f9263 |
+ gtk_widget_show (amd->appearance_item);
|
|
Kristian Høgsberg |
77f9263 |
+
|
|
Kristian Høgsberg |
77f9263 |
+ submenu = gtk_menu_new ();
|
|
Kristian Høgsberg |
77f9263 |
+ gtk_menu_item_set_submenu (GTK_MENU_ITEM (amd->appearance_item),
|
|
Kristian Høgsberg |
77f9263 |
+ submenu);
|
|
Kristian Høgsberg |
77f9263 |
+
|
|
Kristian Høgsberg |
77f9263 |
+ gtk_menu_shell_append (GTK_MENU_SHELL (menu), amd->appearance_item);
|
|
Kristian Høgsberg |
77f9263 |
+
|
|
Kristian Høgsberg |
77f9263 |
+ }
|
|
Kristian Høgsberg |
77f9263 |
+
|
|
Kristian Høgsberg |
77f9263 |
+ if (wnck_screen_net_wm_supports (wnck_window_get_screen (amd->window),
|
|
Kristian Høgsberg |
77f9263 |
+ "_NET_WM_WINDOW_OPACITY"))
|
|
Kristian Høgsberg |
77f9263 |
+ {
|
|
Kristian Høgsberg |
77f9263 |
+ guint present_opacity;
|
|
Kristian Høgsberg |
77f9263 |
+ gint j;
|
|
Kristian Høgsberg |
77f9263 |
+
|
|
Kristian Høgsberg |
77f9263 |
+ amd->opacity_item = gtk_menu_item_new_with_mnemonic (_("_Opacity"));
|
|
Kristian Høgsberg |
77f9263 |
+ gtk_widget_show (amd->opacity_item);
|
|
Kristian Høgsberg |
77f9263 |
+
|
|
Kristian Høgsberg |
77f9263 |
+ submenu2 = gtk_menu_new ();
|
|
Kristian Høgsberg |
77f9263 |
+ gtk_menu_item_set_submenu (GTK_MENU_ITEM (amd->opacity_item),
|
|
Kristian Høgsberg |
77f9263 |
+ submenu2);
|
|
Kristian Høgsberg |
77f9263 |
+
|
|
Kristian Høgsberg |
77f9263 |
+ gtk_menu_shell_append (GTK_MENU_SHELL (submenu), amd->opacity_item);
|
|
Kristian Høgsberg |
77f9263 |
+
|
|
Kristian Høgsberg |
77f9263 |
+ present_opacity = wnck_window_get_opacity (window);
|
|
Kristian Høgsberg |
77f9263 |
+ for (j = 0; j < 4; j++)
|
|
Kristian Høgsberg |
77f9263 |
+ {
|
|
Kristian Høgsberg |
77f9263 |
+ GtkWidget *item;
|
|
Kristian Høgsberg |
77f9263 |
+ gchar *label;
|
|
Kristian Høgsberg |
77f9263 |
+ guint o;
|
|
Kristian Høgsberg |
77f9263 |
+
|
|
Kristian Høgsberg |
77f9263 |
+ label = g_strdup_printf ("%d%%", (j + 1) * 25);
|
|
Kristian Høgsberg |
77f9263 |
+
|
|
Kristian Høgsberg |
77f9263 |
+ item = make_menu_item (amd, CHANGE_OPACITY);
|
|
Kristian Høgsberg |
77f9263 |
+
|
|
Kristian Høgsberg |
77f9263 |
+ o = (j + 1) * 25;
|
|
Kristian Høgsberg |
77f9263 |
+ g_object_set_data (G_OBJECT (item), "opacity", GINT_TO_POINTER (o));
|
|
Kristian Høgsberg |
77f9263 |
+
|
|
Kristian Høgsberg |
77f9263 |
+ if (o == present_opacity)
|
|
Kristian Høgsberg |
77f9263 |
+ gtk_widget_set_sensitive (item, FALSE);
|
|
Kristian Høgsberg |
77f9263 |
+
|
|
Kristian Høgsberg |
77f9263 |
+ gtk_menu_shell_append (GTK_MENU_SHELL (submenu2), item);
|
|
Kristian Høgsberg |
77f9263 |
+
|
|
Kristian Høgsberg |
77f9263 |
+ set_item_text (item, label);
|
|
Kristian Høgsberg |
77f9263 |
+ set_item_stock (item, NULL);
|
|
Kristian Høgsberg |
77f9263 |
+
|
|
Kristian Høgsberg |
77f9263 |
+ g_free (label);
|
|
Kristian Høgsberg |
77f9263 |
+ }
|
|
Kristian Høgsberg |
77f9263 |
+ }
|
|
Kristian Høgsberg |
77f9263 |
+
|
|
Kristian Høgsberg |
77f9263 |
+ if (wnck_screen_net_wm_supports (wnck_window_get_screen (amd->window),
|
|
Kristian Høgsberg |
77f9263 |
+ "_NET_WM_WINDOW_SATURATION"))
|
|
Kristian Høgsberg |
77f9263 |
+ {
|
|
Kristian Høgsberg |
77f9263 |
+ guint present_saturation;
|
|
Kristian Høgsberg |
77f9263 |
+ gint j;
|
|
Kristian Høgsberg |
77f9263 |
+
|
|
Kristian Høgsberg |
77f9263 |
+ amd->saturation_item = gtk_menu_item_new_with_mnemonic (_("_Saturation"));
|
|
Kristian Høgsberg |
77f9263 |
+ gtk_widget_show (amd->saturation_item);
|
|
Kristian Høgsberg |
77f9263 |
+
|
|
Kristian Høgsberg |
77f9263 |
+ submenu2 = gtk_menu_new ();
|
|
Kristian Høgsberg |
77f9263 |
+ gtk_menu_item_set_submenu (GTK_MENU_ITEM (amd->saturation_item),
|
|
Kristian Høgsberg |
77f9263 |
+ submenu2);
|
|
Kristian Høgsberg |
77f9263 |
+
|
|
Kristian Høgsberg |
77f9263 |
+ gtk_menu_shell_append (GTK_MENU_SHELL (submenu), amd->saturation_item);
|
|
Kristian Høgsberg |
77f9263 |
+
|
|
Kristian Høgsberg |
77f9263 |
+ present_saturation = wnck_window_get_saturation (window);
|
|
Kristian Høgsberg |
77f9263 |
+ for (j = 0; j < 4; j++)
|
|
Kristian Høgsberg |
77f9263 |
+ {
|
|
Kristian Høgsberg |
77f9263 |
+ GtkWidget *item;
|
|
Kristian Høgsberg |
77f9263 |
+ gchar *label;
|
|
Kristian Høgsberg |
77f9263 |
+ guint o;
|
|
Kristian Høgsberg |
77f9263 |
+
|
|
Kristian Høgsberg |
77f9263 |
+ label = g_strdup_printf ("%d%%", (j + 1) * 25);
|
|
Kristian Høgsberg |
77f9263 |
+
|
|
Kristian Høgsberg |
77f9263 |
+ item = make_menu_item (amd, CHANGE_SATURATION);
|
|
Kristian Høgsberg |
77f9263 |
+
|
|
Kristian Høgsberg |
77f9263 |
+ o = (j + 1) * 25;
|
|
Kristian Høgsberg |
77f9263 |
+ g_object_set_data (G_OBJECT (item), "saturation", GINT_TO_POINTER (o));
|
|
Kristian Høgsberg |
77f9263 |
+
|
|
Kristian Høgsberg |
77f9263 |
+ if (o == present_saturation)
|
|
Kristian Høgsberg |
77f9263 |
+ gtk_widget_set_sensitive (item, FALSE);
|
|
Kristian Høgsberg |
77f9263 |
+
|
|
Kristian Høgsberg |
77f9263 |
+ gtk_menu_shell_append (GTK_MENU_SHELL (submenu2), item);
|
|
Kristian Høgsberg |
77f9263 |
+
|
|
Kristian Høgsberg |
77f9263 |
+ set_item_text (item, label);
|
|
Kristian Høgsberg |
77f9263 |
+ set_item_stock (item, NULL);
|
|
Kristian Høgsberg |
77f9263 |
+
|
|
Kristian Høgsberg |
77f9263 |
+ g_free (label);
|
|
Kristian Høgsberg |
77f9263 |
+ }
|
|
Kristian Høgsberg |
77f9263 |
+ }
|
|
Kristian Høgsberg |
77f9263 |
+
|
|
Kristian Høgsberg |
77f9263 |
+ if (wnck_screen_net_wm_supports (wnck_window_get_screen (amd->window),
|
|
Kristian Høgsberg |
77f9263 |
+ "_NET_WM_WINDOW_BRIGHTNESS"))
|
|
Kristian Høgsberg |
77f9263 |
+ {
|
|
Kristian Høgsberg |
77f9263 |
+ guint present_brightness;
|
|
Kristian Høgsberg |
77f9263 |
+ gint j;
|
|
Kristian Høgsberg |
77f9263 |
+
|
|
Kristian Høgsberg |
77f9263 |
+ amd->brightness_item = gtk_menu_item_new_with_mnemonic (_("_Brightness"));
|
|
Kristian Høgsberg |
77f9263 |
+ gtk_widget_show (amd->brightness_item);
|
|
Kristian Høgsberg |
77f9263 |
+
|
|
Kristian Høgsberg |
77f9263 |
+ submenu2 = gtk_menu_new ();
|
|
Kristian Høgsberg |
77f9263 |
+ gtk_menu_item_set_submenu (GTK_MENU_ITEM (amd->brightness_item),
|
|
Kristian Høgsberg |
77f9263 |
+ submenu2);
|
|
Kristian Høgsberg |
77f9263 |
+
|
|
Kristian Høgsberg |
77f9263 |
+ gtk_menu_shell_append (GTK_MENU_SHELL (submenu), amd->brightness_item);
|
|
Kristian Høgsberg |
77f9263 |
+
|
|
Kristian Høgsberg |
77f9263 |
+ present_brightness = wnck_window_get_brightness (window);
|
|
Kristian Høgsberg |
77f9263 |
+ for (j = 0; j < 4; j++)
|
|
Kristian Høgsberg |
77f9263 |
+ {
|
|
Kristian Høgsberg |
77f9263 |
+ GtkWidget *item;
|
|
Kristian Høgsberg |
77f9263 |
+ gchar *label;
|
|
Kristian Høgsberg |
77f9263 |
+ guint o;
|
|
Kristian Høgsberg |
77f9263 |
+
|
|
Kristian Høgsberg |
77f9263 |
+ label = g_strdup_printf ("%d%%", (j + 1) * 25);
|
|
Kristian Høgsberg |
77f9263 |
+
|
|
Kristian Høgsberg |
77f9263 |
+ item = make_menu_item (amd, CHANGE_BRIGHTNESS);
|
|
Kristian Høgsberg |
77f9263 |
+
|
|
Kristian Høgsberg |
77f9263 |
+ o = (j + 1) * 25;
|
|
Kristian Høgsberg |
77f9263 |
+ g_object_set_data (G_OBJECT (item), "brightness", GINT_TO_POINTER (o));
|
|
Kristian Høgsberg |
77f9263 |
+
|
|
Kristian Høgsberg |
77f9263 |
+ if (o == present_brightness)
|
|
Kristian Høgsberg |
77f9263 |
+ gtk_widget_set_sensitive (item, FALSE);
|
|
Kristian Høgsberg |
77f9263 |
+
|
|
Kristian Høgsberg |
77f9263 |
+ gtk_menu_shell_append (GTK_MENU_SHELL (submenu2), item);
|
|
Kristian Høgsberg |
77f9263 |
+
|
|
Kristian Høgsberg |
77f9263 |
+ set_item_text (item, label);
|
|
Kristian Høgsberg |
77f9263 |
+ set_item_stock (item, NULL);
|
|
Kristian Høgsberg |
77f9263 |
+
|
|
Kristian Høgsberg |
77f9263 |
+ g_free (label);
|
|
Kristian Høgsberg |
77f9263 |
+ }
|
|
Kristian Høgsberg |
77f9263 |
+ }
|
|
Kristian Høgsberg |
77f9263 |
+
|
|
Kristian Høgsberg |
77f9263 |
+ if (wnck_screen_net_wm_supports (wnck_window_get_screen (amd->window),
|
|
Kristian Høgsberg |
77f9263 |
+ "_NET_WM_WINDOW_OPACITY"))
|
|
Kristian Høgsberg |
77f9263 |
+ {
|
|
Kristian Høgsberg |
77f9263 |
+ amd->reset_item = make_menu_item (amd, RESET);
|
|
Kristian Høgsberg |
77f9263 |
+ gtk_menu_shell_append (GTK_MENU_SHELL (submenu), amd->reset_item);
|
|
Kristian Høgsberg |
77f9263 |
+
|
|
Kristian Høgsberg |
77f9263 |
+ set_item_text (amd->reset_item, _("_Reset settings"));
|
|
Kristian Høgsberg |
77f9263 |
+ }
|
|
Kristian Høgsberg |
77f9263 |
+
|
|
Kristian Høgsberg |
77f9263 |
+
|
|
Kristian Høgsberg |
77f9263 |
separator = gtk_separator_menu_item_new ();
|
|
Kristian Høgsberg |
77f9263 |
gtk_widget_show (separator);
|
|
Kristian Høgsberg |
77f9263 |
gtk_menu_shell_append (GTK_MENU_SHELL (menu),
|