Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
View | Details | Raw Unified | Return to bug 100543 | Differences between
and this patch

Collapse All | Expand All

(-)gdm-2.6.0.9/gui/gdmflexiserver.c (-113 / +1 lines)
Lines 298-416 Link Here
298
static void
298
static void
299
run_logged_in_dialogue (char **vec)
299
run_logged_in_dialogue (char **vec)
300
{
300
{
301
	GtkWidget *dialog;
301
	return;
302
	GtkWidget *vbox;
303
	GtkWidget *w;
304
	GtkWidget *sw;
305
	GtkTreeModel *model;
306
	GtkWidget *treeview;
307
	GtkTreeIter iter;
308
	GtkTreeSelection *selection;
309
310
	dialog = gtk_dialog_new_with_buttons (_("Open Displays"),
311
					      NULL /* parent */,
312
					      0 /* flags */,
313
					      _("_Open New Display"),
314
					      RESPONSE_OPEN_NEW_DISPLAY,
315
					      _("Change to _Existing Display"),
316
					      RESPONSE_OPEN_EXISTING_DISPLAY,
317
					      GTK_STOCK_CANCEL,
318
					      GTK_RESPONSE_CANCEL,
319
					      NULL);
320
	gtk_dialog_set_has_separator (GTK_DIALOG (dialog), FALSE);
321
	vbox = GTK_DIALOG (dialog)->vbox;
322
323
	w = gtk_label_new (_("There are some displays already open.  You can select "
324
			     "one from the list below or open a new one."));
325
	gtk_box_pack_start (GTK_BOX (vbox), w, FALSE, FALSE, 0);
326
327
	sw = gtk_scrolled_window_new (NULL, NULL);
328
	gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (sw),
329
					     GTK_SHADOW_ETCHED_IN);
330
	gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (sw),
331
					GTK_POLICY_NEVER,
332
					GTK_POLICY_AUTOMATIC);
333
	gtk_box_pack_start (GTK_BOX (vbox), sw, TRUE, TRUE, 0);
334
335
	/* create tree model */
336
	model = create_model (vec);
337
338
	/* create tree view */
339
	treeview = gtk_tree_view_new_with_model (model);
340
	gtk_tree_view_set_rules_hint (GTK_TREE_VIEW (treeview), TRUE);
341
342
	g_object_unref (model);
343
344
	gtk_container_add (GTK_CONTAINER (sw), treeview);
345
346
	/* add columns to the tree view */
347
	add_columns (GTK_TREE_VIEW (treeview));
348
349
	/* finish & show */
350
	gtk_window_set_default_size (GTK_WINDOW (dialog), 280, 250);
351
352
        g_signal_connect (G_OBJECT (treeview), "row_activated",
353
			  G_CALLBACK (row_activated),
354
			  dialog);
355
356
	selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (treeview));
357
358
        g_signal_connect (selection, "changed",
359
			  G_CALLBACK (selection_changed),
360
			  dialog);
361
362
	gtk_dialog_set_response_sensitive (GTK_DIALOG (dialog),
363
					   RESPONSE_OPEN_EXISTING_DISPLAY,
364
					   FALSE);
365
366
	gtk_widget_show_all (dialog);
367
368
run_again:
369
	switch (gtk_dialog_run (GTK_DIALOG (dialog))) {
370
	case RESPONSE_OPEN_NEW_DISPLAY:
371
		gtk_widget_destroy (dialog);
372
		/* just continue what you are doing */
373
		return;
374
375
	case RESPONSE_OPEN_EXISTING_DISPLAY:
376
		if (gtk_tree_selection_get_selected (selection, NULL, &iter)) {
377
			GValue value = {0};
378
			int vt;
379
			gtk_tree_model_get_value (model, &iter,
380
						  COLUMN_VT,
381
						  &value);
382
			vt = g_value_get_int (&value);
383
			g_value_unset (&value);
384
385
			/* we switched to a different screen as a result of this,
386
			 * lock the current screen */
387
			if ( ! no_lock && vt != get_cur_vt () && vt >= 0) {
388
				char *argv[3] = {"xscreensaver-command", "-lock", NULL};
389
				if (gnome_execute_async (g_get_home_dir (), 2, argv) < 0)
390
					g_warning (_("Can't lock screen"));
391
				argv[1] = "-throttle";
392
				if (gnome_execute_async (g_get_home_dir (), 2, argv) < 0)
393
					g_warning (_("Can't disable xscreensaver display hacks"));
394
			}
395
396
			change_vt (vt);
397
398
			/* FIXME: wait + disturb the pointer (need SUP?), perhaps
399
			 * part of the sup command to CHVT ?? */
400
401
			exit (0);
402
		} else {
403
			/* EEK */
404
			goto run_again;
405
		}
406
		break;
407
408
	default:
409
		gtk_widget_destroy (dialog);
410
		/* cancel, or close */
411
		exit (0);
412
		break;
413
	}
414
}
302
}
415
303
416
static void
304
static void

Return to bug 100543