dd basic drag thumbnail support to dnd kitten

This commit is contained in:
Kovid Goyal 2026-05-03 22:18:18 +05:30
parent ee38d3f0c8
commit 4fe29f2630
No known key found for this signature in database
GPG key ID: 06BC317B515ACE7C
6 changed files with 108 additions and 4 deletions

View file

@ -328,6 +328,10 @@ class TestDnDKitten(BaseTest):
self.assertEqual(fa.read(), fb.read(), f'{a} ({os.path.getsize(a)}) != {b} ({os.path.getsize(b)})')
def test_dnd_kitten_drag(self):
from .graphics import png_data
drag_thumbnail = os.path.join(self.test_dir, 'drag.png')
with open(drag_thumbnail, 'wb') as f:
f.write(png_data)
img_drag_path = 'image.png'
def create_files():
with open(os.path.join(self.kitten_wd, img_drag_path), 'wb') as f:
@ -336,7 +340,7 @@ class TestDnDKitten(BaseTest):
create_fs(self.src_data_dir)
create_files()
tl = tuple(os.path.join(self.src_data_dir, x) for x in os.listdir(self.src_data_dir))
self.finish_setup(cli_args=(f'--drag=image/png:{img_drag_path}', ) + tl) # )))
self.finish_setup(cli_args=(f'--drag-thumbnail={drag_thumbnail}', f'--drag=image/png:{img_drag_path}') + tl) # )))
with self.subTest(remote_client=False):
self.dnd_kitten_drag(False, img_drag_path)
self.reset_kitten(True)
@ -378,6 +382,7 @@ class TestDnDKitten(BaseTest):
dnd_test_start_drag_offer(self.capture.window_id, x, y)
wait_for_drag_active()
self.wait_for_state('drag_operations', expected)
self.wait_for_state('drag_thumbnail_size', 4)
def end_drag(canceled=True):
dnd_test_drag_finish(self.capture.window_id, canceled)
wait_for_drag_active(False)

View file

@ -19,7 +19,7 @@ try:
from PIL import Image
except ImportError:
Image = None
png_data = base64_decode('iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNk+P+/HgAFhAJ/wlseKgAAAABJRU5ErkJggg==')
def send_command(screen, cmd, payload=b''):
cmd = '\033_G' + cmd
@ -505,7 +505,6 @@ class TestGraphics(BaseTest):
def test_load_png_simple(self):
# 1x1 transparent PNG
png_data = base64_decode('iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNk+P+/HgAFhAJ/wlseKgAAAABJRU5ErkJggg==')
expected = b'\x00\xff\xff\x7f'
self.ae(load_png_data(png_data), (expected, 1, 1))
s, g, pl, sl = load_helpers(self)