Esempio n. 1
0
void menu_info_item_clicked(GtkWidget* item, GdkEventButton* event,
        menu_info_item_t* mii)
{
    g_debug("[menu_info] item clicked mod:%s%s button:%i",
            (event->state & GDK_CONTROL_MASK) ? "[ctrl]" : "",
            (event->state & GDK_MOD1_MASK) ? "[alt]" : "",
            event->button);

    switch(event->button)
    {
        case 1:
            /* on alt + left-click, toggle mute device/stream */
            if(event->state & GDK_MOD1_MASK)
                pulseaudio_toggle_mute(mii);

            /* on left-click, set device as default */
            else
                pulseaudio_set_default(mii);
            break;
        /* on middle-click, toggle mute device/stream */
        case 2:
            pulseaudio_toggle_mute(mii);
            break;
        /* on right-click, show context menu (if any) */
        case 3:
            if(mii->context)
                gtk_menu_popup(GTK_MENU(mii->context), NULL, NULL, NULL, NULL,
                        (event != NULL) ? event->button : 0,
                        gdk_event_get_time((GdkEvent*)event));
            break;
    }
}
Esempio n. 2
0
void systray_click_cb(GtkStatusIcon* icon, GdkEventButton* ev, gpointer userdata)
{
    menu_infos_t* mis = userdata;
    menu_info_t* mi = &mis->menu_info[(ev->state & GDK_CONTROL_MASK) ? MENU_SOURCE : MENU_SINK];
    menu_info_item_t* mii = menu_info_item_get_by_name(mi, mi->default_name);

    g_debug("[systray] click mod:%s%s button:%i",
            (ev->state & GDK_CONTROL_MASK) ? "[ctrl]" : "",
            (ev->state & GDK_MOD1_MASK) ? "[alt]" : "",
            ev->button);

    switch(ev->button)
    {
        case 1:
            /* on alt + left-click, toggle mute default sink */
            if(ev->state & GDK_MOD1_MASK)
            {
                if(mii)
                    pulseaudio_toggle_mute(mii);
            }
            /* on ctrl + left-click, start pavucontrol */
            else if(ev->state & GDK_CONTROL_MASK)
            {
                g_spawn_command_line_async(COMMAND_PAVUCONTROL, NULL);
            }
            /* on left-click, show menu */
            else
            {
                gtk_menu_popup(GTK_MENU(mis->menu), NULL, NULL,
#if HAVE_STATUSICON
                        gtk_status_icon_position_menu,
#else
                        NULL,
#endif
                        icon, ev->button, ev->time);
            }
            break;
        case 2:
            /* on middle-click, toggle mute default sink */
            if(mii)
            {
                pulseaudio_toggle_mute(mii);
            }
            break;
        case 3:
            /* on right-click, show menu */
            gtk_menu_popup(GTK_MENU(mis->menu), NULL, NULL,
#if HAVE_STATUSICON
                    gtk_status_icon_position_menu,
#else
                    NULL,
#endif
                    icon, ev->button, ev->time);
            break;
    }
}
Esempio n. 3
0
void menu_info_item_clicked(GtkWidget* item, GdkEventButton* event,
        menu_info_item_t* mii)
{
#ifdef DEBUG
    g_message("[systray] button-press-event mod:%s button:%i",
            (event->state & GDK_CONTROL_MASK) ? "ctrl" : "", event->button);
#endif

    switch(event->button)
    {
        /* on left-click, set device as default */
        case 1:
            pulseaudio_set_default(mii);
            break;
        /* on middle-click, toggle mute device/stream */
        case 2:
            pulseaudio_toggle_mute(mii);
            break;
        /* on right-click, show context menu (if any) */
        case 3:
            if(mii->context)
                gtk_menu_popup(GTK_MENU(mii->context), NULL, NULL, NULL, NULL,
                        (event != NULL) ? event->button : 0,
                        gdk_event_get_time((GdkEvent*)event));
            break;
    }
}
Esempio n. 4
0
void systray_click_cb(GtkStatusIcon* icon, GdkEventButton* ev, gpointer userdata)
{
    menu_infos_t* mis = userdata;

    switch(ev->button)
    {
        case 1:
        case 3:
            gtk_menu_popup(GTK_MENU(mis->menu), NULL, NULL, gtk_status_icon_position_menu, icon, ev->button, ev->time);
            break;
        case 2:
            {
                menu_info_t* mi = &mis->menu_info[(ev->state & GDK_CONTROL_MASK) ? MENU_SOURCE : MENU_SINK];
                menu_info_item_t* mii = menu_info_item_get_by_name(mi, mi->default_name);
                if(mii)
                    pulseaudio_toggle_mute(mii);
            }
            break;
    }
}