From 06271eea2a12970fbe73b3d3f2c6ae5d79339379 Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Mon, 29 Jun 2020 15:15:48 -0400 Subject: [PATCH] session-selector: show cursor explicitly Normally the window manager would show the cursor at start up, but the session selector runs when no window manager is present. This commit makes the session selector explicitly set a cursor, so users can interact with the dialog using the mouse. --- tools/gnome-session-selector.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/tools/gnome-session-selector.c b/tools/gnome-session-selector.c index 71892c43..9225639e 100644 --- a/tools/gnome-session-selector.c +++ b/tools/gnome-session-selector.c @@ -594,60 +594,61 @@ auto_save_next_session_if_needed (void) static int compare_sessions (GtkTreeModel *model, GtkTreeIter *a, GtkTreeIter *b, gpointer data) { char *name_a, *name_b; int result; gtk_tree_model_get (model, a, 0, &name_a, -1); gtk_tree_model_get (model, b, 0, &name_b, -1); result = g_utf8_collate (name_a, name_b); g_free (name_a); g_free (name_b); return result; } static void on_map (GtkWidget *widget, gpointer data) { gdk_window_focus (gtk_widget_get_window (widget), GDK_CURRENT_TIME); } int main (int argc, char *argv[]) { + GdkCursor *cursor; GtkWidget *window; GtkWidget *widget; GtkCellRenderer *cell; GtkTreeViewColumn *column; GtkTreeSelection *selection; GError *error; if (getenv ("SESSION_MANAGER") != NULL) return 1; gtk_init (&argc, &argv); if (argc > 1) { g_print ("create and select session\n"); if (!create_and_select_session (argv[1])) return 1; else return 0; } builder = gtk_builder_new (); gtk_builder_set_translation_domain (builder, GETTEXT_PACKAGE); error = NULL; if (!gtk_builder_add_from_file (builder, GTKBUILDER_DIR "/" "session-selector.ui", &error)) { g_warning ("Could not load file 'session-selector.ui': %s", error->message); exit (1); } window = (GtkWidget *) gtk_builder_get_object (builder, "main-window"); @@ -663,36 +664,40 @@ main (int argc, char *argv[]) session_list = (GtkWidget *) gtk_builder_get_object (builder, "session-list"); selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (session_list)); gtk_tree_selection_set_mode (selection, GTK_SELECTION_SINGLE); populate_session_list (session_list); cell = gtk_cell_renderer_text_new (); g_signal_connect (cell, "edited", G_CALLBACK (on_row_edited), NULL); column = gtk_tree_view_column_new_with_attributes ("", cell, "text", 0, NULL); gtk_tree_view_append_column (GTK_TREE_VIEW (session_list), GTK_TREE_VIEW_COLUMN (column)); g_signal_connect (session_list, "row-activated", G_CALLBACK (on_row_activated), NULL); g_signal_connect (selection, "changed", G_CALLBACK (on_selection_changed), NULL); widget = (GtkWidget *) gtk_builder_get_object (builder, "new-session"); g_signal_connect (widget, "clicked", G_CALLBACK (on_new_session_clicked), NULL); widget = (GtkWidget *) gtk_builder_get_object (builder, "remove-session"); g_signal_connect (widget, "clicked", G_CALLBACK (on_remove_session_clicked), NULL); widget = (GtkWidget *) gtk_builder_get_object (builder, "rename-session"); g_signal_connect (widget, "clicked", G_CALLBACK (on_rename_session_clicked), NULL); widget = (GtkWidget *) gtk_builder_get_object (builder, "continue-button"); g_signal_connect (widget, "clicked", G_CALLBACK (on_continue_clicked), NULL); g_signal_connect (window, "map", G_CALLBACK (on_map), NULL); gtk_widget_show (window); + cursor = gdk_cursor_new_from_name (gtk_widget_get_display (window), + "default"); + gdk_window_set_cursor (gtk_widget_get_window (window), cursor); + gtk_main (); auto_save_next_session_if_needed (); return 0; } -- 2.26.0