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