Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

GTK4 issues found by SWT test suite

Abierto
#3,743 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Los mantenedores suelen responder en 1 día

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
5/5
Tiempo estimado
Más de una semana
Aptitud para principiantes
28/100
Tipo de issue
Error
Claridad
Bastante claro
Estado de actividad
Activo
Stack tecnológico
java
Área
desktop

Línea de trabajo

Start with Display._getDeviceZoom and the GTK4 branch of getPrimaryMonitor for the zoom case; the other items require locating the SWT event code for each affected widget. Reproduce under GTK4 using the internal SWT test harness and compare event ordering and values with GTK3, Win32, or Cocoa. Because this is an umbrella list spanning input, focus, widgets, tables and trees, and display scaling, a newcomer should first select one reproducible item rather than attempt all reported defects.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

A while ago @akurtakov asked me to test GTK4, which I finally found the time for.
Here are the GTK4 bugs our internal SWT test harness found.
Each one is a difference from SWT on GTK3, which behaves like Win32 and Cocoa here.
Tested on master (3376e1982a), GTK 4.22.4 against GTK 3.24.52, X11 backend (GDK_BACKEND=x11).
If a description is not sufficient, let me know.

Input and events
  • Display.post synthesizes nothing and returns false for every event type, so SWT tests cannot post mouse or key input on GTK4.
  • Clicks on Button, List, Table and Tree send no MouseDown/MouseUp; List sends a MouseUp without the MouseDown before it. Listeners that react to mouse down/up (drag start, context actions) never run.
  • Text and Combo send Modify without a preceding Verify when typing, so VerifyListeners that filter or reject input (numeric fields, length limits) have no effect.
  • A double click sends MouseDoubleClick before the second MouseDown; GTK3, Win32 and Cocoa send MouseDown (with count 2) first and then MouseDoubleClick, so code that handles the press in MouseDown sees the double click first.
  • Shifted letters and symbols report the shifted character as keyCode (72 'H' for Shift+h, 33 '!' for Shift+1), while GTK3, Win32 and Cocoa report the unshifted key (104 'h', 49 '1'). Key bindings that check keyCode together with SWT.SHIFT stop matching.
  • FocusIn is also sent to the ancestor composites of the control that receives focus, so focus-tracking code (for example part activation) sees extra focus events. Seen for Text, List, Table, Tree and Spinner, by click, Tab traversal and forceFocus().
  • Check Button toggled with Space: Selection arrives between KeyDown and KeyUp, instead of after the key is released as on GTK3.
  • Spinner sends no Verify when its value changes through the arrow buttons, the Up/Down keys or the mouse wheel; GTK3 sends one before the Modify.
  • Spinner sends Modify before Selection (arrow buttons and Up/Down keys), the reverse of GTK3.
  • Slider: a thumb drag ends without the final Selection with detail = SWT.NONE, the mouse wheel fires no MouseWheel event and moves by a different step than on GTK3, and the slider takes keyboard focus, which it does not on GTK3.
Table and Tree
  • Dragging a column header fires no TableColumn/TreeColumn Resize or Move, and dragging a movable column does not reorder the columns, so user column resizing and reordering are invisible to the application.
  • With a visible header, item geometry and hit testing use two different origins: TableItem.getBounds(int) includes the header height (item 0 at y = 28) while TableItem.getBounds(), getTextBounds and all TreeItem bounds start below it (y = 0), and getClientArea() (y = 28), getItem(Point) and toDisplay count from the widget top, so getItem at a point inside item.getBounds() returns null or the previous row. GTK3 uses one origin for all of them. getItemHeight() also reports 25 while the rows are 23 px apart.
  • Control.setOrientation(SWT.RIGHT_TO_LEFT) on a Table or Tree that has columns throws UnsatisfiedLinkError, because it calls GTK3.gtk_container_forall, which does not exist in GTK4.
Graphics
  • GC.drawFocus paints nothing (0 pixels for drawFocus(10, 10, 40, 12) on an Image; GTK3 paints a ring), because it renders with the style context of the shell, which has no focus outline on GTK4.
Display
  • The device zoom ignores GDK_SCALE and stays at 100 with GDK_SCALE=2, so the UI renders at 100% (Display._getDeviceZoom; the GTK4 branch of getPrimaryMonitor always takes monitor 0).
Lenguaje dominante
Java
Estrellas
202
Forks
206
Merge medio
21 h 55 min
PR fusionados (30 d)
110

Preparar el entorno

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de eclipse-platform/eclipse.platform.swt

Todos los issues de eclipse-platform/eclipse.platform.swt

Issues similares

Más issues de Java

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.