diff src/audacious/ui_skinned_button.c @ 2964:7926d46872c8 trunk

right click on mainwin_about brings menu
author Tomasz Mon <desowin@gmail.com>
date Mon, 02 Jul 2007 10:28:05 +0200
parents 74a2471f8eb7
children f84d09bada0f
line wrap: on
line diff
--- a/src/audacious/ui_skinned_button.c	Mon Jul 02 10:11:37 2007 +0200
+++ b/src/audacious/ui_skinned_button.c	Mon Jul 02 10:28:05 2007 +0200
@@ -27,6 +27,16 @@
 #define UI_SKINNED_BUTTON_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), UI_TYPE_SKINNED_BUTTON, UiSkinnedButtonPrivate))
 typedef struct _UiSkinnedButtonPrivate UiSkinnedButtonPrivate;
 
+enum {
+	PRESSED,
+	RELEASED,
+	CLICKED,
+	RIGHT_CLICKED,
+	DOUBLED,
+	REDRAW,
+	LAST_SIGNAL
+};
+
 struct _UiSkinnedButtonPrivate {
         //Skinned part
         GtkWidget        *image;
@@ -124,6 +134,7 @@
         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;
 
@@ -142,6 +153,11 @@
                                   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,
@@ -375,6 +391,8 @@
                 button = UI_SKINNED_BUTTON(widget);
                 button->redraw = TRUE;
                 ui_skinned_button_released(button);
+        } else if (event->button == 3) {
+                g_signal_emit(widget, button_signals[RIGHT_CLICKED], 0);
         }
 
         return TRUE;