# HG changeset patch # User Tomasz Mon # Date 1190554595 -7200 # Node ID aba660a4a15de9b0c27c17893b93972193b5fc4d # Parent 24ae9b303a9dc46fb556d88104e9f8960de57839 Pop up playback menu if right clicked over playback-control widgets diff -r 24ae9b303a9d -r aba660a4a15d src/audacious/ui_main.c --- a/src/audacious/ui_main.c Sat Sep 22 22:50:57 2007 +0300 +++ b/src/audacious/ui_main.c Sun Sep 23 15:36:35 2007 +0200 @@ -371,17 +371,6 @@ 1, GDK_CURRENT_TIME); } -static void -mainwin_about_cb(void) -{ - gint x, y; - gdk_window_get_pointer(NULL, &x, &y, NULL); - ui_manager_popup_menu_show(GTK_MENU(mainwin_general_menu), - x + 6 * (1 + cfg.doublesize), - y + MAINWIN_SHADED_HEIGHT * (1 + cfg.doublesize), - 1, GDK_CURRENT_TIME); -} - void mainwin_minimize_cb(void) { @@ -860,6 +849,16 @@ } static gboolean +mainwin_widget_contained(GdkEventButton *event, int x, int y, int w, int h) +{ + if ((event->x > x && event->y > y) && + (event->x < x+w && event->y < y+h)) + return TRUE; + + return FALSE; +} + +static gboolean mainwin_mouse_button_press(GtkWidget * widget, GdkEventButton * event, gpointer callback_data) @@ -887,7 +886,21 @@ } if (event->button == 3) { - if ( (event->y > 70) && (event->x < 128) ) + /* Pop up playback menu if right clicked over playback-control widgets, + * otherwise popup general menu + */ + if (mainwin_widget_contained(event, bmp_active_skin->properties.mainwin_position_x, + bmp_active_skin->properties.mainwin_position_y, 248, 10) || + mainwin_widget_contained(event, bmp_active_skin->properties.mainwin_previous_x, + bmp_active_skin->properties.mainwin_previous_y, 23, 18) || + mainwin_widget_contained(event, bmp_active_skin->properties.mainwin_play_x, + bmp_active_skin->properties.mainwin_play_y, 23, 18) || + mainwin_widget_contained(event, bmp_active_skin->properties.mainwin_pause_x, + bmp_active_skin->properties.mainwin_pause_y, 23, 18) || + mainwin_widget_contained(event, bmp_active_skin->properties.mainwin_stop_x, + bmp_active_skin->properties.mainwin_stop_y, 23, 18) || + mainwin_widget_contained(event, bmp_active_skin->properties.mainwin_next_x, + bmp_active_skin->properties.mainwin_next_y, 23, 18)) { ui_manager_popup_menu_show(GTK_MENU(mainwin_playback_menu), @@ -2477,7 +2490,6 @@ mainwin_about = ui_skinned_button_new(); ui_skinned_small_button_setup(mainwin_about, SKINNED_WINDOW(mainwin)->fixed, 247, 83, 20, 25); g_signal_connect(mainwin_about, "clicked", show_about_window, NULL); - g_signal_connect(mainwin_about, "right-clicked", mainwin_about_cb, NULL ); mainwin_vis = ui_vis_new(SKINNED_WINDOW(mainwin)->fixed, 24, 43, 76); g_signal_connect(mainwin_vis, "button-press-event", G_CALLBACK(mainwin_vis_cb), NULL); diff -r 24ae9b303a9d -r aba660a4a15d src/audacious/ui_skinned_button.c --- a/src/audacious/ui_skinned_button.c Sat Sep 22 22:50:57 2007 +0300 +++ b/src/audacious/ui_skinned_button.c Sun Sep 23 15:36:35 2007 +0200 @@ -28,7 +28,6 @@ PRESSED, RELEASED, CLICKED, - RIGHT_CLICKED, DOUBLED, REDRAW, LAST_SIGNAL @@ -128,7 +127,6 @@ klass->pressed = button_pressed; klass->released = button_released; klass->clicked = NULL; - klass->right_clicked = NULL; klass->doubled = ui_skinned_button_toggle_doublesize; klass->redraw = ui_skinned_button_redraw; @@ -147,11 +145,6 @@ G_STRUCT_OFFSET (UiSkinnedButtonClass, clicked), NULL, NULL, gtk_marshal_VOID__VOID, G_TYPE_NONE, 0); - button_signals[RIGHT_CLICKED] = - g_signal_new ("right-clicked", G_OBJECT_CLASS_TYPE (object_class), G_SIGNAL_RUN_FIRST | G_SIGNAL_ACTION, - G_STRUCT_OFFSET (UiSkinnedButtonClass, right_clicked), NULL, NULL, - gtk_marshal_VOID__VOID, G_TYPE_NONE, 0); - button_signals[DOUBLED] = g_signal_new ("toggle-double-size", G_OBJECT_CLASS_TYPE (object_class), G_SIGNAL_RUN_FIRST | G_SIGNAL_ACTION, G_STRUCT_OFFSET (UiSkinnedButtonClass, doubled), NULL, NULL, @@ -455,6 +448,11 @@ if (event->button == 1) ui_skinned_button_pressed (button); + else if (event->button == 3) { + event->x = event->x + button->x; + event->y = event->y + button->y; + return FALSE; + } } return TRUE; @@ -465,10 +463,7 @@ if (event->button == 1) { button = UI_SKINNED_BUTTON(widget); ui_skinned_button_released(button); - } else if (event->button == 3) { - g_signal_emit(widget, button_signals[RIGHT_CLICKED], 0); } - return TRUE; } diff -r 24ae9b303a9d -r aba660a4a15d src/audacious/ui_skinned_horizontal_slider.c --- a/src/audacious/ui_skinned_horizontal_slider.c Sat Sep 22 22:50:57 2007 +0300 +++ b/src/audacious/ui_skinned_horizontal_slider.c Sun Sep 23 15:36:35 2007 +0200 @@ -295,21 +295,25 @@ if (event->type == GDK_BUTTON_PRESS) { if (event->button == 1) { - gint x; + gint x; - x = event->x - (priv->knob_width / (priv->double_size ? 1 : 2)); - hs->pressed = TRUE; + x = event->x - (priv->knob_width / (priv->double_size ? 1 : 2)); + hs->pressed = TRUE; - priv->position = x/(1+priv->double_size); - if (priv->position < priv->min) - priv->position = priv->min; - if (priv->position > priv->max) - priv->position = priv->max; - if (priv->frame_cb) - priv->frame = priv->frame_cb(priv->position); + priv->position = x/(1+priv->double_size); + if (priv->position < priv->min) + priv->position = priv->min; + if (priv->position > priv->max) + priv->position = priv->max; + if (priv->frame_cb) + priv->frame = priv->frame_cb(priv->position); - g_signal_emit_by_name(widget, "motion", priv->position); - gtk_widget_queue_draw(widget); + g_signal_emit_by_name(widget, "motion", priv->position); + gtk_widget_queue_draw(widget); + } else if (event->button == 3) { + event->x = event->x + hs->x; + event->y = event->y + hs->y; + return FALSE; } } return TRUE;