]> git.eshelyaron.com Git - emacs.git/commitdiff
Fix handling of nil device names
authorPo Lu <luangruo@yahoo.com>
Wed, 21 Sep 2022 11:49:31 +0000 (19:49 +0800)
committerPo Lu <luangruo@yahoo.com>
Wed, 21 Sep 2022 11:51:14 +0000 (19:51 +0800)
* lisp/frame.el (device-class):
* lisp/term/pgtk-win.el (pgtk-device-class):
* lisp/term/x-win.el (x-device-class): Handle `nil'
correctly.  (bug#57969)

lisp/frame.el
lisp/term/pgtk-win.el
lisp/term/x-win.el

index 6bedffc358bce66be99960d23185e5a82a5ceac9..1d7784dc7697932a5c3f6c0660063fe387b9ae3b 100644 (file)
@@ -2516,6 +2516,7 @@ symbols."
           ((eq frame-type 'pgtk)
            (pgtk-device-class name))
           (t (cond
+              ((not name) nil)
               ((string= name "Virtual core pointer")
                'core-pointer)
               ((string= name "Virtual core keyboard")
index b93e259d82a64d529b25a081d12d6ca11e9153c5..20f157391673369e677a27705c9bb172c4919944 100644 (file)
@@ -371,6 +371,7 @@ This uses `icon-map-list' to map icon file names to stock icon names."
   "Return the device class of NAME.
 Users should not call this function; see `device-class' instead."
   (cond
+   ((not name) nil)
    ((string-match-p "XTEST" name) 'test)
    ((string= "Virtual core pointer" name) 'core-pointer)
    ((string= "Virtual core keyboard" name) 'core-keyboard)
index 38266baa969bf8592bae1be594e467f7d959f4df..9d3e7803650ecf3ffd6eaca7f2ff5132fd2d63b0 100644 (file)
@@ -1573,41 +1573,42 @@ frames on all displays."
 (defun x-device-class (name)
   "Return the device class of NAME.
 Users should not call this function; see `device-class' instead."
-  (let ((downcased-name (downcase name)))
-    (cond
-     ((string-match-p "XTEST" name) 'test)
-     ((string= "Virtual core pointer" name) 'core-pointer)
-     ((string= "Virtual core keyboard" name) 'core-keyboard)
-     ((string-match-p "eraser" downcased-name) 'eraser)
-     ((string-match-p " pad" downcased-name) 'pad)
-     ((or (or (string-match-p "wacom" downcased-name)
-              (string-match-p "pen" downcased-name))
-          (string-match-p "stylus" downcased-name))
-      'pen)
-     ((or (string-prefix-p "xwayland-touch:" name)
-          (string-match-p "touchscreen" downcased-name))
-      'touchscreen)
-     ((or (string-match-p "trackpoint" downcased-name)
-          (string-match-p "stick" downcased-name))
-      'trackpoint)
-     ((or (string-match-p "mouse" downcased-name)
-          (string-match-p "optical" downcased-name)
-          (string-match-p "pointer" downcased-name))
-      'mouse)
-     ((string-match-p "cursor" downcased-name) 'puck)
-     ((or (string-match-p "keyboard" downcased-name)
-          ;; One of my cheap keyboards is really named this...
-          (string= name "USB USB Keykoard"))
-      'keyboard)
-     ((string-match-p "button" downcased-name) 'power-button)
-     ((string-match-p "touchpad" downcased-name) 'touchpad)
-     ((or (string-match-p "midi" downcased-name)
-          (string-match-p "piano" downcased-name))
-      'piano)
-     ((or (string-match-p "wskbd" downcased-name) ; NetBSD/OpenBSD
-          (and (string-match-p "/dev" downcased-name)
-               (string-match-p "kbd" downcased-name)))
-      'keyboard))))
+  (and name
+       (let ((downcased-name (downcase name)))
+         (cond
+          ((string-match-p "XTEST" name) 'test)
+          ((string= "Virtual core pointer" name) 'core-pointer)
+          ((string= "Virtual core keyboard" name) 'core-keyboard)
+          ((string-match-p "eraser" downcased-name) 'eraser)
+          ((string-match-p " pad" downcased-name) 'pad)
+          ((or (or (string-match-p "wacom" downcased-name)
+                   (string-match-p "pen" downcased-name))
+               (string-match-p "stylus" downcased-name))
+           'pen)
+          ((or (string-prefix-p "xwayland-touch:" name)
+               (string-match-p "touchscreen" downcased-name))
+           'touchscreen)
+          ((or (string-match-p "trackpoint" downcased-name)
+               (string-match-p "stick" downcased-name))
+           'trackpoint)
+          ((or (string-match-p "mouse" downcased-name)
+               (string-match-p "optical" downcased-name)
+               (string-match-p "pointer" downcased-name))
+           'mouse)
+          ((string-match-p "cursor" downcased-name) 'puck)
+          ((or (string-match-p "keyboard" downcased-name)
+               ;; One of my cheap keyboards is really named this...
+               (string= name "USB USB Keykoard"))
+           'keyboard)
+          ((string-match-p "button" downcased-name) 'power-button)
+          ((string-match-p "touchpad" downcased-name) 'touchpad)
+          ((or (string-match-p "midi" downcased-name)
+               (string-match-p "piano" downcased-name))
+           'piano)
+          ((or (string-match-p "wskbd" downcased-name) ; NetBSD/OpenBSD
+               (and (string-match-p "/dev" downcased-name)
+                    (string-match-p "kbd" downcased-name)))
+           'keyboard)))))
 
 (setq x-dnd-movement-function #'x-dnd-movement)
 (setq x-dnd-unsupported-drop-function #'x-dnd-handle-unsupported-drop)