diff -Nru ukui-settings-daemon-1.2.1/debian/changelog ukui-settings-daemon-1.2.2/debian/changelog --- ukui-settings-daemon-1.2.1/debian/changelog 2020-03-26 04:00:00.000000000 +0000 +++ ukui-settings-daemon-1.2.2/debian/changelog 2020-09-27 11:46:15.000000000 +0000 @@ -1,3 +1,9 @@ +ukui-settings-daemon (1.2.2-1) unstable; urgency=medium + + * New upstream bugfix release. + + -- handsome_feng Sun, 27 Sep 2020 19:46:15 +0800 + ukui-settings-daemon (1.2.1-1) unstable; urgency=medium * New upstream bugfix release. diff -Nru ukui-settings-daemon-1.2.1/plugins/background/usd-background-manager.c ukui-settings-daemon-1.2.2/plugins/background/usd-background-manager.c --- ukui-settings-daemon-1.2.1/plugins/background/usd-background-manager.c 2019-07-29 04:25:22.000000000 +0000 +++ ukui-settings-daemon-1.2.2/plugins/background/usd-background-manager.c 2020-09-27 11:45:59.000000000 +0000 @@ -21,6 +21,7 @@ * */ +#include "syslog.h" #include "config.h" #include @@ -30,7 +31,7 @@ #include #include #include - +#include #include #include @@ -91,7 +92,7 @@ static gboolean peony_can_draw_bg (UsdBackgroundManager *manager) { - return g_settings_get_boolean (manager->priv->settings, MATE_BG_KEY_SHOW_DESKTOP); + return FALSE;//g_settings_get_boolean (manager->priv->settings, MATE_BG_KEY_SHOW_DESKTOP); } static gboolean @@ -190,7 +191,6 @@ free_bg_surface (manager); p->surface = mate_bg_create_surface (p->bg, window, width, height, TRUE); - if (p->do_fade) { free_fade (manager); @@ -255,7 +255,7 @@ UsdBackgroundManager *manager) { UsdBackgroundManagerPrivate *p = manager->priv; - + usleep(1000); if (!p->usd_can_draw || p->draw_in_progress || peony_is_drawing_bg (manager)) return; @@ -299,8 +299,8 @@ { GdkScreen *screen = gdk_display_get_screen (display, i); - g_signal_connect (screen, "monitors-changed", - G_CALLBACK (on_screen_size_changed), manager); + //g_signal_connect (screen, "monitors-changed", + // G_CALLBACK (on_screen_size_changed), manager); g_signal_connect (screen, "size-changed", G_CALLBACK (on_screen_size_changed), manager); } @@ -330,7 +330,7 @@ /* Complements on_bg_handling_changed() */ p->usd_can_draw = usd_can_draw_bg (manager); p->peony_can_draw = peony_can_draw_bg (manager); - + syslog(LOG_ERR," -------------------- %s -----------------------",__func__); if (p->usd_can_draw && p->bg != NULL && !peony_is_drawing_bg (manager)) { /* Defer signal processing to avoid making the dconf backend deadlock */ @@ -421,6 +421,7 @@ static void queue_timeout (UsdBackgroundManager *manager) { + if (manager->priv->timeout_id > 0) return; @@ -494,18 +495,22 @@ { UsdBackgroundManagerPrivate *p = manager->priv; - g_debug ("Starting background manager"); + g_debug ("Starting background manager: MATE_BG_SCHEMA=%s", MATE_BG_SCHEMA); ukui_settings_profile_start (NULL); p->settings = g_settings_new (MATE_BG_SCHEMA); p->usd_can_draw = usd_can_draw_bg (manager); p->peony_can_draw = peony_can_draw_bg (manager); - + syslog(LOG_ERR,"--------- START -------------------"); g_signal_connect (p->settings, "changed::" MATE_BG_KEY_DRAW_BACKGROUND, G_CALLBACK (on_bg_handling_changed), manager); g_signal_connect (p->settings, "changed::" MATE_BG_KEY_SHOW_DESKTOP, G_CALLBACK (on_bg_handling_changed), manager); + g_signal_connect (p->settings, "changed::" MATE_BG_KEY_PICTURE_FILENAME, + G_CALLBACK (on_bg_handling_changed), manager); + g_signal_connect (p->settings, "changed::" MATE_BG_KEY_PRIMARY_COLOR, + G_CALLBACK (on_bg_handling_changed), manager); /* If Peony is set to draw the background, it is very likely in our session. * But it might not be started yet, so peony_is_drawing_bg() would fail. diff -Nru ukui-settings-daemon-1.2.1/plugins/common/eggaccelerators.c ukui-settings-daemon-1.2.2/plugins/common/eggaccelerators.c --- ukui-settings-daemon-1.2.1/plugins/common/eggaccelerators.c 2019-07-29 04:25:22.000000000 +0000 +++ ukui-settings-daemon-1.2.2/plugins/common/eggaccelerators.c 2020-09-27 11:45:59.000000000 +0000 @@ -415,7 +415,6 @@ *accelerator_key = gdk_keyval_to_lower (keyval); if (accelerator_mods) *accelerator_mods = mods; - return !bad_keyval; } diff -Nru ukui-settings-daemon-1.2.1/plugins/common/usd-input-helper.c ukui-settings-daemon-1.2.2/plugins/common/usd-input-helper.c --- ukui-settings-daemon-1.2.1/plugins/common/usd-input-helper.c 2019-07-29 04:25:22.000000000 +0000 +++ ukui-settings-daemon-1.2.2/plugins/common/usd-input-helper.c 2020-09-27 11:45:59.000000000 +0000 @@ -18,6 +18,7 @@ * */ +#include "syslog.h" #include "config.h" #include @@ -71,13 +72,25 @@ { XDevice *device; - if (deviceinfo->type != XInternAtom (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()), XI_TOUCHPAD, True)) - return NULL; + if (deviceinfo->type != XInternAtom (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()), XI_TOUCHPAD, True)) { + if (deviceinfo->type == 0) { + syslog(LOG_INFO, "deviceinfo type is NULL"); + } else { + syslog(LOG_INFO, + "deviceinfo type : %s vs %s device_is_touchpad failed", + XGetAtomName(GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()), deviceinfo->type), + XGetAtomName(GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()), + XInternAtom (GDK_DISPLAY_XDISPLAY(gdk_display_get_default ()), XI_TOUCHPAD, True)) + ); + // return NULL; + } + } gdk_error_trap_push (); device = XOpenDevice (GDK_DISPLAY_XDISPLAY (gdk_display_get_default ()), deviceinfo->id); - if (gdk_error_trap_pop () || (device == NULL)) + if (gdk_error_trap_pop () || (device == NULL)) { return NULL; + } if (device_has_property (device, "libinput Tapping Enabled") || device_has_property (device, "Synaptics Off")) { diff -Nru ukui-settings-daemon-1.2.1/plugins/common/usd-keygrab.c ukui-settings-daemon-1.2.2/plugins/common/usd-keygrab.c --- ukui-settings-daemon-1.2.1/plugins/common/usd-keygrab.c 2019-07-29 04:25:22.000000000 +0000 +++ ukui-settings-daemon-1.2.2/plugins/common/usd-keygrab.c 2020-09-27 11:45:59.000000000 +0000 @@ -153,8 +153,7 @@ for (l = screens; l; l = l->next) { GdkScreen *screen = l->data; guint *code; - - for (code = key->keycodes; *code; ++code) { + for (code = key->keycodes; code&&(*code); ++code) { grab_key_real (*code, gdk_screen_get_root_window (screen), grab, diff -Nru ukui-settings-daemon-1.2.1/plugins/housekeeping/usd-disk-space.c ukui-settings-daemon-1.2.2/plugins/housekeeping/usd-disk-space.c --- ukui-settings-daemon-1.2.1/plugins/housekeeping/usd-disk-space.c 2019-07-29 04:25:22.000000000 +0000 +++ ukui-settings-daemon-1.2.2/plugins/housekeeping/usd-disk-space.c 2020-09-27 01:52:55.000000000 +0000 @@ -45,7 +45,7 @@ #define CHECK_EVERY_X_SECONDS 60 -#define DISK_SPACE_ANALYZER "ukui-disk-usage-analyzer" +#define DISK_SPACE_ANALYZER "mate-disk-usage-analyzer" #define SETTINGS_HOUSEKEEPING_SCHEMA "org.ukui.SettingsDaemon.plugins.housekeeping" #define SETTINGS_FREE_PC_NOTIFY_KEY "free-percent-notify" diff -Nru ukui-settings-daemon-1.2.1/plugins/housekeeping/usd-ldsm-trash-empty.c ukui-settings-daemon-1.2.2/plugins/housekeeping/usd-ldsm-trash-empty.c --- ukui-settings-daemon-1.2.1/plugins/housekeeping/usd-ldsm-trash-empty.c 2019-07-29 04:25:22.000000000 +0000 +++ ukui-settings-daemon-1.2.2/plugins/housekeeping/usd-ldsm-trash-empty.c 2020-09-27 01:52:55.000000000 +0000 @@ -359,11 +359,18 @@ trash_empty_show_confirmation_dialog () { GtkWidget *button; - + + /* 修复文件拷贝空间不足时,清空回收站实际未被清空的问题 */ + /* Fix when the file copy space is insufficient, + * prompt to empty the recycle bin, + * but the recycle bin is not actually emptied */ + + /* if (!trash_empty_require_confirmation ()) { trash_empty_start (); return; } + */ trash_empty_confirm_dialog = gtk_message_dialog_new (NULL, 0, GTK_MESSAGE_WARNING, diff -Nru ukui-settings-daemon-1.2.1/plugins/keybindings/usd-keybindings-manager.c ukui-settings-daemon-1.2.2/plugins/keybindings/usd-keybindings-manager.c --- ukui-settings-daemon-1.2.1/plugins/keybindings/usd-keybindings-manager.c 2019-07-29 04:25:22.000000000 +0000 +++ ukui-settings-daemon-1.2.2/plugins/keybindings/usd-keybindings-manager.c 2020-09-27 11:45:59.000000000 +0000 @@ -37,6 +37,7 @@ #include #include #include +#include #include #include "ukui-settings-profile.h" @@ -46,6 +47,7 @@ #include "usd-keygrab.h" #include "eggaccelerators.h" +#define DESKTOP_APP_DIR "/usr/share/applications/" #define GSETTINGS_KEYBINDINGS_DIR "/org/ukui/desktop/keybindings/" #define CUSTOM_KEYBINDING_SCHEMA "org.ukui.control-center.keybinding" @@ -119,7 +121,6 @@ g_strcmp0 (binding->binding_str, "disabled") == 0 ) { return FALSE; } - success = egg_accelerator_parse_virtual (binding->binding_str, &binding->key.keysym, &binding->key.keycodes, @@ -360,9 +361,9 @@ binding->previous_key.keysym = binding->key.keysym; binding->previous_key.state = binding->key.state; g_free (binding->previous_key.keycodes); - for (i = 0; binding->key.keycodes[i]; ++i); + for (i = 0; binding->key.keycodes&&binding->key.keycodes[i]; ++i); binding->previous_key.keycodes = g_new0 (guint, i); - for (i = 0; binding->key.keycodes[i]; ++i) + for (i = 0; binding->key.keycodes&&binding->key.keycodes[i]; ++i) binding->previous_key.keycodes[i] = binding->key.keycodes[i]; } else g_warning ("Key binding (%s) is already in use", binding->binding_str); @@ -485,7 +486,7 @@ } envp = get_exec_environment (xevent); - + /* retval = g_spawn_async (NULL, argv, envp, @@ -494,6 +495,11 @@ NULL, NULL, &error); + */ + char execPathName[255]; + sprintf(execPathName, "%s%s", DESKTOP_APP_DIR, binding->action); + GDesktopAppInfo *info = g_desktop_app_info_new_from_filename(execPathName); + retval = g_app_info_launch_uris(info, NULL, NULL, NULL); g_strfreev (argv); g_strfreev (envp); diff -Nru ukui-settings-daemon-1.2.1/plugins/keyboard/usd-keyboard-manager.c ukui-settings-daemon-1.2.2/plugins/keyboard/usd-keyboard-manager.c --- ukui-settings-daemon-1.2.1/plugins/keyboard/usd-keyboard-manager.c 2020-03-26 03:13:12.000000000 +0000 +++ ukui-settings-daemon-1.2.2/plugins/keyboard/usd-keyboard-manager.c 2020-09-27 11:45:59.000000000 +0000 @@ -36,6 +36,7 @@ #include #include #include +#include #ifdef HAVE_X11_EXTENSIONS_XF86MISC_H #include @@ -350,6 +351,7 @@ if (rnumlock == 0 || key == NULL) { if (manager->priv->have_xkb && rnumlock) { + numlock_set_xkb_state (numlock_get_settings_state (settings)); } } @@ -401,7 +403,7 @@ /* apply current settings before we install the callback */ usd_keyboard_manager_apply_settings (manager); - + g_signal_connect (manager->priv->settings, "changed", G_CALLBACK (apply_settings), manager); #ifdef HAVE_X11_EXTENSIONS_XKB_H diff -Nru ukui-settings-daemon-1.2.1/plugins/media-keys/usd-media-keys-manager.c ukui-settings-daemon-1.2.2/plugins/media-keys/usd-media-keys-manager.c --- ukui-settings-daemon-1.2.1/plugins/media-keys/usd-media-keys-manager.c 2020-03-26 03:13:12.000000000 +0000 +++ ukui-settings-daemon-1.2.2/plugins/media-keys/usd-media-keys-manager.c 2020-09-27 11:45:59.000000000 +0000 @@ -272,7 +272,6 @@ g_return_if_fail (settings_key != NULL); gdk_error_trap_push (); - /* Find the key that was modified */ for (i = 0; i < HANDLED_KEYS; i++) { if (g_strcmp0 (settings_key, keys[i].settings_key) == 0) { @@ -427,7 +426,6 @@ if (win_req.height > orig_h) { orig_h = win_req.height; } - pointer_screen = NULL; display = gdk_screen_get_display (manager->priv->current_screen); device_manager = gdk_display_get_device_manager (display); @@ -1103,15 +1101,14 @@ GdkEvent *event, UsdMediaKeysManager *manager) { - XEvent *xev = (XEvent *) xevent; - XAnyEvent *xany = (XAnyEvent *) xevent; + XEvent *xev = (XEvent *) xevent; + XAnyEvent *xany = (XAnyEvent *) xevent; int i; /* verify we have a key event */ if (xev->type != KeyPress && xev->type != KeyRelease) { return GDK_FILTER_CONTINUE; } - for (i = 0; i < HANDLED_KEYS; i++) { if (match_key (keys[i].key, xev)) { switch (keys[i].key_type) { diff -Nru ukui-settings-daemon-1.2.1/plugins/mouse/usd-locate-pointer.c ukui-settings-daemon-1.2.2/plugins/mouse/usd-locate-pointer.c --- ukui-settings-daemon-1.2.1/plugins/mouse/usd-locate-pointer.c 2019-07-29 04:25:22.000000000 +0000 +++ ukui-settings-daemon-1.2.2/plugins/mouse/usd-locate-pointer.c 2020-09-27 11:45:59.000000000 +0000 @@ -480,14 +480,15 @@ &keyval, NULL, NULL, NULL); - if (keyval == GDK_KEY_Control_L || keyval == GDK_KEY_Control_R) + if ((keyval == GDK_KEY_m || keyval == GDK_KEY_M) ) { if (xevent->xany.type == KeyRelease) { - XUngrabButton (xevent->xany.display, + /*XUngrabButton (xevent->xany.display, AnyButton, AnyModifier, xevent->xany.window); + */ XAllowEvents (xevent->xany.display, AsyncKeyboard, xevent->xkey.time); @@ -498,7 +499,7 @@ XAllowEvents (xevent->xany.display, SyncKeyboard, xevent->xkey.time); - XGrabButton (xevent->xany.display, + /*XGrabButton (xevent->xany.display, AnyButton, AnyModifier, xevent->xany.window, @@ -508,6 +509,8 @@ GrabModeAsync, None, None); + */ + } } else @@ -515,10 +518,11 @@ XAllowEvents (xevent->xany.display, ReplayKeyboard, xevent->xkey.time); - XUngrabButton (xevent->xany.display, + /*XUngrabButton (xevent->xany.display, AnyButton, AnyModifier, xevent->xany.window); + */ XUngrabKeyboard (xevent->xany.display, xevent->xkey.time); } @@ -528,10 +532,11 @@ XAllowEvents (xevent->xany.display, ReplayPointer, xevent->xbutton.time); - XUngrabButton (xevent->xany.display, + /*XUngrabButton (xevent->xany.display, AnyButton, AnyModifier, xevent->xany.window); + */ XUngrabKeyboard (xevent->xany.display, xevent->xbutton.time); } @@ -547,7 +552,7 @@ GdkScreen *screen; int n_keys; gboolean has_entries = FALSE; - static const guint keyvals[] = { GDK_KEY_Control_L, GDK_KEY_Control_R }; + static const guint keyvals[] = { GDK_KEY_m, GDK_KEY_M}; unsigned int i, j; display = gdk_display_get_default (); @@ -566,17 +571,46 @@ Window xroot; xroot = GDK_WINDOW_XID (gdk_screen_get_root_window (screen)); - + // xroot = DefaultRootWindow(GDK_DISPLAY_XDISPLAY (display)); + XGrabKey (GDK_DISPLAY_XDISPLAY (display), + keys[j].keycode, + ControlMask|ShiftMask|Mod2Mask|LockMask, + xroot, + True, //False, + GrabModeAsync, + GrabModeSync); + XGrabKey (GDK_DISPLAY_XDISPLAY (display), + keys[j].keycode, + ControlMask|ShiftMask|LockMask, + xroot, + True, //False, + GrabModeAsync, + GrabModeSync); XGrabKey (GDK_DISPLAY_XDISPLAY (display), keys[j].keycode, - 0, + ControlMask|ShiftMask|Mod2Mask, + xroot, + True, //False, + GrabModeAsync, + GrabModeSync); + XGrabKey (GDK_DISPLAY_XDISPLAY (display), + keys[j].keycode, + ControlMask|ShiftMask, + xroot, + True, //False, + GrabModeAsync, + GrabModeSync); + /* + XGrabKey (GDK_DISPLAY_XDISPLAY (display), + keys[j].keycode, + AnyModifier, xroot, False, GrabModeAsync, GrabModeSync); XGrabKey (GDK_DISPLAY_XDISPLAY (display), keys[j].keycode, - LockMask, + ControlMask|ShiftMask, xroot, False, GrabModeAsync, @@ -595,6 +629,8 @@ False, GrabModeAsync, GrabModeSync); + */ + } g_free (keys); } diff -Nru ukui-settings-daemon-1.2.1/plugins/mouse/usd-mouse-manager.c ukui-settings-daemon-1.2.2/plugins/mouse/usd-mouse-manager.c --- ukui-settings-daemon-1.2.1/plugins/mouse/usd-mouse-manager.c 2020-02-24 03:00:13.000000000 +0000 +++ ukui-settings-daemon-1.2.2/plugins/mouse/usd-mouse-manager.c 2020-09-27 11:45:59.000000000 +0000 @@ -327,7 +327,6 @@ if (device == NULL) { return; } - property_set_bool (device_info, device, property_name, property_index, enabled); gdk_error_trap_push (); @@ -997,7 +996,7 @@ gint three_finger_tap = g_settings_get_int (manager->priv->settings_touchpad, KEY_TOUCHPAD_THREE_FINGER_TAP); for (i = 0; i < numdevices; i++) { -// set_tap_to_click (&devicelist[i], state, left_handed, one_finger_tap, two_finger_tap, three_finger_tap); + set_tap_to_click (&devicelist[i], state, left_handed, one_finger_tap, two_finger_tap, three_finger_tap); } XFreeDeviceList (devicelist); @@ -1237,8 +1236,9 @@ gboolean want_horiz; prop = property_from_name ("libinput Scroll Method Enabled"); - if (!prop) + if (!prop) { return; + } device = device_is_touchpad (device_info); if (device == NULL) { @@ -1280,10 +1280,12 @@ * there's only one bool. Pick the one matching the scroll method * we picked above. */ - if (want_2fg) + if (want_2fg) { want_horiz = g_settings_get_boolean (settings, KEY_HORIZ_TWO_FINGER_SCROLL); - else if (want_edge) + } + else if (want_edge) { want_horiz = g_settings_get_boolean (settings, KEY_HORIZ_EDGE_SCROLL); + } else return; @@ -1522,7 +1524,7 @@ || (g_strcmp0 (key, KEY_TOUCHPAD_TWO_FINGER_TAP) == 0) || (g_strcmp0 (key, KEY_TOUCHPAD_THREE_FINGER_TAP) == 0)) { set_tap_to_click_all (manager); -/* Do not set click actions since ukwm take over this +/* Do not set click actions since ukwm take over this * } else if ((g_strcmp0 (key, KEY_TOUCHPAD_TWO_FINGER_CLICK) == 0) * || (g_strcmp0 (key, KEY_TOUCHPAD_THREE_FINGER_CLICK) == 0)) { * set_click_actions_all (manager); @@ -1570,7 +1572,7 @@ #if 0 /* FIXME need to fork (?) mousetweaks for this to work */ set_mousetweaks_daemon (manager, - g_settings_get_boolean (manager->priv->settings_mouse_a11y, + g_settings_get_boolean (manager->priv->settings_mouse_a11y, KEY_MOUSE_A11Y_DWELL_ENABLE), g_settings_get_boolean (manager->priv->settings_mouse_a11y, KEY_MOUSE_A11Y_DELAY_ENABLE)); diff -Nru ukui-settings-daemon-1.2.1/plugins/xrandr/usd-xrandr-manager.c ukui-settings-daemon-1.2.2/plugins/xrandr/usd-xrandr-manager.c --- ukui-settings-daemon-1.2.1/plugins/xrandr/usd-xrandr-manager.c 2019-07-29 04:25:22.000000000 +0000 +++ ukui-settings-daemon-1.2.2/plugins/xrandr/usd-xrandr-manager.c 2020-09-27 11:45:59.000000000 +0000 @@ -41,6 +41,12 @@ #include #include +#include +#include +#include +#include +#include + #define MATE_DESKTOP_USE_UNSTABLE_API #include #include @@ -1542,6 +1548,20 @@ } } +/*检测到旋转,更改触摸屏鼠标光标位置*/ +void set_touchscreen_cursor(void *date) +{ + Display *xdisplay = XOpenDisplay(NULL); + Atom property_atom; + property_atom = XInternAtom (xdisplay, "Coordinate Transformation Matrix", True); + if (!property_atom) + return; + Atom type = XInternAtom (xdisplay, "FLOAT", False); + XIChangeProperty (xdisplay, XITouchClass, property_atom, type, + 32, XIPropModeReplace, date, 9); + XCloseDisplay(xdisplay); +} + static void on_randr_event (MateRRScreen *screen, gpointer data) { @@ -1618,6 +1638,50 @@ log_msg ("Applied stored configuration to deal with event\n"); } + /* 添加触摸屏鼠标设置 */ + MateRRConfig *result; + MateRROutputInfo **outputs; + int i; + result = mate_rr_config_new_current (screen, NULL); + outputs = mate_rr_config_get_outputs (result); + for(i=0; outputs[i] != NULL;++i) + { + MateRROutputInfo *info = outputs[i]; + if(mate_rr_output_info_is_connected (info)){ + int rotation = mate_rr_output_info_get_rotation(info); + switch(rotation){ + case MATE_RR_ROTATION_0: + { + float full_matrix[9] = {1, 0, 0, 0, 1, 0, 0, 0, 1}; + set_touchscreen_cursor(&full_matrix); + break; + } + case MATE_RR_ROTATION_90: + { + float full_matrix[9] = {0, -1, 1, 1, 0, 0, 0, 0, 1}; + set_touchscreen_cursor(&full_matrix); + break; + } + case MATE_RR_ROTATION_180: + { + float full_matrix[9] = {-1, 0, 1, 0, -1, 1, 0, 0, 1}; + set_touchscreen_cursor(&full_matrix); + break; + } + case MATE_RR_ROTATION_270: + { + float full_matrix[9] = {0, 1, 0, -1, 0, 1, 0, 0, 1}; + set_touchscreen_cursor(&full_matrix); + break; + } + default: + { + float full_matrix[9] = {1, 0, 0, 0, 1, 0, 0, 0, 1}; + set_touchscreen_cursor(&full_matrix); + } + } + } + } /* poke mate-color-manager */ apply_color_profiles (); @@ -2383,7 +2447,50 @@ gdk_window_add_filter (gdk_get_default_root_window(), (GdkFilterFunc)event_filter, manager); - + /* 添加触摸屏鼠标设置 */ + MateRRConfig *result; + MateRROutputInfo **outputs; + int i; + result = mate_rr_config_new_current (manager->priv->rw_screen, NULL); + outputs = mate_rr_config_get_outputs (result); + for(i=0; outputs[i] != NULL;++i) + { + MateRROutputInfo *info = outputs[i]; + if(mate_rr_output_info_is_connected (info)){ + int rotation = mate_rr_output_info_get_rotation(info); + switch(rotation){ + case MATE_RR_ROTATION_0: + { + float full_matrix[9] = {1, 0, 0, 0, 1, 0, 0, 0, 1}; + set_touchscreen_cursor(&full_matrix); + break; + } + case MATE_RR_ROTATION_90: + { + float full_matrix[9] = {0, -1, 1, 1, 0, 0, 0, 0, 1}; + set_touchscreen_cursor(&full_matrix); + break; + } + case MATE_RR_ROTATION_180: + { + float full_matrix[9] = {-1, 0, 1, 0, -1, 1, 0, 0, 1}; + set_touchscreen_cursor(&full_matrix); + break; + } + case MATE_RR_ROTATION_270: + { + float full_matrix[9] = {0, 1, 0, -1, 0, 1, 0, 0, 1}; + set_touchscreen_cursor(&full_matrix); + break; + } + default: + { + float full_matrix[9] = {1, 0, 0, 0, 1, 0, 0, 0, 1}; + set_touchscreen_cursor(&full_matrix); + } + } + } + } start_or_stop_icon (manager); log_close (); diff -Nru ukui-settings-daemon-1.2.1/plugins/xsettings/usd-xsettings-manager.c ukui-settings-daemon-1.2.2/plugins/xsettings/usd-xsettings-manager.c --- ukui-settings-daemon-1.2.1/plugins/xsettings/usd-xsettings-manager.c 2020-03-26 03:13:12.000000000 +0000 +++ ukui-settings-daemon-1.2.2/plugins/xsettings/usd-xsettings-manager.c 2020-09-27 11:45:59.000000000 +0000 @@ -44,8 +44,6 @@ #include "xsettings-manager.h" #include "fontconfig-monitor.h" -#include "syslog.h" - #define UKUI_XSETTINGS_MANAGER_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), UKUI_TYPE_XSETTINGS_MANAGER, UkuiXSettingsManagerPrivate)) #define MOUSE_SCHEMA "org.ukui.peripherals-mouse" @@ -415,7 +413,7 @@ needle_len = strlen (needle); if (g_str_has_prefix (props->str, needle)) found = props->str; - else + else found = strstr (props->str, needle); if (found) { @@ -456,15 +454,14 @@ strncpy(tmpCursorTheme, settings->cursor_theme, 255); } else { // unset, use default - strncpy(tmpCursorTheme, "Breeze_Snow", 255); - syslog(LOG_ERR, "use default theme name=%s=", tmpCursorTheme); + strncpy(tmpCursorTheme, "DMZ-White", 255); } if (settings->cursor_size > 0) { tmpCursorSize = settings->cursor_size; } else { tmpCursorSize = XcursorGetDefaultSize(dpy); } - // end add by liutong + // end add by liutong update_property (add_string, "Xft.dpi", g_ascii_dtostr (dpibuf, sizeof (dpibuf), (double) settings->dpi / 1024.0)); @@ -504,7 +501,6 @@ for (int i = 0; i < len-1; i++) { XcursorImages *images = XcursorLibraryLoadImages(qtCursorsNames[i], tmpCursorTheme, tmpCursorSize); if (!images) { - syslog(LOG_ERR, "null images, theme name=%s, imageName=%s=", tmpCursorTheme, qtCursorsNames[i]); g_debug("xcursorlibrary load images :null image, theme name=%s", tmpCursorTheme); continue; } diff -Nru ukui-settings-daemon-1.2.1/plugins/xsettings/xsettings-manager.c ukui-settings-daemon-1.2.2/plugins/xsettings/xsettings-manager.c --- ukui-settings-daemon-1.2.1/plugins/xsettings/xsettings-manager.c 2019-07-29 04:25:22.000000000 +0000 +++ ukui-settings-daemon-1.2.2/plugins/xsettings/xsettings-manager.c 2020-09-27 11:45:59.000000000 +0000 @@ -15,7 +15,7 @@ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL RED HAT * BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN + * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. * * Author: Owen Taylor, Red Hat, Inc. @@ -47,7 +47,7 @@ static XSettingsList *settings; -typedef struct +typedef struct { Window window; Atom timestamp_prop_atom; @@ -74,9 +74,9 @@ * @window: a #Window, used for communication with the server. * The window must have PropertyChangeMask in its * events mask or a hang will result. - * - * Routine to get the current X server time stamp. - * + * + * Routine to get the current X server time stamp. + * * Return value: the time stamp. **/ static Time @@ -106,7 +106,7 @@ { char buffer[256]; Atom selection_atom; - + sprintf(buffer, "_XSETTINGS_S%d", screen); selection_atom = XInternAtom (display, buffer, False); @@ -127,7 +127,7 @@ XClientMessageEvent xev; char buffer[256]; - + manager = malloc (sizeof *manager); if (!manager) return NULL; @@ -174,7 +174,7 @@ xev.data.l[2] = manager->window; xev.data.l[3] = 0; /* manager specific data */ xev.data.l[4] = 0; /* manager specific data */ - + XSendEvent (display, RootWindow (display, screen), False, StructureNotifyMask, (XEvent *)&xev); } @@ -182,7 +182,7 @@ { manager->terminate (manager->cb_data); } - + return manager; } @@ -190,7 +190,7 @@ xsettings_manager_destroy (XSettingsManager *manager) { XDestroyWindow (manager->display, manager->window); - + xsettings_list_free (manager->settings); free (manager); } @@ -242,11 +242,11 @@ new_setting = xsettings_setting_copy (setting); if (!new_setting) return XSETTINGS_NO_MEM; - + new_setting->last_change_serial = manager->serial; - + result = xsettings_list_insert (&settings, new_setting); - + if (result != XSETTINGS_SUCCESS) xsettings_setting_free (new_setting); @@ -335,7 +335,7 @@ memcpy (buffer->pos, setting->name, string_len); length -= string_len; buffer->pos += string_len; - + while (length > 0) { *(buffer->pos++) = 0; @@ -355,12 +355,12 @@ string_len = strlen (setting->data.v_string); *(CARD32 *)(buffer->pos) = string_len; buffer->pos += 4; - + length = XSETTINGS_PAD (string_len, 4); memcpy (buffer->pos, setting->data.v_string, string_len); length -= string_len; buffer->pos += string_len; - + while (length > 0) { *(buffer->pos++) = 0; diff -Nru ukui-settings-daemon-1.2.1/ukui-settings-daemon/ukui-settings-manager.c ukui-settings-daemon-1.2.2/ukui-settings-daemon/ukui-settings-manager.c --- ukui-settings-daemon-1.2.1/ukui-settings-daemon/ukui-settings-manager.c 2019-07-29 04:25:22.000000000 +0000 +++ ukui-settings-daemon-1.2.2/ukui-settings-daemon/ukui-settings-manager.c 2020-09-27 01:52:55.000000000 +0000 @@ -188,7 +188,7 @@ schema = g_strdup_printf ("%s.plugins.%s", DEFAULT_SETTINGS_PREFIX, ukui_settings_plugin_info_get_location (info)); - + /* Ignore unknown schemas or else we'll assert */ if (is_schema (schema)) { manager->priv->plugins = g_slist_prepend (manager->priv->plugins,