Skip to content

v0.22.1

Latest

Choose a tag to compare

@github-actions github-actions released this 30 Sep 03:20
· 201 commits to main since this release

What's Changed

v0.22.1 is a patch release that fixes problems reported since 0.22.0. Drag and drop can now read every format another application offers, and on Linux, filling in characters a font lacks from other fonts is faster and more accurate.

It also fixes resources left behind by closed windows on the macOS and Windows MewVG backends, and window title, size limit, and file drop problems on Linux.

Added

Drag and Drop

  • Typed data formats - Dropped data can be read with a value type fixed per format (DataFormats). Files, URIs, and text are available directly, formats from other applications are read by name, and an application's own formats can be defined for reading and writing.
  • URI format - A list of URIs, including items that are not local files, can be received (StandardDataFormats.Uris). A drag carrying only URIs is accepted by default, like one carrying files or text.

Improved

Drag and Drop

  • Every format of a drag from another application - On Windows, Linux, and macOS, every format the drag source offers is listed and read on request. The content can be inspected in DragOver before the drop, and on Linux and macOS drags without files also reach the window.

Text

  • Missing characters filled from later fonts in a font list (#270) - In a comma-separated FontFamily, the fonts listed after the first supply the characters it lacks. This applies to DirectWrite, macOS, and Linux; GDI text still draws with the first font and Windows font linking.
  • Font fallback speed on Linux (#270) - Instead of asking fontconfig for every missing character, each font builds its fallback list once. The delay of about 100 ms when editing a line that mixes CJK characters into a Latin font is gone.
  • DirectWrite glyph appearance on Windows - The GDI and MewVG backends now rasterize DirectWrite text the same way Direct2D does, so stems and edges no longer look different between backends.

Fixed

  • File drops never completed on Linux (#271) - The event carrying the dropped data was discarded before it reached the window, so Drop was not raised and the application that started the drag was never told the drop finished.
  • Drops of non-file URIs refused on Linux (#272) - URIs such as zip:// and smb:// were refused without a Drop. Drop is now raised and the URIs can be read through the URI format.
  • Window drag events raised apart from the element chain - The window now receives each event once as the root of the element chain, a drag refused by a handler is no longer overridden by the default acceptance, and Drop is no longer followed by DragLeave.
  • Popups opened from inside a closing popup stayed open - A drop-down opened from a toolbar overflow menu stayed open after the overflow closed, and a toolbar item returned from the overflow kept its hover and missed the next enter.
  • No tooltips for elements inside a popup - Elements inside an open popup, such as a toolbar overflow menu, now show their tooltips.
  • Process crashed on macOS after many popups were opened and closed (#269) - Tooltips, menus, and drop-downs are each windows, and every close released the shared Metal device, so the process crashed after about 250 of them closed.
  • Resources of closed windows left behind on MewVG (#269) - On macOS, a closed window's render resources, images, and window objects were not released, and on Windows, closed tooltips and popups left their render targets behind.
  • One-sided borders disappeared on MewVG - In shapes whose inner hole shares edges with the outer contour, a 1 px border vanished and thicker borders lost their outer row. Fixed in MewVG 0.10.1.
  • Characters of some fonts drawn wrong on Linux - Arabic drawn from a fallback font lost its joining and Devanagari its conjuncts. A color emoji font such as Noto Color Emoji set as the primary font drew glyphs about four times too large.
  • Non-Latin characters garbled in Linux window titles (#273) - The UTF-8 title that window managers read first was not set, so titles with characters such as Korean showed as garbage.
  • Window size limits lost on Linux when a startup position was set - A fixed-size window could be resized, and a resizable window lost its minimum and maximum size.
  • Calendar header clipped or misaligned - A header wider than the day grid, such as a long month name, was clipped, and for one frame after the month changed it was drawn at the width of the previous month's text.

Extension Packages

Aprillz.MewUI.MewDock

  • Wide selected tab overlapped the overflow buttons - When a selected tab came up from the overflowed tabs, only one leading tab was dropped. Leading tabs are now dropped until the selected tab fits.

Docs / Samples

Gallery / Samples

  • Geometry operations sample (#196) - Try the boolean operations, bounds and area, path flattening and outlining, and containment and intersection tests of Aprillz.MewUI.Geometry by dragging shapes around.

Docs

  • Drag and drop docs - Added a document on using drag and drop and its data formats, and noted per-platform support in the README platform section.

변경 사항

v0.22.1은 0.22.0 이후 보고된 문제를 고친 패치 릴리즈입니다. 드래그 앤 드롭이 다른 애플리케이션이 제공한 모든 형식을 읽을 수 있게 되었고, Linux에서 글꼴에 없는 문자를 다른 글꼴로 채우는 과정이 빨라지고 정확해졌습니다.

macOS와 Windows의 MewVG 백엔드에서 닫은 창의 자원이 남던 문제와, Linux의 창 제목, 크기 제한, 파일 드롭 문제도 함께 고쳤습니다.

추가됨

드래그 앤 드롭

  • 타입이 정해진 데이터 형식 - 드롭한 데이터를 형식마다 정해진 값 타입으로 꺼낼 수 있습니다(DataFormats). 파일, URI, 텍스트는 바로 쓰고, 다른 애플리케이션의 형식은 이름으로, 애플리케이션 고유 형식은 직접 정의해 읽고 씁니다.
  • URI 형식 - 로컬 파일이 아닌 항목까지 포함한 URI 목록을 받을 수 있습니다(StandardDataFormats.Uris). URI만 담은 드래그도 파일이나 텍스트처럼 기본으로 받아들입니다.

개선됨

드래그 앤 드롭

  • 다른 애플리케이션에서 온 드래그의 모든 형식 읽기 - Windows, Linux, macOS에서 드래그 원본이 제공한 형식을 모두 나열하고, 요청할 때 읽습니다. 드롭 전 DragOver에서도 내용을 확인할 수 있고, Linux와 macOS에서는 파일이 없는 드래그도 창에 전달됩니다.

텍스트

  • 글꼴 목록의 뒤쪽 글꼴로 빠진 문자 채우기 (#270) - 쉼표로 나열한 FontFamily에서 첫 글꼴에 없는 문자를 뒤에 나열한 글꼴이 채웁니다. DirectWrite, macOS, Linux에 적용되며, GDI 텍스트는 예전처럼 첫 글꼴과 Windows 글꼴 링크로 그립니다.
  • Linux의 글꼴 대체 속도 (#270) - 빠진 문자를 찾을 때마다 fontconfig를 부르지 않고 글꼴마다 대체 목록을 한 번만 만듭니다. 라틴 글꼴에서 한중일 문자가 섞인 줄을 편집할 때 생기던 약 100 ms의 지연이 사라졌습니다.
  • Windows DirectWrite 글자 모양 - GDI와 MewVG 백엔드의 DirectWrite 글자를 Direct2D와 같은 방식으로 그려, 백엔드마다 획과 가장자리가 다르게 보이지 않습니다.

수정됨

  • Linux에서 파일을 드롭해도 드롭이 끝나지 않던 문제 (#271) - 드롭한 데이터를 담은 이벤트가 창에 닿기 전에 버려져 Drop이 발생하지 않았고, 드래그를 시작한 애플리케이션도 완료 알림을 받지 못했습니다.
  • Linux에서 로컬 파일이 아닌 URI를 드롭하면 거부되던 문제 (#272) - zip://, smb:// 같은 URI는 Drop 없이 거부됐습니다. 이제 Drop이 발생하고 URI 형식으로 읽을 수 있습니다.
  • 창의 드래그 이벤트가 요소 경로와 따로 발생하던 문제 - 이제 창은 요소 경로의 맨 끝으로 한 번만 이벤트를 받고, 처리기가 거부한 드래그는 기본 수락으로 덮이지 않으며, Drop 뒤에 DragLeave가 따라오지 않습니다.
  • 닫히는 팝업 안에서 연 팝업이 남던 문제 - 툴바 넘침 메뉴에서 연 드롭다운이 넘침 메뉴가 닫혀도 남았고, 넘침 메뉴에서 돌아온 툴바 항목은 호버 상태로 남아 다음 진입을 받지 못했습니다.
  • 팝업 안 요소의 툴팁이 뜨지 않던 문제 - 툴바 넘침 메뉴처럼 열려 있는 팝업 안의 요소에도 툴팁이 뜹니다.
  • macOS에서 팝업 창을 많이 열고 닫으면 프로세스가 종료되던 문제 (#269) - 툴팁, 메뉴, 드롭다운 같은 팝업도 각각 창이라, 닫힐 때마다 공유 Metal 장치를 해제해 250개쯤 닫히면 프로세스가 비정상 종료됐습니다.
  • MewVG에서 닫은 창의 자원이 남던 문제 (#269) - macOS에서는 닫은 창의 렌더링 자원, 이미지, 창 객체가 해제되지 않았고, Windows에서는 닫은 툴팁과 팝업의 렌더 타깃이 남았습니다.
  • MewVG에서 한쪽 면에만 있는 테두리가 사라지던 문제 - 안쪽 구멍이 바깥 윤곽과 변을 공유하는 모양에서 1픽셀 테두리가 사라지고 두꺼운 테두리는 바깥 한 줄을 잃었습니다. MewVG 0.10.1로 고쳤습니다.
  • Linux에서 일부 글꼴의 문자가 잘못 그려지던 문제 - 대체 글꼴로 그린 아랍어는 글자가 이어지지 않고 데바나가리는 결합 글자가 풀렸습니다. Noto Color Emoji 같은 컬러 이모지 글꼴을 기본 글꼴로 지정하면 글자가 약 4배 크기로 그려졌습니다.
  • Linux 창 제목의 비라틴 문자가 깨지던 문제 (#273) - 창 관리자가 먼저 읽는 UTF-8 제목을 설정하지 않아, 한글 같은 문자가 들어간 제목이 깨져 보였습니다.
  • Linux에서 시작 위치를 지정하면 창 크기 제한이 풀리던 문제 - 크기를 고정한 창의 크기를 바꿀 수 있었고, 크기 조절 창은 최소·최대 크기를 잃었습니다.
  • Calendar 머리글이 잘리거나 어긋나던 문제 - 긴 달 이름처럼 머리글이 날짜 표보다 넓으면 잘렸고, 달을 바꾼 직후 한 프레임은 이전 달 문구의 너비로 그려졌습니다.

확장 패키지

Aprillz.MewUI.MewDock

  • 넓은 선택 탭이 넘침 버튼과 겹치던 문제 - 선택한 탭이 넘친 탭 중에서 올라올 때 앞쪽 탭을 하나만 뺐습니다. 이제 선택한 탭이 들어갈 때까지 뺍니다.

문서 / 샘플

갤러리 / 샘플

  • 지오메트리 연산 샘플 (#196) - Aprillz.MewUI.Geometry의 불리언 연산, 경계와 넓이 계산, 경로 평탄화와 윤곽화, 포함·교차 판정을 도형을 드래그해 보며 확인할 수 있습니다.

문서

  • 드래그 앤 드롭 문서 - 드래그 앤 드롭 사용법과 데이터 형식을 설명하는 문서를 추가하고, README 플랫폼 절에 플랫폼별 지원 범위를 적었습니다.

Full Changelog: v0.22.0...v0.22.1