GTK 3.96, bản phát hành thử nghiệm của GTK 4, đã xuất bản

10 tháng sau của quá khứ phát hành thử nghiệm trình bày GTK 3.96, một bản phát hành thử nghiệm mới của bản phát hành ổn định sắp tới của GTK 4. Chi nhánh GTK 4 đang được phát triển như một phần của quy trình phát triển mới nhằm cố gắng cung cấp cho các nhà phát triển ứng dụng một API ổn định và được hỗ trợ trong vài năm để có thể sử dụng mà không cần lo lắng về việc phải viết lại ứng dụng sáu tháng một lần do thay đổi API trong nhánh GTK tiếp theo. Cho đến khi GTK 4 hoàn toàn ổn định, các ứng dụng được cung cấp cho người dùng nên tiếp tục được xây dựng bằng nhánh GTK 3.24.

Chính thay đổi trong GTK 3.96:

  • Trong API GSK (GTK Scene Kit), cung cấp khả năng hiển thị các cảnh đồ họa thông qua OpenGL và Vulkan, công việc đã được thực hiện để xử lý các lỗi đã trở nên dễ xác định hơn nhờ công cụ gỡ lỗi mới gtk4-node-editor, cho phép bạn tải và hiển thị nút hiển thị ở định dạng tuần tự hóa (có thể được lưu trong trình kiểm tra GTK ở chế độ kiểm tra) đồng thời so sánh kết quả hiển thị khi sử dụng các chương trình phụ trợ khác nhau;

    GTK 3.96, bản phát hành thử nghiệm của GTK 4, đã xuất bản

  • Khả năng chuyển đổi 3D đã được nâng lên mức cho phép bạn tạo các hiệu ứng hoạt hình như khối xoay;

    GTK 3.96, bản phát hành thử nghiệm của GTK 4, đã xuất bản

  • Hoàn toàn viết lại Phần phụ trợ Broadway GDK được thiết kế để hiển thị đầu ra thư viện GTK trong cửa sổ trình duyệt web. Việc triển khai Broadway cũ không phù hợp với các phương thức kết xuất được đề xuất trong GTK 4 (thay vì xuất ra bộ đệm, giờ đây nó sử dụng mô hình dựa trên các nút kết xuất, trong đó đầu ra được tạo thành dưới dạng cây hoạt động cấp cao, được GPU xử lý hiệu quả bằng OpenGL và Vulkan).
    Tùy chọn Broadway mới chuyển đổi các nút kết xuất thành các nút DOM với các kiểu CSS để hiển thị giao diện trong trình duyệt. Mỗi trạng thái màn hình mới được xử lý dưới dạng thay đổi trong cây DOM so với trạng thái trước đó, giúp giảm kích thước dữ liệu được truyền đến máy khách từ xa. Các phép biến đổi 3D và hiệu ứng đồ họa được triển khai thông qua thuộc tính biến đổi CSS;

  • GDK tiếp tục triển khai các API được thiết kế theo giao thức Wayland và dọn sạch các API dựa trên X11 hoặc chuyển chúng sang một chương trình phụ trợ X11 riêng biệt. Có tiến bộ trong công việc nhằm loại bỏ việc sử dụng các bề mặt con và tọa độ toàn cầu. Hỗ trợ cho GDK_SURFACE_SUBSURFACE đã bị xóa khỏi GDK;
  • Việc tái cấu trúc mã liên quan đến việc thực hiện các thao tác Kéo và Thả vẫn tiếp tục, bao gồm các đối tượng GdkDrag và GdkDrop riêng biệt được đề xuất;
  • Việc xử lý sự kiện đã được đơn giản hóa và hiện chỉ được sử dụng cho đầu vào. Các sự kiện còn lại được thay thế bằng các tín hiệu riêng biệt, ví dụ: thay vì các sự kiện đầu ra, tín hiệu “GdkSurface::render” được đề xuất, thay vì các sự kiện cấu hình - “GdkSurface::size-changed”, thay vì ánh xạ các sự kiện - “GdkSurface: :mapped”, thay vì gdk_event_handler_set() - "GdkSurface::event";
  • Phần phụ trợ GDK cho Wayland đã thêm hỗ trợ cho giao diện cổng thông tin để truy cập cài đặt GtkSettings. Để làm việc với các phương thức nhập, hỗ trợ cho phần mở rộng giao thức nhập văn bản-không ổn định-v3 đã được đề xuất;
  • Để phát triển các tiện ích, một đối tượng GtkLayoutManager mới được giới thiệu cùng với việc triển khai hệ thống kiểm soát bố cục của các phần tử tùy thuộc vào bố cục của vùng hiển thị. GtkLayoutManager thay thế các thuộc tính con trong vùng chứa GTK như GtkBox và GtkGrid. Một số trình quản lý bố cục được tạo sẵn được đề xuất: GtkBinLayout cho các vùng chứa đơn giản có một phần tử con, GtkBoxLayout cho các phần tử con được căn chỉnh tuyến tính, GtkGridLayout để căn chỉnh các phần tử con thành lưới, GtkFixedLayout để định vị tùy ý các phần tử con, GtkCustomLayout để dịch các phần tử truyền thống dựa trên size_allocate người xử lý;
  • Các đối tượng có thể truy cập công khai để hiển thị trang của các phần tử con đã được thêm vào các tiện ích GtkAssistant, GtkStack và GtkNotebook, nơi các thuộc tính con không liên quan đến Bố cục của các tiện ích này sẽ được chuyển vào đó. Vì tất cả các thuộc tính con hiện có đã được chuyển đổi thành thuộc tính thông thường, thuộc tính bố cục hoặc được chuyển sang đối tượng trang nên việc hỗ trợ cho các thuộc tính con đã bị xóa hoàn toàn khỏi GtkContainer;
  • Chức năng cốt lõi của GtkEntry đã được chuyển sang tiện ích GtkText mới, tiện ích này cũng bao gồm giao diện chỉnh sửa GtkEditable nâng cao. Tất cả các lớp con đầu vào dữ liệu hiện có đã được làm lại dưới dạng triển khai GtkEditable dựa trên tiện ích GtkText mới;
  • Đã thêm tiện ích GtkPasswordEntry mới cho các biểu mẫu nhập mật khẩu;
  • GtkWidgets đã thêm khả năng chuyển đổi các phần tử con bằng cách sử dụng các phương thức chuyển đổi tuyến tính được chỉ định thông qua CSS hoặc đối số gtk_widget_allocate cho GskTransform. Tính năng được chỉ định đã được áp dụng trong tiện ích GtkFixed;
  • Các mô hình tạo danh sách mới đã được thêm vào: GtkMapListModel, GtkSliceListModel, GtkSortListModel, GtkSelectionModel và GtkSingleSelection. Trong tương lai, chúng tôi dự định bổ sung hỗ trợ cho các mô hình danh sách vào GtkListView;
  • GtkBuilder đã thêm khả năng đặt thuộc tính đối tượng cục bộ (nội tuyến), thay vì sử dụng liên kết theo mã định danh;
  • Đã thêm lệnh vào gtk4-builder-tool để chuyển đổi tệp UI từ GTK 3 sang GTK 4;
  • Hỗ trợ cho các chủ đề chính, menu dạng bảng và hộp tổ hợp đã ngừng hoạt động. Tiện ích GtkInvisible đã bị xóa.

    Nguồn: opennet.ru

Thêm một lời nhận xét