static gboolean my_button_pressed(GtkWidget *widget, GdkEventButton *event, plugin_instance *p) { menu_priv *m = (menu_priv *) p; ENTER; /* propagate Control-Button3 to the panel */ if (event->type == GDK_BUTTON_PRESS && event->button == 3 && event->state & GDK_CONTROL_MASK) { RET(FALSE); } if ((event->type == GDK_BUTTON_PRESS) && (event->x >=0 && event->x < widget->allocation.width) && (event->y >=0 && event->y < widget->allocation.height)) { if (!m->menu) menu_create(p); if (p->panel->autohide) ah_stop(p->panel); gtk_menu_popup(GTK_MENU(m->menu), NULL, NULL, (GtkMenuPositionFunc)menu_pos, widget, event->button, event->time); } RET(TRUE); }
static gboolean panel_mapped(GtkWidget *widget, GdkEvent *event, panel *p) { ENTER; if (p->autohide) { ah_stop(p); ah_start(p); } RET(FALSE); }
static void panel_stop(panel *p) { ENTER; if (p->autohide) ah_stop(p); g_list_foreach(p->plugins, delete_plugin, NULL); g_list_free(p->plugins); p->plugins = NULL; XSelectInput(GDK_DISPLAY(), GDK_ROOT_WINDOW(), NoEventMask); gdk_window_remove_filter(gdk_get_default_root_window(), (GdkFilterFunc)panel_event_filter, p); gtk_widget_destroy(p->topgwin); gtk_widget_destroy(p->menu); g_object_unref(fbev); //g_free(p->workarea); gdk_flush(); XFlush(GDK_DISPLAY()); XSync(GDK_DISPLAY(), True); RET(); }