หลังจากสี่ปีของการพัฒนา โดยครีบ มีการประกาศเปิดตัวสาขา GTK 4.0 ใหม่ซึ่งกำลังได้รับการพัฒนาเป็นส่วนหนึ่งของกระบวนการพัฒนาใหม่ที่พยายามให้นักพัฒนาแอปพลิเคชันมี API ที่เสถียรและเข้ากันได้เป็นเวลาหลายปีซึ่งสามารถใช้งานได้โดยไม่ต้องกลัวว่าจะต้องทำซ้ำแอปพลิเคชันทุกๆหกเดือนเนื่องจากการเปลี่ยนแปลง API ใน GTK ถัดไป สาขา.
สาขา GTK 4 ได้รับการประกาศว่าเสถียรและจะใช้ใน GNOME 4.0 รีลีสถัดไป. ในเวลาเดียวกันมีการประกาศว่าการสนับสนุนสำหรับสาขา GTK 2 ได้ถูกยกเลิกในอีกไม่กี่วันซึ่งจะมีการเปิดตัวรุ่นล่าสุดในขณะที่การสนับสนุนสำหรับสาขา GTK 3 จะดำเนินต่อไปในอนาคตอันใกล้
คุณสมบัติใหม่หลักของ GTK 4.0
จากการเปลี่ยนแปลงที่โดดเด่นจากสาขาใหม่นี้เราพบว่า มีการใช้วิธีการออกแบบที่ จำกัดซึ่งมีการกำหนดตำแหน่งและขนาดขององค์ประกอบย่อยตามระยะห่างจากขอบและขนาดขององค์ประกอบอื่น ๆ
นอกเหนือจากนั้น เพิ่มโมดูลการแสดงผลตาม Vulkan graphics API ซึ่งใช้เฉดสีสำหรับองค์ประกอบ CSS ที่เน้นทรัพยากรจำนวนมากที่ใช้ในวิดเจ็ต GTK และ GSK ได้รับการรวมเข้าด้วยกัน (ชุดฉาก GTK) ด้วยความสามารถในการเรนเดอร์กราฟิกฉากผ่าน OpenGL และ Vulkan.
มีการแก้ไของค์กรของการเป็นตัวแทน: แทนที่จะส่งไปยังบัฟเฟอร์ ตอนนี้มีการใช้โมเดลที่ขึ้นอยู่กับโหนดการแสดงผล ซึ่งผลลัพธ์จะถูกจัดระเบียบในรูปแบบของโครงสร้างการดำเนินงานระดับสูง ประมวลผลอย่างมีประสิทธิภาพโดย GPU โดยใช้ OpenGL และ Vulkan
นอกจากนี้เรายังสามารถดูได้ใน GTK 4.0 มีการนำเสนอรูปแบบการจัดส่งเหตุการณ์ที่ทันสมัยซึ่งทำให้สามารถข้ามหน้าต่างย่อยได้เมื่อกำหนดเส้นทางเหตุการณ์อินพุต ความจำเป็นในการใช้โมเดลใหม่นั้นเกี่ยวข้องกับการใช้เอฟเฟ็กต์ภาพเคลื่อนไหวที่มีการใช้งานมากขึ้นซึ่งจะต้องแสดงผลโดยไม่เปลี่ยนเค้าโครงขององค์ประกอบที่มองเห็นได้และด้วยเหตุนี้จึงไม่มีหน้าต่างย่อย
GDK API ปรับรูปแบบใหม่เพื่อใช้ประโยชน์จากโปรโตคอล Wayland และแนวคิดที่เกี่ยวข้อง ฟังก์ชันที่เกี่ยวข้องกับ X11 และ Wayland ได้ถูกย้ายไปยังแบ็กเอนด์ที่แยกจากกันและได้มีการล้างข้อมูล API ขนาดใหญ่รวมถึงการลบคลาส GtkMenu, GtkMenuBar และ GtkToolbar แทนที่จะแนะนำตัวเลือก GMenu และป็อปโอเวอร์
ในขณะที่สำหรับการพัฒนาวิดเจ็ตอ็อบเจ็กต์ GtkLayoutManager ใหม่จะถูกนำเสนอพร้อมกับการใช้ระบบควบคุมสำหรับการจัดเรียงองค์ประกอบตามขนาดของพื้นที่ที่มองเห็นได้และ GtkLayoutManager ได้แทนที่คุณสมบัติลูกในคอนเทนเนอร์ GTK เช่น GtkBox และ GtkGrid
การเปลี่ยนแปลงอื่น ๆ ที่โดดเด่น:
- มีการเพิ่มคลาส GtkNative ใหม่สำหรับวิดเจ็ตที่มีพื้นผิวการแสดงผลของตนเองและสามารถทำงานแยกกันในระดับแรกโดยไม่ต้องเชื่อมโยงกับวิดเจ็ตหลัก
- มีการเพิ่มวิดเจ็ตใหม่รวมถึง GtkPicture, GtkText, GtkPasswordEntry, GtkListView, GtkGridView, GtkColumnView และวิดเจ็ตสำหรับแสดง Emoji
- มีการเพิ่มเลเยอร์นามธรรมใหม่ GdkPaintable ซึ่งแสดงผลวัตถุที่สามารถวาดได้ทุกที่และทุกขนาดโดยไม่ต้องเรียงลำดับเลเยอร์การออกแบบ
- เขียนแบ็กเอนด์ของบรอดเวย์เพื่อให้สามารถแสดงเอาต์พุตไลบรารี GTK ในหน้าต่างเว็บเบราว์เซอร์
- API ที่เกี่ยวข้องกับการลากและวางได้รับการออกแบบใหม่รวมถึงอ็อบเจ็กต์ GdkDrag และ GdkDrop ที่เสนอแยกต่างหาก
- การใช้งาน Accessibility API สำหรับคนพิการก่อนหน้านี้ได้ถูกลบออกและมีการเสนอเวอร์ชันใหม่ตามข้อกำหนด ARIA และวิดเจ็ต GtkAccessible
- เพิ่มการรองรับป้ายกำกับที่แก้ไขได้
- วิดเจ็ต GtkTreeView ใช้ความสามารถในการแก้ไขเซลล์
- เพิ่มการสนับสนุนสำหรับการเลื่อนและการกรองแบบเพิ่มหน่วยไปยัง GtkFilterListModel และ GtkSortListModel
- เพิ่มแบ็กเอนด์ GDK ใหม่สำหรับ macOS
GtkTextView และวิดเจ็ตอินพุตอื่น ๆ มีสแต็กเลิกทำในตัว - สำหรับ Windows จะมีการนำเสนอแบ็กเอนด์การแสดงผล GDK แบบ ANGLE ใหม่ซึ่งเป็นเลเยอร์กลางสำหรับแปลการโทรจาก OpenGL ES เป็น OpenGL, Direct3D 9/11, Desktop GL และ Vulkan