انتشار GTK 3.99.0 نشان دهنده تکمیل عملکرد برنامه ریزی شده برای GTK 4 بود.
منتشر شده نسخه آزمایشی نهایی چارچوب GTK 3.99.0، که تمام ویژگی های برنامه ریزی شده برای GTK 4 را پیاده سازی می کند. شعبه GTK 4 به عنوان بخشی از یک فرآیند توسعه جدید در حال توسعه است که تلاش می کند یک API پایدار و پشتیبانی شده برای چندین سال به توسعه دهندگان برنامه ارائه دهد که می تواند بدون ترس از استفاده از آن استفاده شود. برنامه ها را هر شش ماه بازنویسی کنید زیرا برای API در شاخه بعدی GTK تغییر می کند. GTK 4 قرار است تا قبل از پایان سال عرضه شود.
روشی برای چیدمان عناصر بر اساس قیود (چیدمان محدودیت) که در آن مکان و اندازه عناصر فرزند بر اساس فاصله تا مرزها و اندازه عناصر دیگر تعیین می شود.
یک رندر مبتنی بر API گرافیکی Vulkan که سایهزنها را برای بسیاری از عناصر CSS با منابع فشرده مورد استفاده در ویجتهای GTK پیادهسازی میکند.
ادغام GSK (GTK Scene Kit) با قابلیت رندر صحنه های گرافیکی از طریق OpenGL و Vulkan.
سازمان رندر بازنگری شده است - به جای خروجی به یک بافر، اکنون از مدلی مبتنی بر گره های رندر استفاده می شود که در آن خروجی به شکل درختی از عملیات سطح بالا مرتب شده است که به طور موثر توسط GPU با استفاده از OpenGL پردازش می شود. و ولکان
یک مدل تحویل رویداد مدرن که نیاز به پنجرههای فرعی را هنگام مسیریابی رویدادهای ورودی حذف میکند. نیاز به اجرای یک مدل جدید با استفاده فعال تر از جلوه های انیمیشن همراه است که رندر کردن آن باید بدون تغییر طرح عناصر قابل مشاهده و بر این اساس بدون پنجره فرعی انجام شود.
GDK API با توجه به استفاده از پروتکل Wayland و مفاهیم مرتبط دوباره طراحی شده است. X11 و ویژگی های مبتنی بر Wayland به آن منتقل شده اند باطن های جداگانه.
پاکسازی عمده API انجام شده است، از جمله حذف کلاسهای GtkMenu، GtkMenuBar و GtkToolbar، به نفع GMenu و گزینههای مبتنی بر منوهای popover.
GtkTextView و سایر ویجتهای ورودی دارای یک پشته واگرد داخلی هستند.
یک کلاس جدید GtkNative برای ویجتهایی اضافه شد که سطح نمایش خود را دارند و میتوانند به طور جداگانه در سطح اول کار کنند، بدون اینکه به ویجتهای والد متصل شوند.
ویجتهای جدیدی از جمله GtkPicture، GtkText، GtkPasswordEntry، GtkListView، GtkGridView، GtkColumnView و یک ویجت نمایش Emoji اضافه شدهاند.
برای توسعه ویجت ها، یک شی جدید GtkLayoutManager با پیاده سازی سیستمی برای کنترل چیدمان عناصر بسته به اندازه ناحیه قابل مشاهده معرفی شده است. GtkLayoutManager جایگزین ویژگی های فرزند در کانتینرهای GTK مانند GtkBox و GtkGrid می شود.
مدیریت رویداد ساده شده است و اکنون فقط برای ورودی استفاده می شود. رویدادهای باقیمانده با سیگنالهای جداگانه جایگزین میشوند، برای مثال به جای رویدادهای خروجی، سیگنال «GdkSurface::render» پیشنهاد میشود و به جای رویدادهای پیکربندی، «GdkSurface::size-changed» ارائه میشود.
یک لایه انتزاعی جدید GdkPaintable اضافه شده است، که نشان دهنده اشیایی است که می توانند در هر مکانی در هر اندازه ترسیم شوند، بدون نیاز به مرتب سازی لایه های طرح.
باطن برادوی بازنویسی شده است تا اجازه دهد خروجی کتابخانه GTK در یک پنجره مرورگر وب ارائه شود.
API مرتبط با انجام عملیات Drag-and-Drop، از جمله اشیاء جداگانه پیشنهادی GdkDrag و GdkDrop، دوباره طراحی شده است.
بهبودها در مقایسه با نسخه آزمایشی قبلی:
پیاده سازی قدیمی Accessibility API برای افراد دارای معلولیت حذف شده است و با یک نسخه جدید بر اساس مشخصات جایگزین شده است. ARIA و ویجت GtkAccessible.
اضافه شدن پشتیبانی از برچسب های قابل ویرایش (GtkEditableLabel).
مدلهای فهرست جدیدی برای نمایش نشانکها (GtkBookmarkList)، رشتهها (GtkStringList) و بلوکهای انتخاب (GtkBitset) پیشنهاد شدهاند.
ویجت GtkTreeView قابلیت ویرایش سلول ها را دارد.
اجرای اسکرول در GtkGridView و GtkListView بهبود یافته است، پشتیبانی از اسکرول خودکار و گسترش خودکار اضافه شده است.
GtkWidget به طور قابل توجهی سرعت پردازش اقدامات مختلف را افزایش می دهد.
پشتیبانی از اسکرول و فیلتر کردن افزایشی به GtkFilterListModel و GtkSortListModel اضافه شده است.
Inspector پشتیبانی از بازرسی مدلهای لیست و قابلیت پیمایش مستقیم بین اشیا را اضافه کرده است.
در GDK، تاریخچه پیمایش ذخیره شده است، GdkDevice API پاک شده است، و جداسازی دستگاه ها به master و slave متوقف شده است.
یک باطن جدید GDK برای macOS اضافه شد.
یک باطن رندر جدید GDK بر اساس ANGLE, بین لایه ها برای ترجمه تماس های OpenGL ES به OpenGL، Direct3D 9/11، Desktop GL و Vulkan.