|
raveit |
8d2b955 |
Author: Sebastien Bacher <seb128@canonical.com>
|
|
raveit |
8d2b955 |
Description: add cursor theme and size support
|
|
raveit |
8d2b955 |
Origin: vendor, ubuntu (1:0.3.6-1ubuntu4)
|
|
raveit |
8d2b955 |
Bug-Ubuntu: https://bugs.launchpad.net/ubuntu/+source/compiz/+bug/86184
|
|
raveit |
8d2b955 |
|
|
raveit |
8d2b955 |
Author: Jasmine Hassan <jasmine.aura@gmail.com>
|
|
raveit |
8d2b955 |
Description: Updated to migrate to Mate Desktop
|
|
raveit |
8d2b955 |
Origin: <other>, build for LMDE/Debian Testing
|
|
raveit |
8d2b955 |
Last-Updated: 2012-10-09
|
|
raveit |
8d2b955 |
|
|
raveit |
8d2b955 |
--- a/configure.ac
|
|
raveit |
8d2b955 |
+++ b/configure.ac
|
|
raveit |
8d2b955 |
@@ -125,6 +125,7 @@ COMPIZ_REQUIRES="x11 \
|
|
raveit |
8d2b955 |
xdamage \
|
|
raveit |
8d2b955 |
xrandr \
|
|
raveit |
8d2b955 |
xinerama \
|
|
raveit |
8d2b955 |
+ xcursor \
|
|
raveit |
8d2b955 |
ice \
|
|
raveit |
8d2b955 |
sm \
|
|
raveit |
8d2b955 |
libxml-2.0 \
|
|
raveit |
8d2b955 |
@@ -301,6 +302,7 @@ AC_ARG_ENABLE(mate-keybindings,
|
|
raveit |
8d2b955 |
if test "x$use_gtk" = "xyes"; then
|
|
raveit |
8d2b955 |
PKG_CHECK_MODULES(GTK_WINDOW_DECORATOR,
|
|
raveit |
8d2b955 |
xrender >= 0.8.4 \
|
|
raveit |
8d2b955 |
+ xcursor \
|
|
raveit |
8d2b955 |
gtk+-2.0 >= 2.8.0 \
|
|
raveit |
8d2b955 |
libwnck-1.0 \
|
|
raveit |
8d2b955 |
pangocairo,
|
|
raveit |
8d2b955 |
--- a/gtk/window-decorator/gtk-window-decorator.c
|
|
raveit |
8d2b955 |
+++ b/gtk/window-decorator/gtk-window-decorator.c
|
|
raveit |
8d2b955 |
@@ -30,6 +30,7 @@
|
|
raveit |
8d2b955 |
#include <X11/cursorfont.h>
|
|
raveit |
8d2b955 |
#include <X11/extensions/Xrender.h>
|
|
raveit |
8d2b955 |
#include <X11/Xregion.h>
|
|
raveit |
8d2b955 |
+#include <X11/Xcursor/Xcursor.h>
|
|
raveit |
8d2b955 |
|
|
raveit |
8d2b955 |
#include <gtk/gtk.h>
|
|
raveit |
8d2b955 |
#include <gdk/gdkx.h>
|
|
raveit |
8d2b955 |
@@ -75,6 +76,14 @@
|
|
raveit |
8d2b955 |
#include <marco-private/theme.h>
|
|
raveit |
8d2b955 |
#endif
|
|
raveit |
8d2b955 |
|
|
raveit |
8d2b955 |
+#define MATE_MOUSE_DIR "/desktop/mate/peripherals/mouse"
|
|
raveit |
8d2b955 |
+
|
|
raveit |
8d2b955 |
+#define MATE_CURSOR_THEME_KEY \
|
|
raveit |
8d2b955 |
+ MATE_MOUSE_DIR "/cursor_theme"
|
|
raveit |
8d2b955 |
+
|
|
raveit |
8d2b955 |
+#define MATE_CURSOR_SIZE_KEY \
|
|
raveit |
8d2b955 |
+ MATE_MOUSE_DIR "/cursor_size"
|
|
raveit |
8d2b955 |
+
|
|
raveit |
8d2b955 |
#define MARCO_MATECONF_DIR "/apps/marco/general"
|
|
raveit |
8d2b955 |
|
|
raveit |
8d2b955 |
#define COMPIZ_USE_SYSTEM_FONT_KEY \
|
|
raveit |
8d2b955 |
@@ -138,6 +147,13 @@
|
|
raveit |
8d2b955 |
#define WHEEL_ACTION_KEY \
|
|
raveit |
8d2b955 |
MATECONF_DIR "/mouse_wheel_action"
|
|
raveit |
8d2b955 |
|
|
raveit |
8d2b955 |
+#define COMPIZ_MATECONF_DIR2 "/apps/compiz/general/allscreens/options"
|
|
raveit |
8d2b955 |
+#define COMPIZ_CURSOR_THEME_KEY \
|
|
raveit |
8d2b955 |
+ COMPIZ_MATECONF_DIR2 "/cursor_theme"
|
|
raveit |
8d2b955 |
+
|
|
raveit |
8d2b955 |
+#define COMPIZ_CURSOR_SIZE_KEY \
|
|
raveit |
8d2b955 |
+ COMPIZ_MATECONF_DIR2 "/cursor_size"
|
|
raveit |
8d2b955 |
+
|
|
raveit |
8d2b955 |
#define DBUS_DEST "org.freedesktop.compiz"
|
|
raveit |
8d2b955 |
#define DBUS_PATH "/org/freedesktop/compiz/decoration/allscreens"
|
|
raveit |
8d2b955 |
#define DBUS_INTERFACE "org.freedesktop.compiz"
|
|
raveit |
8d2b955 |
@@ -6462,6 +6478,44 @@ button_layout_changed (MateConfClient *c
|
|
raveit |
8d2b955 |
}
|
|
raveit |
8d2b955 |
|
|
raveit |
8d2b955 |
static void
|
|
raveit |
8d2b955 |
+cursor_theme_changed (MateConfClient *client)
|
|
raveit |
8d2b955 |
+{
|
|
raveit |
8d2b955 |
+ gchar *theme;
|
|
raveit |
8d2b955 |
+ gint size;
|
|
raveit |
8d2b955 |
+
|
|
raveit |
8d2b955 |
+ theme = mateconf_client_get_string(client, MATE_CURSOR_THEME_KEY, NULL);
|
|
raveit |
8d2b955 |
+ size = mateconf_client_get_int(client, MATE_CURSOR_SIZE_KEY, NULL);
|
|
raveit |
8d2b955 |
+
|
|
raveit |
8d2b955 |
+ mateconf_client_set_string(client, COMPIZ_CURSOR_THEME_KEY, theme, NULL);
|
|
raveit |
8d2b955 |
+
|
|
raveit |
8d2b955 |
+ mateconf_client_set_int(client, COMPIZ_CURSOR_SIZE_KEY, size, NULL);
|
|
raveit |
8d2b955 |
+
|
|
raveit |
8d2b955 |
+ if (theme && strlen(theme))
|
|
raveit |
8d2b955 |
+ {
|
|
raveit |
8d2b955 |
+ gint i, j;
|
|
raveit |
8d2b955 |
+ GdkDisplay *gdkdisplay = gdk_display_get_default ();
|
|
raveit |
8d2b955 |
+ Display *xdisplay = gdk_x11_display_get_xdisplay (gdkdisplay);
|
|
raveit |
8d2b955 |
+
|
|
raveit |
8d2b955 |
+
|
|
raveit |
8d2b955 |
+ XcursorSetTheme (xdisplay, theme);
|
|
raveit |
8d2b955 |
+ XcursorSetDefaultSize (xdisplay, size);
|
|
raveit |
8d2b955 |
+
|
|
raveit |
8d2b955 |
+ for (i = 0; i < 3; i++)
|
|
raveit |
8d2b955 |
+ {
|
|
raveit |
8d2b955 |
+ for (j = 0; j < 3; j++)
|
|
raveit |
8d2b955 |
+ {
|
|
raveit |
8d2b955 |
+ if (cursor[i][j].shape != XC_left_ptr)
|
|
raveit |
8d2b955 |
+ {
|
|
raveit |
8d2b955 |
+ XFreeCursor (xdisplay, cursor[i][j].cursor);
|
|
raveit |
8d2b955 |
+ cursor[i][j].cursor =
|
|
raveit |
8d2b955 |
+ XCreateFontCursor (xdisplay, cursor[i][j].shape);
|
|
raveit |
8d2b955 |
+ }
|
|
raveit |
8d2b955 |
+ }
|
|
raveit |
8d2b955 |
+ }
|
|
raveit |
8d2b955 |
+ }
|
|
raveit |
8d2b955 |
+}
|
|
raveit |
8d2b955 |
+
|
|
raveit |
8d2b955 |
+static void
|
|
raveit |
8d2b955 |
value_changed (MateConfClient *client,
|
|
raveit |
8d2b955 |
const gchar *key,
|
|
raveit |
8d2b955 |
MateConfValue *value,
|
|
raveit |
8d2b955 |
@@ -6539,6 +6593,11 @@ value_changed (MateConfClient *client,
|
|
raveit |
8d2b955 |
if (theme_opacity_changed (client))
|
|
raveit |
8d2b955 |
changed = TRUE;
|
|
raveit |
8d2b955 |
}
|
|
raveit |
8d2b955 |
+ else if (strcmp (key, MATE_CURSOR_THEME_KEY) == 0 ||
|
|
raveit |
8d2b955 |
+ strcmp (key, MATE_CURSOR_SIZE_KEY) == 0)
|
|
raveit |
8d2b955 |
+ {
|
|
raveit |
8d2b955 |
+ cursor_theme_changed (client);
|
|
raveit |
8d2b955 |
+ }
|
|
raveit |
8d2b955 |
|
|
raveit |
8d2b955 |
if (changed)
|
|
raveit |
8d2b955 |
decorations_changed (data);
|
|
raveit |
8d2b955 |
@@ -6702,6 +6761,11 @@ init_settings (WnckScreen *screen)
|
|
raveit |
8d2b955 |
NULL);
|
|
raveit |
8d2b955 |
|
|
raveit |
8d2b955 |
mateconf_client_add_dir (mateconf,
|
|
raveit |
8d2b955 |
+ MATE_MOUSE_DIR,
|
|
raveit |
8d2b955 |
+ MATECONF_CLIENT_PRELOAD_ONELEVEL,
|
|
raveit |
8d2b955 |
+ NULL);
|
|
raveit |
8d2b955 |
+
|
|
raveit |
8d2b955 |
+ mateconf_client_add_dir (mateconf,
|
|
raveit |
8d2b955 |
COMPIZ_MATECONF_DIR1,
|
|
raveit |
8d2b955 |
MATECONF_CLIENT_PRELOAD_ONELEVEL,
|
|
raveit |
8d2b955 |
NULL);
|
|
raveit |
8d2b955 |
@@ -6710,6 +6774,9 @@ init_settings (WnckScreen *screen)
|
|
raveit |
8d2b955 |
"value_changed",
|
|
raveit |
8d2b955 |
G_CALLBACK (value_changed),
|
|
raveit |
8d2b955 |
screen);
|
|
raveit |
8d2b955 |
+
|
|
raveit |
8d2b955 |
+ cursor_theme_changed(mateconf);
|
|
raveit |
8d2b955 |
+
|
|
raveit |
8d2b955 |
#elif USE_DBUS_GLIB
|
|
raveit |
8d2b955 |
DBusConnection *connection;
|
|
raveit |
8d2b955 |
DBusMessage *reply;
|
|
raveit |
8d2b955 |
--- a/metadata/core.xml.in.in
|
|
raveit |
8d2b955 |
+++ b/metadata/core.xml.in.in
|
|
raveit |
8d2b955 |
@@ -35,6 +35,18 @@
|
|
raveit |
8d2b955 |
<min>0</min>
|
|
raveit |
8d2b955 |
<max>10000</max>
|
|
raveit |
8d2b955 |
</option>
|
|
raveit |
8d2b955 |
+ <option name="cursor_theme" type="string">
|
|
raveit |
8d2b955 |
+ <_short>Cursor theme</_short>
|
|
raveit |
8d2b955 |
+ <_long>Cursor theme name</_long>
|
|
raveit |
8d2b955 |
+ <default></default>
|
|
raveit |
8d2b955 |
+ </option>
|
|
raveit |
8d2b955 |
+ <option name="cursor_size" type="int">
|
|
raveit |
8d2b955 |
+ <_short>Cursor size</_short>
|
|
raveit |
8d2b955 |
+ <_long>Size of the cursor</_long>
|
|
raveit |
8d2b955 |
+ <default>18</default>
|
|
raveit |
8d2b955 |
+ <min>8</min>
|
|
raveit |
8d2b955 |
+ <max>128</max>
|
|
raveit |
8d2b955 |
+ </option>
|
|
raveit |
8d2b955 |
<option name="ping_delay" type="int">
|
|
raveit |
8d2b955 |
<_short>Ping Delay</_short>
|
|
raveit |
8d2b955 |
<_long>Interval between ping messages</_long>
|
|
raveit |
8d2b955 |
--- a/src/display.c
|
|
raveit |
8d2b955 |
+++ b/src/display.c
|
|
raveit |
8d2b955 |
@@ -41,6 +41,8 @@
|
|
raveit |
8d2b955 |
#include <X11/extensions/Xcomposite.h>
|
|
raveit |
8d2b955 |
#include <X11/extensions/Xrandr.h>
|
|
raveit |
8d2b955 |
#include <X11/extensions/shape.h>
|
|
raveit |
8d2b955 |
+#include <X11/Xcursor/Xcursor.h>
|
|
raveit |
8d2b955 |
+#include <X11/cursorfont.h>
|
|
raveit |
8d2b955 |
|
|
raveit |
8d2b955 |
#include <compiz-core.h>
|
|
raveit |
8d2b955 |
|
|
raveit |
8d2b955 |
@@ -474,6 +476,32 @@ shade (CompDisplay *d,
|
|
raveit |
8d2b955 |
return TRUE;
|
|
raveit |
8d2b955 |
}
|
|
raveit |
8d2b955 |
|
|
raveit |
8d2b955 |
+static void
|
|
raveit |
8d2b955 |
+compDisplaySetCursorTheme (CompDisplay *display)
|
|
raveit |
8d2b955 |
+{
|
|
raveit |
8d2b955 |
+ char *theme = display->opt[COMP_DISPLAY_OPTION_CURSOR_THEME].value.s;
|
|
raveit |
8d2b955 |
+ int size = display->opt[COMP_DISPLAY_OPTION_CURSOR_SIZE].value.i;
|
|
raveit |
8d2b955 |
+
|
|
raveit |
8d2b955 |
+ if (theme && strlen(theme))
|
|
raveit |
8d2b955 |
+ {
|
|
raveit |
8d2b955 |
+ CompScreen *s;
|
|
raveit |
8d2b955 |
+
|
|
raveit |
8d2b955 |
+ XcursorSetTheme (display->display, theme);
|
|
raveit |
8d2b955 |
+ XcursorSetDefaultSize (display->display, size);
|
|
raveit |
8d2b955 |
+ for (s = display->screens; s; s = s->next)
|
|
raveit |
8d2b955 |
+ {
|
|
raveit |
8d2b955 |
+ XFreeCursor (display->display, s->normalCursor);
|
|
raveit |
8d2b955 |
+ s->busyCursor = XCreateFontCursor (display->display, XC_watch);
|
|
raveit |
8d2b955 |
+ XFlush (display->display);
|
|
raveit |
8d2b955 |
+
|
|
raveit |
8d2b955 |
+ XFreeCursor (display->display, s->normalCursor);
|
|
raveit |
8d2b955 |
+ s->normalCursor = XCreateFontCursor (display->display, XC_left_ptr);
|
|
raveit |
8d2b955 |
+ XDefineCursor (display->display, s->root, s->normalCursor);
|
|
raveit |
8d2b955 |
+ XFlush (display->display);
|
|
raveit |
8d2b955 |
+ }
|
|
raveit |
8d2b955 |
+ }
|
|
raveit |
8d2b955 |
+}
|
|
raveit |
8d2b955 |
+
|
|
raveit |
8d2b955 |
const CompMetadataOptionInfo coreDisplayOptionInfo[COMP_DISPLAY_OPTION_NUM] = {
|
|
raveit |
8d2b955 |
{ "abi", "int", 0, 0, 0 },
|
|
raveit |
8d2b955 |
{ "active_plugins", "list", "<type>string</type>", 0, 0 },
|
|
raveit |
8d2b955 |
@@ -510,7 +538,9 @@ const CompMetadataOptionInfo coreDisplay
|
|
raveit |
8d2b955 |
{ "toggle_window_shaded_key", "key", 0, shade, 0 },
|
|
raveit |
8d2b955 |
{ "ignore_hints_when_maximized", "bool", 0, 0, 0 },
|
|
raveit |
8d2b955 |
{ "ping_delay", "int", "<min>1000</min>", 0, 0 },
|
|
raveit |
8d2b955 |
- { "edge_delay", "int", "<min>0</min>", 0, 0 }
|
|
raveit |
8d2b955 |
+ { "edge_delay", "int", "<min>0</min>", 0, 0 },
|
|
raveit |
8d2b955 |
+ { "cursor_theme", "string", 0, 0, 0 },
|
|
raveit |
8d2b955 |
+ { "cursor_size", "int", 0, 0, 0 }
|
|
raveit |
8d2b955 |
};
|
|
raveit |
8d2b955 |
|
|
raveit |
8d2b955 |
CompOption *
|
|
raveit |
8d2b955 |
@@ -661,6 +691,20 @@ setDisplayOption (CompPlugin *plugin,
|
|
raveit |
8d2b955 |
return TRUE;
|
|
raveit |
8d2b955 |
}
|
|
raveit |
8d2b955 |
break;
|
|
raveit |
8d2b955 |
+ case COMP_DISPLAY_OPTION_CURSOR_THEME:
|
|
raveit |
8d2b955 |
+ if (compSetStringOption(o, value))
|
|
raveit |
8d2b955 |
+ {
|
|
raveit |
8d2b955 |
+ compDisplaySetCursorTheme(display);
|
|
raveit |
8d2b955 |
+ return TRUE;
|
|
raveit |
8d2b955 |
+ }
|
|
raveit |
8d2b955 |
+ break;
|
|
raveit |
8d2b955 |
+ case COMP_DISPLAY_OPTION_CURSOR_SIZE:
|
|
raveit |
8d2b955 |
+ if (compSetIntOption(o, value))
|
|
raveit |
8d2b955 |
+ {
|
|
raveit |
8d2b955 |
+ compDisplaySetCursorTheme(display);
|
|
raveit |
8d2b955 |
+ return TRUE;
|
|
raveit |
8d2b955 |
+ }
|
|
raveit |
8d2b955 |
+ break;
|
|
raveit |
8d2b955 |
default:
|
|
raveit |
8d2b955 |
if (compSetDisplayOption (display, o, value))
|
|
raveit |
8d2b955 |
return TRUE;
|
|
raveit |
8d2b955 |
--- a/include/compiz-core.h
|
|
raveit |
8d2b955 |
+++ b/include/compiz-core.h
|
|
raveit |
8d2b955 |
@@ -776,7 +776,10 @@ removeFileWatch (CompFileWatchHandle han
|
|
raveit |
8d2b955 |
#define COMP_DISPLAY_OPTION_IGNORE_HINTS_WHEN_MAXIMIZED 31
|
|
raveit |
8d2b955 |
#define COMP_DISPLAY_OPTION_PING_DELAY 32
|
|
raveit |
8d2b955 |
#define COMP_DISPLAY_OPTION_EDGE_DELAY 33
|
|
raveit |
8d2b955 |
-#define COMP_DISPLAY_OPTION_NUM 34
|
|
raveit |
8d2b955 |
+#define COMP_DISPLAY_OPTION_CURSOR_THEME 34
|
|
raveit |
8d2b955 |
+#define COMP_DISPLAY_OPTION_CURSOR_SIZE 35
|
|
raveit |
8d2b955 |
+#define COMP_DISPLAY_OPTION_NUM 36
|
|
raveit |
8d2b955 |
+
|
|
raveit |
8d2b955 |
|
|
raveit |
8d2b955 |
typedef void (*HandleEventProc) (CompDisplay *display,
|
|
raveit |
8d2b955 |
XEvent *event);
|