[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#18303: Drag and Drop fails when Emacs window/frame is above top
From: |
Jan Djärv |
Subject: |
bug#18303: Drag and Drop fails when Emacs window/frame is above top |
Date: |
Mon, 8 Sep 2014 07:04:54 +0200 |
Hello.
7 sep 2014 kl. 21:50 skrev Paul Eggert <eggert@cs.ucla.edu>:
> Thanks for the patch. I noticed that '(v1 << 16) | v2' wouldn't work as
> desired when v2 < 0, though, as v2's sign bits will bleed into v1's encoded
> value. I installed an attempt at a fix as trunk bzr 117836.
Thanks, but it does not look right. We can assume v1 and v2 are 16 bit signed
integers (X coordinates). In general, when data is a CONS, it must be two 16
bit numbers.
So (v1 << 16) | v2 is just a way of stuffing two signed 16 bits into 32 bits.
But when v2 is long, (v2 & 0xffff) looses the sign bit, as the code is now.
I don't know why the range X_LONG_(MIN|MAX) >> 16 is relevant here, it is way
too large.
Remember, val can only be 32 bit, so X_LONG_MAX >> 16 can in it self be 48 bits.
Maybe just convert v1 and v2 to two signed 16 bit numbers (int16_t?) and shift?
Jan D.