unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
* bug#20508: 24.4; image map properties not working as described
@ 2015-05-05  9:28 pma
  2015-05-05 16:32 ` Eli Zaretskii
  0 siblings, 1 reply; 6+ messages in thread
From: pma @ 2015-05-05  9:28 UTC (permalink / raw)
  To: 20508


- emacs -Q
- insert this function:
(defun image-wipe-and-insert ()
  (interactive)
  (let ()
    (with-current-buffer (get-buffer-create "*an image area test buffer*")
      (switch-to-buffer (current-buffer))
      (erase-buffer)
      (insert-image (find-image '((:type png :file "/usr/share/emacs/24.4/etc/images/icons/hicolor/128x128/apps/emacs.png"
                     :map  '((rect . ((0 . 0) . (50 . 50))) anAreaID (:pointer hourglass :help-echo "You found an area!"))
                     ;; :relief -20
                     ;; :conversion laplace
                     :margin (0 . 0)
                     :pointer arrow)))))))

- M-x image-wipe-and-insert
- Point mouse into top left corner
- results:
  - change of pointer, but not to hourglass;
  - no help-echo message.




In GNU Emacs 24.4.1 (x86_64-pc-linux-gnu, GTK+ Version 3.14.5)
 of 2014-12-09 on gaia, modified by Debian
Windowing system distributor `The X.Org Foundation', version 11.0.11601901
System Description:	Debian GNU/Linux 8.0 (jessie)

Configured using:
 `configure --build x86_64-linux-gnu --prefix=/usr
 --sharedstatedir=/var/lib --libexecdir=/usr/lib
 --localstatedir=/var/lib --infodir=/usr/share/info
 --mandir=/usr/share/man --with-pop=yes
 --enable-locallisppath=/etc/emacs24:/etc/emacs:/usr/local/share/emacs/24.4/site-lisp:/usr/local/share/emacs/site-lisp:/usr/share/emacs/24.4/site-lisp:/usr/share/emacs/site-lisp
 --build x86_64-linux-gnu --prefix=/usr --sharedstatedir=/var/lib
 --libexecdir=/usr/lib --localstatedir=/var/lib
 --infodir=/usr/share/info --mandir=/usr/share/man --with-pop=yes
 --enable-locallisppath=/etc/emacs24:/etc/emacs:/usr/local/share/emacs/24.4/site-lisp:/usr/local/share/emacs/site-lisp:/usr/share/emacs/24.4/site-lisp:/usr/share/emacs/site-lisp
 --with-x=yes --with-x-toolkit=gtk3 --with-toolkit-scroll-bars
 'CFLAGS=-g -O2 -fstack-protector-strong -Wformat
 -Werror=format-security -Wall' CPPFLAGS=-D_FORTIFY_SOURCE=2
 LDFLAGS=-Wl,-z,relro'

Important settings:
  value of $LANG: en_GB.UTF-8
  locale-coding-system: utf-8-unix

Major mode: Lisp Interaction

Minor modes in effect:
  tooltip-mode: t
  electric-indent-mode: t
  mouse-wheel-mode: t
  tool-bar-mode: t
  menu-bar-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  blink-cursor-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t
  line-number-mode: t
  transient-mark-mode: t

Recent input:
<help-echo> <help-echo> C-y C-x C-e M-x i m a g <tab> 
w i p <tab> <return> <help-echo> <help-echo> <help-echo> 
<help-echo> C-x b <return> M-x b u g <tab> <M-backspace> 
<M-backspace> r e p <tab> o <tab> r <tab> <return>

Recent messages:
For information about GNU Emacs and the GNU system, type C-h C-a.
Mark set
image-wipe-and-insert
Making completion list... [2 times]

Load-path shadows:
None found.

Features:
(shadow sort gnus-util mail-extr emacsbug message format-spec rfc822 mml
mml-sec mm-decode mm-bodies mm-encode mail-parse rfc2231 mailabbrev
gmm-utils mailheader sendmail rfc2047 rfc2045 ietf-drums mm-util
help-fns mail-prsvr mail-utils help-mode easymenu time-date tooltip
electric uniquify ediff-hook vc-hooks lisp-float-type mwheel x-win x-dnd
tool-bar dnd fontset image regexp-opt fringe tabulated-list newcomment
lisp-mode prog-mode register page menu-bar rfn-eshadow timer select
scroll-bar mouse jit-lock font-lock syntax facemenu font-core frame cham
georgian utf-8-lang misc-lang vietnamese tibetan thai tai-viet lao
korean japanese hebrew greek romanian slovak czech european ethiopic
indian cyrillic chinese case-table epa-hook jka-cmpr-hook help simple
abbrev minibuffer nadvice loaddefs button faces cus-face macroexp files
text-properties overlay sha1 md5 base64 format env code-pages mule
custom widget hashtable-print-readable backquote make-network-process
dbusbind gfilenotify dynamic-setting system-font-setting
font-render-setting move-toolbar gtk x-toolkit x multi-tty emacs)

Memory information:
((conses 16 72606 5487)
 (symbols 48 17664 0)
 (miscs 40 45 139)
 (strings 32 9344 4203)
 (string-bytes 1 255581)
 (vectors 16 8997)
 (vector-slots 8 384180 17265)
 (floats 8 64 168)
 (intervals 56 276 32)
 (buffers 960 14)
 (heap 1024 29329 1036))

-- 
patrick





^ permalink raw reply	[flat|nested] 6+ messages in thread

* bug#20508: 24.4; image map properties not working as described
  2015-05-05  9:28 bug#20508: 24.4; image map properties not working as described pma
@ 2015-05-05 16:32 ` Eli Zaretskii
  2015-05-05 17:27   ` patrick mc allister
  0 siblings, 1 reply; 6+ messages in thread
From: Eli Zaretskii @ 2015-05-05 16:32 UTC (permalink / raw)
  To: pma; +Cc: 20508

> From: pma <pma@rdorte.org>
> Date: Tue, 05 May 2015 11:28:26 +0200
> 
> 
> - emacs -Q
> - insert this function:
> (defun image-wipe-and-insert ()
>   (interactive)
>   (let ()
>     (with-current-buffer (get-buffer-create "*an image area test buffer*")
>       (switch-to-buffer (current-buffer))
>       (erase-buffer)
>       (insert-image (find-image '((:type png :file "/usr/share/emacs/24.4/etc/images/icons/hicolor/128x128/apps/emacs.png"
>                      :map  '((rect . ((0 . 0) . (50 . 50))) anAreaID (:pointer hourglass :help-echo "You found an area!"))
>                      ;; :relief -20
>                      ;; :conversion laplace
>                      :margin (0 . 0)
>                      :pointer arrow)))))))
> 
> - M-x image-wipe-and-insert
> - Point mouse into top left corner
> - results:
>   - change of pointer, but not to hourglass;
>   - no help-echo message.

It's a cockpit error: you should use 'pointer', not ':pointer' in the
first instance.  IOW, this works for me (note the underlined part):

(defun image-wipe-and-insert ()
  (interactive)
  (let ()
    (with-current-buffer (get-buffer-create "*an image area test buffer*")
      (switch-to-buffer (current-buffer))
      (erase-buffer)
      (insert-image (find-image '((:type png :file "/usr/share/emacs/24.4/etc/images/icons/hicolor/128x128/apps/emacs.png"
                     :map  '((rect . ((0 . 0) . (50 . 50))) anAreaID (pointer hourglass :help-echo "You found an area!"))
                     ;;                                               ^^^^^^^
                     ;; :relief -20
                     ;; :conversion laplace
                     :margin (0 . 0)
                     :pointer arrow)))))))

(Yes, it's confusing to have ':pointer' on the top level and 'pointer'
inside the value for ':map'.  But the manual correctly says 'pointer'
in the latter case, so at least the documentation is consistent with
the code.)





^ permalink raw reply	[flat|nested] 6+ messages in thread

* bug#20508: 24.4; image map properties not working as described
  2015-05-05 16:32 ` Eli Zaretskii
@ 2015-05-05 17:27   ` patrick mc allister
  2015-05-05 19:14     ` Eli Zaretskii
  0 siblings, 1 reply; 6+ messages in thread
From: patrick mc allister @ 2015-05-05 17:27 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: 20508

[-- Attachment #1: Type: text/plain, Size: 2918 bytes --]

On Tue, May 05, 2015 at 07:32:01PM +0300, Eli Zaretskii wrote:
>
> It's a cockpit error: you should use 'pointer', not ':pointer' in the
> first instance.  IOW, this works for me (note the underlined part):
> 
> (defun image-wipe-and-insert ()
>   (interactive)
>   (let ()
>     (with-current-buffer (get-buffer-create "*an image area test buffer*")
>       (switch-to-buffer (current-buffer))
>       (erase-buffer)
>       (insert-image (find-image '((:type png :file "/usr/share/emacs/24.4/etc/images/icons/hicolor/128x128/apps/emacs.png"
>                      :map  '((rect . ((0 . 0) . (50 . 50))) anAreaID (pointer hourglass :help-echo "You found an area!"))
>                      ;;                                               ^^^^^^^
>                      ;; :relief -20
>                      ;; :conversion laplace
>                      :margin (0 . 0)
>                      :pointer arrow)))))))
> 
> (Yes, it's confusing to have ':pointer' on the top level and 'pointer'
> inside the value for ':map'.  But the manual correctly says 'pointer'
> in the latter case, so at least the documentation is consistent with
> the code.)

Thanks a lot, indeed I missed that point!

Now, however, I have a follow-up problem (which kind-of nearly fits
the subject line): I was actually trying to get more than one of these
hotspots onto the image, something like this:

(defun image-wipe-and-insert-two-maps ()
  (interactive)
  (let ()
    (with-current-buffer (get-buffer-create "*an image area test buffer*")
      (switch-to-buffer (current-buffer))
      (erase-buffer)
      (insert-image (find-image '((:type png :file "/usr/share/emacs/24.4/etc/images/icons/hicolor/128x128/apps/emacs.png"
					 :map '(
						((rect . ((0 . 0) . (50 . 50))) anAreaID (pointer hourglass help-echo "You found an area!"))
						((rect . ((51 . 51) . (100 . 100))) aSecondAreaID (pointer hand help-echo "You found another area!")))
					 ;; :relief -20
					 ;; :conversion laplace
					 :margin (0 . 0)
					 :pointer arrow)))))))

I thought this would be in accordance to the info node, where it says:
``An image map is an alist where each element has the format `(AREA ID
PLIST)'." 

But my attempt to insert two of those elements leads to no :map
properties being shown for the image.

They are there, though:

(with-current-buffer "*an image area test buffer*"
  (pp (text-properties-at (point-min)) (current-buffer)))

gives me:

(rear-nonsticky
 (display)
 display
 (image :type png :file "/usr/share/emacs/24.4/etc/images/icons/hicolor/128x128/apps/emacs.png" :map
	'(((rect
	    (0 . 0)
	    50 . 50)
	   anAreaID
	   (pointer hourglass help-echo "You found an area!"))
	  ((rect
	    (51 . 51)
	    100 . 100)
	   aSecondAreaID
	   (pointer hand help-echo "You found another area!")))
	:margin
	(0 . 0)
	:pointer arrow))

-- 
patrick

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 181 bytes --]

^ permalink raw reply	[flat|nested] 6+ messages in thread

* bug#20508: 24.4; image map properties not working as described
  2015-05-05 17:27   ` patrick mc allister
@ 2015-05-05 19:14     ` Eli Zaretskii
  2015-05-06  7:15       ` patrick mc allister
  0 siblings, 1 reply; 6+ messages in thread
From: Eli Zaretskii @ 2015-05-05 19:14 UTC (permalink / raw)
  To: patrick mc allister; +Cc: 20508

> Date: Tue, 5 May 2015 19:27:54 +0200
> From: patrick mc allister <pma@rdorte.org>
> Cc: 20508@debbugs.gnu.org
> 
> Now, however, I have a follow-up problem (which kind-of nearly fits
> the subject line): I was actually trying to get more than one of these
> hotspots onto the image, something like this:
> 
> (defun image-wipe-and-insert-two-maps ()
>   (interactive)
>   (let ()
>     (with-current-buffer (get-buffer-create "*an image area test buffer*")
>       (switch-to-buffer (current-buffer))
>       (erase-buffer)
>       (insert-image (find-image '((:type png :file "/usr/share/emacs/24.4/etc/images/icons/hicolor/128x128/apps/emacs.png"
> 					 :map '(
> 						((rect . ((0 . 0) . (50 . 50))) anAreaID (pointer hourglass help-echo "You found an area!"))
> 						((rect . ((51 . 51) . (100 . 100))) aSecondAreaID (pointer hand help-echo "You found another area!")))
> 					 ;; :relief -20
> 					 ;; :conversion laplace
> 					 :margin (0 . 0)
> 					 :pointer arrow)))))))
> 
> I thought this would be in accordance to the info node, where it says:
> ``An image map is an alist where each element has the format `(AREA ID
> PLIST)'." 

This variant works as you expect:

(defun image-wipe-and-insert-two-maps ()
  (interactive)
  (let ()
    (with-current-buffer (get-buffer-create "*an image area test buffer*")
      (switch-to-buffer (current-buffer))
      (erase-buffer)
      (insert-image (find-image '((:type png :file "/usr/share/emacs/24.4/etc/images/icons/hicolor/128x128/apps/emacs.png"
					 :map (list
						((rect . ((0 . 0) . (50 . 50))) anAreaID (pointer hourglass help-echo "You found an area!"))
						((rect . ((51 . 51) . (100 . 100))) aSecondAreaID (pointer hand help-echo "You found another area!")))
					 ;; :relief -20
					 ;; :conversion laplace
					 :margin (0 . 0)
					 :pointer arrow)))))))

(Figuring out why you need that explicit call to 'list' is left as an
exercise ;-)





^ permalink raw reply	[flat|nested] 6+ messages in thread

* bug#20508: 24.4; image map properties not working as described
  2015-05-05 19:14     ` Eli Zaretskii
@ 2015-05-06  7:15       ` patrick mc allister
  2015-05-06 15:24         ` Eli Zaretskii
  0 siblings, 1 reply; 6+ messages in thread
From: patrick mc allister @ 2015-05-06  7:15 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: 20508

[-- Attachment #1: Type: text/plain, Size: 970 bytes --]

On Tue, May 05, 2015 at 10:14:31PM +0300, Eli Zaretskii wrote:
>
> This variant works as you expect:
> 
> (defun image-wipe-and-insert-two-maps ()
>   (interactive)
>   (let ()
>     (with-current-buffer (get-buffer-create "*an image area test buffer*")
>       (switch-to-buffer (current-buffer))
>       (erase-buffer)
>       (insert-image (find-image '((:type png :file "/usr/share/emacs/24.4/etc/images/icons/hicolor/128x128/apps/emacs.png"
> 					 :map (list
> 						((rect . ((0 . 0) . (50 . 50))) anAreaID (pointer hourglass help-echo "You found an area!"))
> 						((rect . ((51 . 51) . (100 . 100))) aSecondAreaID (pointer hand help-echo "You found another area!")))
> 					 ;; :relief -20
> 					 ;; :conversion laplace
> 					 :margin (0 . 0)
> 					 :pointer arrow)))))))
> 
> (Figuring out why you need that explicit call to 'list' is left as an
> exercise ;-)

Thanks again, another thing I missed!

best regards,

-- 
patrick

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 181 bytes --]

^ permalink raw reply	[flat|nested] 6+ messages in thread

* bug#20508: 24.4; image map properties not working as described
  2015-05-06  7:15       ` patrick mc allister
@ 2015-05-06 15:24         ` Eli Zaretskii
  0 siblings, 0 replies; 6+ messages in thread
From: Eli Zaretskii @ 2015-05-06 15:24 UTC (permalink / raw)
  To: patrick mc allister; +Cc: 20508-done

> Date: Wed, 6 May 2015 09:15:44 +0200
> From: patrick mc allister <pma@rdorte.org>
> Cc: 20508@debbugs.gnu.org
> 
> > (defun image-wipe-and-insert-two-maps ()
> >   (interactive)
> >   (let ()
> >     (with-current-buffer (get-buffer-create "*an image area test buffer*")
> >       (switch-to-buffer (current-buffer))
> >       (erase-buffer)
> >       (insert-image (find-image '((:type png :file "/usr/share/emacs/24.4/etc/images/icons/hicolor/128x128/apps/emacs.png"
> > 					 :map (list
> > 						((rect . ((0 . 0) . (50 . 50))) anAreaID (pointer hourglass help-echo "You found an area!"))
> > 						((rect . ((51 . 51) . (100 . 100))) aSecondAreaID (pointer hand help-echo "You found another area!")))
> > 					 ;; :relief -20
> > 					 ;; :conversion laplace
> > 					 :margin (0 . 0)
> > 					 :pointer arrow)))))))
> > 
> > (Figuring out why you need that explicit call to 'list' is left as an
> > exercise ;-)
> 
> Thanks again, another thing I missed!

So now that we agree there's no bug here, I can close the bug report.

Thanks.





^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2015-05-06 15:24 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-05-05  9:28 bug#20508: 24.4; image map properties not working as described pma
2015-05-05 16:32 ` Eli Zaretskii
2015-05-05 17:27   ` patrick mc allister
2015-05-05 19:14     ` Eli Zaretskii
2015-05-06  7:15       ` patrick mc allister
2015-05-06 15:24         ` Eli Zaretskii

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).