GTK 3.99.0์˜ ์ถœ์‹œ๋Š” GTK 4์— ๊ณ„ํš๋œ ๊ธฐ๋Šฅ์˜ ์™„์„ฑ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

๊ฒŒ์‹œ ๋จ ํ”„๋ ˆ์ž„์›Œํฌ์˜ ์ตœ์ข… ์‹คํ—˜ ๋ฆด๋ฆฌ์Šค GTK 3.99.0GTK 4์— ๋Œ€ํ•ด ๊ณ„ํš๋œ ๋ชจ๋“  ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๋Š” ๋ธŒ๋žœ์น˜์ž…๋‹ˆ๋‹ค. GTK 4 ๋ธŒ๋žœ์น˜๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ์ž์—๊ฒŒ ์•ˆ์ •์ ์ด๊ณ  ์ง€์›๋˜๋Š” API๋ฅผ ์ˆ˜๋…„ ๋™์•ˆ ์ œ๊ณตํ•˜์—ฌ ๊ฑฑ์ • ์—†์ด ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ์ƒˆ๋กœ์šด ๊ฐœ๋ฐœ ํ”„๋กœ์„ธ์Šค์˜ ์ผ๋ถ€๋กœ ๊ฐœ๋ฐœ๋˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ GTK ๋ธŒ๋žœ์น˜์˜ API ๋ณ€๊ฒฝ์œผ๋กœ ์ธํ•ด 4๊ฐœ์›”๋งˆ๋‹ค ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋‹ค์‹œ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค. GTK XNUMX๋Š” ์—ฐ๋ง ์ด์ „์— ์ถœ์‹œ๋  ์˜ˆ์ •์ž…๋‹ˆ๋‹ค.

๊ฐ€์žฅ ๋งŽ์€ ๊ฒƒ ์ค‘ ์˜๋ฏธ์žˆ๋Š” ๋ณ€๊ฒฝ ะฒ GTK 4 ๋‹น์‹ ์€ ์ฐธ๊ณ  ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค :

  • ์ œ์•ฝ ์กฐ๊ฑด์— ๋”ฐ๋ผ ์š”์†Œ๋ฅผ ๋ฐฐ์น˜ํ•˜๋Š” ๋ฐฉ๋ฒ•(์ œ์•ฝ ๋ ˆ์ด์•„์›ƒ), ์—ฌ๊ธฐ์„œ ํ•˜์œ„ ์š”์†Œ์˜ ์œ„์น˜์™€ ํฌ๊ธฐ๋Š” ํ…Œ๋‘๋ฆฌ๊นŒ์ง€์˜ ๊ฑฐ๋ฆฌ์™€ ๋‹ค๋ฅธ ์š”์†Œ์˜ ํฌ๊ธฐ์— ๋”ฐ๋ผ ๊ฒฐ์ •๋ฉ๋‹ˆ๋‹ค.
  • GTK ์œ„์ ฏ์— ์‚ฌ์šฉ๋˜๋Š” ๋ฆฌ์†Œ์Šค ์ง‘์•ฝ์ ์ธ CSS ์š”์†Œ ์ค‘ ๋‹ค์ˆ˜์— ๋Œ€ํ•œ ์…ฐ์ด๋”๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” Vulkan ๊ทธ๋ž˜ํ”ฝ API ๊ธฐ๋ฐ˜ ๋ Œ๋”๋Ÿฌ์ž…๋‹ˆ๋‹ค.
  • ะ˜ะฝั‚ะตะณั€ะฐั†ะธั GSK (GTK Scene Kit)์—๋Š” OpenGL ๋ฐ Vulkan์„ ํ†ตํ•ด ๊ทธ๋ž˜ํ”ฝ ์žฅ๋ฉด์„ ๋ Œ๋”๋งํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์ด ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋ Œ๋”๋ง ๊ตฌ์„ฑ์ด ์ˆ˜์ •๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด์ œ ๋ฒ„ํผ๋กœ ์ถœ๋ ฅํ•˜๋Š” ๋Œ€์‹  ๋ Œ๋” ๋…ธ๋“œ ๊ธฐ๋ฐ˜ ๋ชจ๋ธ์ด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ์ถœ๋ ฅ์€ OpenGL์„ ์‚ฌ์šฉํ•˜์—ฌ GPU์—์„œ ํšจ์œจ์ ์œผ๋กœ ์ฒ˜๋ฆฌ๋˜๋Š” ์ƒ์œ„ ์ˆ˜์ค€ ์ž‘์—… ํŠธ๋ฆฌ ํ˜•ํƒœ๋กœ ๋ฐฐ์—ด๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋ถˆ์นธ.
  • ์ž๊ธˆ ์ž…๋ ฅ ์ดˆ์  ๋ณ€๊ฒฝ์„ ์œ ์—ฐํ•˜๊ฒŒ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ž…๋ ฅ ์ด๋ฒคํŠธ๋ฅผ ๋ผ์šฐํŒ…ํ•  ๋•Œ ํ•˜์œ„ ์ฐฝ์˜ ํ•„์š”์„ฑ์„ ์ œ๊ฑฐํ•˜๋Š” ํ˜„๋Œ€ํ™”๋œ ์ด๋ฒคํŠธ ์ „๋‹ฌ ๋ชจ๋ธ์ž…๋‹ˆ๋‹ค. ์ƒˆ๋กœ์šด ๋ชจ๋ธ์„ ๊ตฌํ˜„ํ•ด์•ผ ํ•˜๋Š” ํ•„์š”์„ฑ์€ ์• ๋‹ˆ๋ฉ”์ด์…˜ ํšจ๊ณผ๋ฅผ ๋ณด๋‹ค ์ ๊ทน์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ๊ณผ ๊ด€๋ จ์ด ์žˆ์œผ๋ฉฐ, ๋ Œ๋”๋ง์€ ํ‘œ์‹œ๋˜๋Š” ์š”์†Œ์˜ ๋ ˆ์ด์•„์›ƒ์„ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š๊ณ  ๊ทธ์— ๋”ฐ๋ผ ํ•˜์œ„ ์ฐฝ ์—†์ด ์ˆ˜ํ–‰๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
  • GDK API๋Š” Wayland ํ”„๋กœํ† ์ฝœ ๋ฐ ๊ด€๋ จ ๊ฐœ๋…์„ ์‚ฌ์šฉํ•˜๋„๋ก ์žฌ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค. X11 ๋ฐ Wayland ๊ธฐ๋ฐ˜ ๊ธฐ๋Šฅ์ด ๋‹ค์Œ์œผ๋กœ ์ด๋™๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋ณ„๋„์˜ ๋ฐฑ์—”๋“œ.
  • GMenu ๋ฐ ํŒ์˜ค๋ฒ„ ๋ฉ”๋‰ด ๊ธฐ๋ฐ˜ ์˜ต์…˜์„ ์„ ํ˜ธํ•˜์—ฌ GtkMenu, GtkMenuBar ๋ฐ GtkToolbar ํด๋ž˜์Šค๋ฅผ ์ œ๊ฑฐํ•˜๋Š” ๋“ฑ API์˜ ๋Œ€๋Œ€์ ์ธ ์ •๋ฆฌ๊ฐ€ ์ˆ˜ํ–‰๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • GtkTextView์™€ ๊ธฐํƒ€ ์ž…๋ ฅ ์œ„์ ฏ์—๋Š” ์‹คํ–‰ ์ทจ์†Œ ์Šคํƒ์ด ๋‚ด์žฅ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ž์ฒด ๋””์Šคํ”Œ๋ ˆ์ด ํ‘œ๋ฉด์ด ์žˆ๊ณ  ์ƒ์œ„ ์œ„์ ฏ์— ๋ฌถ์ด์ง€ ์•Š๊ณ  ์ฒซ ๋ฒˆ์งธ ์ˆ˜์ค€์—์„œ ๋ณ„๋„๋กœ ์ž‘๋™ํ•  ์ˆ˜ ์žˆ๋Š” ์œ„์ ฏ์— ๋Œ€ํ•œ ์ƒˆ๋กœ์šด GtkNative ํด๋ž˜์Šค๋ฅผ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • GtkPicture, GtkText, GtkPasswordEntry, GtkListView, GtkGridView, GtkColumnView ๋ฐ Emoji ํ‘œ์‹œ ์œ„์ ฏ์„ ํฌํ•จํ•œ ์ƒˆ๋กœ์šด ์œ„์ ฏ์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • ์œ„์ ฏ ๊ฐœ๋ฐœ์„ ์œ„ํ•ด ๊ฐ€์‹œ ์˜์—ญ์˜ ํฌ๊ธฐ์— ๋”ฐ๋ผ ์š”์†Œ์˜ ๋ ˆ์ด์•„์›ƒ์„ ์ œ์–ดํ•˜๋Š” โ€‹โ€‹์‹œ์Šคํ…œ ๊ตฌํ˜„๊ณผ ํ•จ๊ป˜ ์ƒˆ๋กœ์šด GtkLayoutManager ๊ฐ์ฒด๊ฐ€ ๋„์ž…๋˜์—ˆ์Šต๋‹ˆ๋‹ค. GtkLayoutManager๋Š” GtkBox ๋ฐ GtkGrid์™€ ๊ฐ™์€ GTK ์ปจํ…Œ์ด๋„ˆ์˜ ํ•˜์œ„ ์†์„ฑ์„ ๋Œ€์ฒดํ•ฉ๋‹ˆ๋‹ค.
  • ์ด๋ฒคํŠธ ์ฒ˜๋ฆฌ๊ฐ€ ๋‹จ์ˆœํ™”๋˜์—ˆ์œผ๋ฉฐ ์ด์ œ ์ž…๋ ฅ์—๋งŒ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ๋‚˜๋จธ์ง€ ์ด๋ฒคํŠธ๋Š” ๋ณ„๋„์˜ ์‹ ํ˜ธ๋กœ ๋Œ€์ฒด๋ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์ถœ๋ ฅ ์ด๋ฒคํŠธ ๋Œ€์‹  "GdkSurface::render" ์‹ ํ˜ธ๊ฐ€ ์ œ์•ˆ๋˜๊ณ  ๊ตฌ์„ฑ ์ด๋ฒคํŠธ ๋Œ€์‹  "GdkSurface::size-changed"๊ฐ€ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค.
  • ๋ ˆ์ด์•„์›ƒ ๋ ˆ์ด์–ด๋ฅผ ์ •๋ ฌํ•  ํ•„์š” ์—†์ด ์–ด๋–ค ํฌ๊ธฐ๋กœ๋“  ์–ด๋””์—์„œ๋‚˜ ๊ทธ๋ฆด ์ˆ˜ ์žˆ๋Š” ๊ฐ์ฒด๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์ƒˆ๋กœ์šด ์ถ”์ƒํ™” ๋ ˆ์ด์–ด GdkPaintable์„ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • GTK ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ์ถœ๋ ฅ์ด ์›น ๋ธŒ๋ผ์šฐ์ € ์ฐฝ์—์„œ ๋ Œ๋”๋ง๋  ์ˆ˜ ์žˆ๋„๋ก Broadway ๋ฐฑ์—”๋“œ๊ฐ€ ๋‹ค์‹œ ์ž‘์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • ์ œ์•ˆ๋œ ๋ณ„๋„์˜ GdkDrag ๋ฐ GdkDrop ๊ฐ์ฒด๋ฅผ ํฌํ•จํ•˜์—ฌ ๋“œ๋ž˜๊ทธ ์•ค ๋“œ๋กญ ์ž‘์—… ์ˆ˜ํ–‰๊ณผ ๊ด€๋ จ๋œ API๊ฐ€ ์žฌ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์ด์ „ ํ…Œ์ŠคํŠธ ๋ฆด๋ฆฌ์Šค์™€ ๋น„๊ตํ•˜์—ฌ ๊ฐœ์„ ๋œ ์‚ฌํ•ญ:

  • ์žฅ์• ๊ฐ€ ์žˆ๋Š” ์‚ฌ์šฉ์ž๋ฅผ ์œ„ํ•œ Accessibility API์˜ ์ด์ „ ๊ตฌํ˜„์ด ์ œ๊ฑฐ๋˜๊ณ  ์‚ฌ์–‘์— ๋”ฐ๋ฅธ ์ƒˆ ๋ฒ„์ „์œผ๋กœ ๋Œ€์ฒด๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ARIA ๊ทธ๋ฆฌ๊ณ  GtkAccessible ์œ„์ ฏ.
  • ํŽธ์ง‘ ๊ฐ€๋Šฅํ•œ ๋ผ๋ฒจ์— ๋Œ€ํ•œ ์ง€์›์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค(GtkEditableLabel).
  • ๋ถ๋งˆํฌ(GtkBookmarkList), ๋ฌธ์ž์—ด(GtkStringList) ๋ฐ ์„ ํƒ ๋ธ”๋ก(GtkBitset)์„ ํ‘œ์‹œํ•˜๊ธฐ ์œ„ํ•œ ์ƒˆ๋กœ์šด ๋ชฉ๋ก ๋ชจ๋ธ์ด ์ œ์•ˆ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • GtkTreeView ์œ„์ ฏ์—๋Š” ์…€์„ ํŽธ์ง‘ํ•˜๋Š” ๊ธฐ๋Šฅ์ด ์žˆ์Šต๋‹ˆ๋‹ค.
  • GtkGridView ๋ฐ GtkListView์—์„œ ์Šคํฌ๋กค ๊ตฌํ˜„์ด ๊ฐœ์„ ๋˜์—ˆ์œผ๋ฉฐ, ์ž๋™ ์Šคํฌ๋กค ๋ฐ ์ž๋™ ํ™•์žฅ์— ๋Œ€ํ•œ ์ง€์›์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • GtkWidget์€ ๋‹ค์–‘ํ•œ ์ž‘์—…์˜ ์ฒ˜๋ฆฌ ์†๋„๋ฅผ ํฌ๊ฒŒ ํ–ฅ์ƒ์‹œํ‚ต๋‹ˆ๋‹ค.
  • GtkFilterListModel ๋ฐ GtkSortListModel์— ์ฆ๋ถ„ ์Šคํฌ๋กค ๋ฐ ํ•„ํ„ฐ๋ง์— ๋Œ€ํ•œ ์ง€์›์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • Inspector์—๋Š” ๋ชฉ๋ก ๋ชจ๋ธ ๊ฒ€์‚ฌ์— ๋Œ€ํ•œ ์ง€์›๊ณผ ๊ฐ์ฒด ๊ฐ„ ์ง์ ‘ ํƒ์ƒ‰ ๊ธฐ๋Šฅ์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • GDK์—์„œ๋Š” ์Šคํฌ๋กค ๊ธฐ๋ก์ด ์ €์žฅ๋˜๊ณ  GdkDevice API๊ฐ€ ์ •๋ฆฌ๋˜์—ˆ์œผ๋ฉฐ ์žฅ์น˜๋ฅผ ๋งˆ์Šคํ„ฐ์™€ ์Šฌ๋ ˆ์ด๋ธŒ๋กœ ๋ถ„๋ฆฌํ•˜๋Š” ๊ฒƒ์ด ์ค‘์ง€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • macOS์šฉ ์ƒˆ๋กœ์šด GDK ๋ฐฑ์—”๋“œ๋ฅผ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ๋‹ค์Œ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋Š” ์ƒˆ๋กœ์šด GDK ๋ Œ๋”๋ง ๋ฐฑ์—”๋“œ ๊ฐ๋„, ์ค‘๊ฐ„์ธต OpenGL ES ํ˜ธ์ถœ์„ OpenGL, Direct3D 9/11, Desktop GL ๋ฐ Vulkan์œผ๋กœ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : opennet.ru

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€