コード例 #1
0
static void
update_button_state (ShowDesktopData *sdd)
{
        if (sdd->showing_desktop) {
                g_signal_handlers_block_by_func (G_OBJECT (sdd->button),
                                                 G_CALLBACK (button_toggled_callback),
                                                 sdd);
                gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (sdd->button),
                                              TRUE);
                g_signal_handlers_unblock_by_func (G_OBJECT (sdd->button),
                                                   G_CALLBACK (button_toggled_callback),
                                                   sdd);
        } else {
                g_signal_handlers_block_by_func (G_OBJECT (sdd->button),
                                                 G_CALLBACK (button_toggled_callback),
                                                 sdd);
                gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (sdd->button),
                                              FALSE);
                g_signal_handlers_unblock_by_func (G_OBJECT (sdd->button),
                                                   G_CALLBACK (button_toggled_callback),
                                                   sdd);
        }

        update_button_display (sdd);
}
コード例 #2
0
ファイル: showdesktop.c プロジェクト: oz123/mate-panel
static void button_toggled_callback(GtkWidget* button, ShowDesktopData* sdd)
{
	if (!gdk_x11_screen_supports_net_wm_hint(gtk_widget_get_screen(button), gdk_atom_intern("_NET_SHOWING_DESKTOP", FALSE)))
	{
		static GtkWidget* dialog = NULL;

		if (dialog && gtk_widget_get_screen(dialog) != gtk_widget_get_screen(button))
			gtk_widget_destroy (dialog);

		if (dialog)
		{
			gtk_window_present(GTK_WINDOW(dialog));
			return;
		}

		dialog = gtk_message_dialog_new(NULL, GTK_DIALOG_MODAL, GTK_MESSAGE_ERROR, GTK_BUTTONS_CLOSE, _("Your window manager does not support the show desktop button, or you are not running a window manager."));

		g_object_add_weak_pointer(G_OBJECT(dialog), (gpointer) &dialog);

		g_signal_connect(G_OBJECT(dialog), "response", G_CALLBACK(gtk_widget_destroy), NULL);

		gtk_window_set_resizable(GTK_WINDOW(dialog), FALSE);
		gtk_window_set_screen(GTK_WINDOW(dialog), gtk_widget_get_screen(button));
		gtk_widget_show(dialog);

		return;
	}

	if (sdd->matewnck_screen != NULL)
		matewnck_screen_toggle_showing_desktop(sdd->matewnck_screen, gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(button)));

	update_button_display (sdd);
}
コード例 #3
0
static void
user_photo_changed_callback (GdkPixbuf         *pixbuf,
                             void              *data)
{
        ButtonData *button_data;
        button_data = data;

        g_debug ("got user photo changed\n");

        if (pixbuf)
                g_object_ref(pixbuf);
        if (button_data->user_photo)
                g_object_unref(button_data->user_photo);
        button_data->user_photo = pixbuf;

        update_button_display (button_data);
}
コード例 #4
0
static void
button_toggled_callback (GtkWidget       *button,
                         ButtonData      *button_data)
{
        if (button_data->suppress_popout_set)
        	return;
        if (button_data->bb_proxy) {
                if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(button))) {
                        hippo_dbus_proxy_VOID__UINT32 (button_data->bb_proxy, "Popout",
                                                       gtk_get_current_event_time());
                } else {
                        hippo_dbus_proxy_VOID__VOID (button_data->bb_proxy, "Unpopout");
                }
        }

        update_button_display (button_data);
}
コード例 #5
0
static void
update_button_state (ButtonData *button_data)
{
        gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(button_data->button), button_data->showing_bigboard);
        update_button_display (button_data);
}