Author: Sebastien Bacher Description: add cursor theme and size support Origin: vendor, ubuntu (1:0.3.6-1ubuntu4) Bug-Ubuntu: https://bugs.launchpad.net/ubuntu/+source/compiz/+bug/86184 Author: Jasmine Hassan Description: Updated to migrate to Mate Desktop Origin: , build for LMDE/Debian Testing Last-Updated: 2012-10-09 --- a/configure.ac +++ b/configure.ac @@ -125,6 +125,7 @@ COMPIZ_REQUIRES="x11 \ xdamage \ xrandr \ xinerama \ + xcursor \ ice \ sm \ libxml-2.0 \ @@ -301,6 +302,7 @@ AC_ARG_ENABLE(mate-keybindings, if test "x$use_gtk" = "xyes"; then PKG_CHECK_MODULES(GTK_WINDOW_DECORATOR, xrender >= 0.8.4 \ + xcursor \ gtk+-2.0 >= 2.8.0 \ libwnck-1.0 \ pangocairo, --- a/gtk/window-decorator/gtk-window-decorator.c +++ b/gtk/window-decorator/gtk-window-decorator.c @@ -30,6 +30,7 @@ #include #include #include +#include #include #include @@ -75,6 +76,14 @@ #include #endif +#define MATE_MOUSE_DIR "/desktop/mate/peripherals/mouse" + +#define MATE_CURSOR_THEME_KEY \ + MATE_MOUSE_DIR "/cursor_theme" + +#define MATE_CURSOR_SIZE_KEY \ + MATE_MOUSE_DIR "/cursor_size" + #define MARCO_MATECONF_DIR "/apps/marco/general" #define COMPIZ_USE_SYSTEM_FONT_KEY \ @@ -138,6 +147,13 @@ #define WHEEL_ACTION_KEY \ MATECONF_DIR "/mouse_wheel_action" +#define COMPIZ_MATECONF_DIR2 "/apps/compiz/general/allscreens/options" +#define COMPIZ_CURSOR_THEME_KEY \ + COMPIZ_MATECONF_DIR2 "/cursor_theme" + +#define COMPIZ_CURSOR_SIZE_KEY \ + COMPIZ_MATECONF_DIR2 "/cursor_size" + #define DBUS_DEST "org.freedesktop.compiz" #define DBUS_PATH "/org/freedesktop/compiz/decoration/allscreens" #define DBUS_INTERFACE "org.freedesktop.compiz" @@ -6462,6 +6478,44 @@ button_layout_changed (MateConfClient *c } static void +cursor_theme_changed (MateConfClient *client) +{ + gchar *theme; + gint size; + + theme = mateconf_client_get_string(client, MATE_CURSOR_THEME_KEY, NULL); + size = mateconf_client_get_int(client, MATE_CURSOR_SIZE_KEY, NULL); + + mateconf_client_set_string(client, COMPIZ_CURSOR_THEME_KEY, theme, NULL); + + mateconf_client_set_int(client, COMPIZ_CURSOR_SIZE_KEY, size, NULL); + + if (theme && strlen(theme)) + { + gint i, j; + GdkDisplay *gdkdisplay = gdk_display_get_default (); + Display *xdisplay = gdk_x11_display_get_xdisplay (gdkdisplay); + + + XcursorSetTheme (xdisplay, theme); + XcursorSetDefaultSize (xdisplay, size); + + for (i = 0; i < 3; i++) + { + for (j = 0; j < 3; j++) + { + if (cursor[i][j].shape != XC_left_ptr) + { + XFreeCursor (xdisplay, cursor[i][j].cursor); + cursor[i][j].cursor = + XCreateFontCursor (xdisplay, cursor[i][j].shape); + } + } + } + } +} + +static void value_changed (MateConfClient *client, const gchar *key, MateConfValue *value, @@ -6539,6 +6593,11 @@ value_changed (MateConfClient *client, if (theme_opacity_changed (client)) changed = TRUE; } + else if (strcmp (key, MATE_CURSOR_THEME_KEY) == 0 || + strcmp (key, MATE_CURSOR_SIZE_KEY) == 0) + { + cursor_theme_changed (client); + } if (changed) decorations_changed (data); @@ -6702,6 +6761,11 @@ init_settings (WnckScreen *screen) NULL); mateconf_client_add_dir (mateconf, + MATE_MOUSE_DIR, + MATECONF_CLIENT_PRELOAD_ONELEVEL, + NULL); + + mateconf_client_add_dir (mateconf, COMPIZ_MATECONF_DIR1, MATECONF_CLIENT_PRELOAD_ONELEVEL, NULL); @@ -6710,6 +6774,9 @@ init_settings (WnckScreen *screen) "value_changed", G_CALLBACK (value_changed), screen); + + cursor_theme_changed(mateconf); + #elif USE_DBUS_GLIB DBusConnection *connection; DBusMessage *reply; --- a/metadata/core.xml.in.in +++ b/metadata/core.xml.in.in @@ -35,6 +35,18 @@ 0 10000 + +