Skip to content

Setting a layer-shell window as parent of a dialog breaks positioning of combo box lists #177

Open
@Tamaranch

Description

@Tamaranch

I've just noticed this with the preferences dialogs of some xfce4-panel plugins that contain combo boxes, and which for a long time on X11 have set the panel as dialog parent.

It's reproducible on Wayland, independent of the compositor as far as I can see, with this piece of code:

gint main (gint argc, gchar **argv)
{
  gtk_init (&argc, &argv);

  GtkWidget *window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
  gtk_layer_init_for_window (GTK_WINDOW (window));
  gtk_layer_set_anchor (GTK_WINDOW (window), GTK_LAYER_SHELL_EDGE_BOTTOM, TRUE);
  gtk_widget_set_size_request (window, 200, 40);
  gtk_widget_show (window);

  GtkWidget *dialog = gtk_dialog_new_with_buttons ("dialog", GTK_WINDOW (window), GTK_DIALOG_DESTROY_WITH_PARENT, NULL, NULL);
  GtkWidget *area = gtk_dialog_get_content_area (GTK_DIALOG (dialog));
  GtkWidget *combo = gtk_combo_box_text_new ();
  gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (combo), "text1");
  gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (combo), "text2");
  gtk_combo_box_text_append_text (GTK_COMBO_BOX_TEXT (combo), "text3");
  gtk_combo_box_set_active (GTK_COMBO_BOX (combo), 0);
  gtk_container_add (GTK_CONTAINER (area), combo);
  gtk_widget_set_size_request (dialog, 200, -1);
  gtk_widget_show_all (dialog);

  GMainLoop *loop = g_main_loop_new (NULL, FALSE);
  g_signal_connect_swapped (dialog, "destroy", G_CALLBACK (g_main_loop_quit), loop);
  g_main_loop_run (loop);
  g_main_loop_unref (loop);
}

When the combo box is clicked, the list of entries is displayed in the layer-shell window instead of in the combo box.

I don't think there's much point, or sense, in setting the panel as parent of these dialogs (perhaps it was done at the time to avoid a GTK warning). So I could certainly modify the code of these plugins, but I'd like to know if it wouldn't be a bug in gtk-layer-shell before doing that.

gtk-layer-shell 0.8.2
gtk 3.24.41

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions