[Pkg-wmaker-commits] [wmshutdown] 143/173: wmshutdown.c: Restore original g_signal_connect() code for dialog buttons; new gtk_dialog_run() code was buggy.

Doug Torrance dtorrance-guest at moszumanska.debian.org
Tue Aug 25 02:46:49 UTC 2015


This is an automated email from the git hooks/post-receive script.

dtorrance-guest pushed a commit to branch master
in repository wmshutdown.

commit 6bc466c83e14ea630b370ec57abab242d6f811f7
Author: Doug Torrance <dtorrance at monmouthcollege.edu>
Date:   Mon Oct 27 19:18:54 2014 -0500

    wmshutdown.c: Restore original g_signal_connect() code for dialog buttons; new
    gtk_dialog_run() code was buggy.
    
    In particular, if a dbus error occurred, further clicks would do nothing.
---
 wmshutdown.c | 47 +++++++++++++++++++++++++++++------------------
 1 file changed, 29 insertions(+), 18 deletions(-)

diff --git a/wmshutdown.c b/wmshutdown.c
index 8e45e0a..0d4cd43 100644
--- a/wmshutdown.c
+++ b/wmshutdown.c
@@ -99,11 +99,13 @@ void fecha(void) {
 	dialog = NULL;
 }
 
-void handle_click(GtkWidget *widget, char *method) {
+void handle_click(GtkWidget *widget, gpointer data) {
 	GDBusConnection *connection;
 	GDBusMessage *message, *reply;
 	GError *error = NULL;
 
+	gchar *method = (gchar *)data;
+
 	connection = g_bus_get_sync(G_BUS_TYPE_SYSTEM, NULL, &error);
 	message = g_dbus_message_new_method_call(
 			NULL,
@@ -141,7 +143,9 @@ void handle_click(GtkWidget *widget, char *method) {
 
 void button_press(GtkWidget *widget, GdkEvent *event) {
 	GtkWidget *label;
-	gint result;
+	GtkWidget *halt_button;
+	GtkWidget *reboot_button;
+	GtkWidget *cancel_button;
 
 	GdkEventButton  *bevent = (GdkEventButton *)event;
 	switch (bevent->button) {
@@ -153,28 +157,35 @@ void button_press(GtkWidget *widget, GdkEvent *event) {
 		gtk_container_add(GTK_CONTAINER(gtk_dialog_get_content_area(
 							GTK_DIALOG(dialog))),
 				  label);
-		gtk_widget_show(label);
+
 		gtk_dialog_add_buttons(GTK_DIALOG(dialog),
 				       "Halt", GTK_RESPONSE_HALT,
 				       "Reboot", GTK_RESPONSE_REBOOT,
 				       "Cancel", GTK_RESPONSE_CANCEL, NULL);
+		halt_button = gtk_dialog_get_widget_for_response(
+			GTK_DIALOG(dialog),
+			GTK_RESPONSE_HALT);
+		reboot_button = gtk_dialog_get_widget_for_response(
+			GTK_DIALOG(dialog),
+			GTK_RESPONSE_REBOOT);
+		cancel_button = gtk_dialog_get_widget_for_response(
+			GTK_DIALOG(dialog),
+			GTK_RESPONSE_CANCEL);
 
 		g_signal_connect(dialog, "destroy", G_CALLBACK(fecha), NULL);
-
-		result = gtk_dialog_run(GTK_DIALOG (dialog));
-		switch (result) {
-		case GTK_RESPONSE_HALT:
-			handle_click(dialog, HALT_METHOD);
-			break;
-		case GTK_RESPONSE_REBOOT:
-			handle_click(dialog, REBOOT_METHOD);
-			break;
-		case GTK_RESPONSE_CANCEL:
-			fecha();
-			break;
-		default:
-			break;
-		}
+		g_signal_connect(cancel_button,
+				 "clicked",
+				 G_CALLBACK(fecha),
+				 (gpointer) dialog);
+		g_signal_connect(halt_button,
+				 "clicked",
+				 G_CALLBACK(handle_click),
+				 HALT_METHOD);
+		g_signal_connect(reboot_button,
+				 "clicked",
+				 G_CALLBACK(handle_click),
+				 REBOOT_METHOD);
+		gtk_widget_show_all(dialog);
 	default:
 		break;
 	}

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-wmaker/wmshutdown.git



More information about the Pkg-wmaker-commits mailing list