GTK 4.0 ได้รับการเผยแพร่แล้วและมาพร้อมกับการปรับปรุงสำหรับ OpenGL และ Vulkan และอื่น ๆ

หลังจากสี่ปีของการพัฒนา โดยครีบ มีการประกาศเปิดตัวสาขา 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