Пример #1
0
void mouse_clickfunc(int button, int state, int x, int y)
{
  if (is_dialog()) { dialog_click(button,state,x,y); return; }

  // test global ui elements
  if (button==GLUT_LEFT_BUTTON) {
    if (state==GLUT_DOWN) {
      if (main_ui[MAIN_PAGE1]) { console_post("Synthesizers"); cpage=1; return; }
      if (main_ui[MAIN_PAGE2]) { console_post("Patches");      cpage=2; return; }      
      if (main_ui[MAIN_PAGE3]) { console_post("Patterns");     cpage=3; return; }
      if (main_ui[MAIN_PAGE4]) { console_post("Sequencer");    cpage=4; return; }
      if (main_ui[MAIN_ABOUT]) { dialog_open(&about_draw, &about_hover, &about_click); return; }
      if (main_ui[MAIN_VU]) { audio_peak=0.0f; console_post("VU meter peak reset"); return; }
    }
  }

  switch (cpage)
  {
    case MAIN_PAGE1: synth_mouse_click(button, state, x, y); break;
    case MAIN_PAGE2: patch_mouse_click(button, state, x, y); break;
    case MAIN_PAGE3: pattern_mouse_click(button, state, x, y); break;
    case MAIN_PAGE4: sequencer_mouse_click(button, state, x, y); break;
    default: break;
  }
}
Пример #2
0
int handle_xdlg_event (Display *dpy, XEvent *event) {
	if (!_dlg_mwin) return 0;
	assert(event->xany.window);
	if (event->xany.window != _dlg_mwin && event->xany.window != _dlg_swin) {
		switch (event->type) {
			case ButtonRelease:
			case KeyRelease:
			close_x_dialog (dpy);
				break;
			default:
				break;
		}
		return 0;
	}

	switch (event->type) {
		case ConfigureNotify:
			//printf("DLG ConfigureNotify %dx%d\n", event->xconfigure.width, event->xconfigure.height);
			break;
		case LeaveNotify:
			{
				struct XJDialog *dlg = NULL;
				XFindContext (dpy, event->xany.window, _dlg_ctx, (XPointer*)&dlg);
				if (dlg
						&& dlg->menu_hover >= 0 && dlg->menu_hover < dlg->menu_count
						&& !dlg->menu_items[dlg->menu_hover].submenu)
				{
					dlg->menu_hover = -1;
					dialog_expose (dpy, event->xany.window);
				}
			}
			break;
		case Expose:
			if (event->xexpose.count == 0) {
				dialog_expose (dpy, event->xany.window);
			}
			break;
		case MotionNotify:
			dialog_motion (dpy, event->xany.window, event->xmotion.x_root, event->xmotion.y_root);
			if (event->xmotion.is_hint == NotifyHint) {
				XGetMotionEvents (dpy, event->xany.window, CurrentTime, CurrentTime, NULL);
			}
			break;
		case ButtonPress:
			break;
		case ButtonRelease:
			if (dialog_click(dpy, event->xany.window, event->xbutton.x_root, event->xbutton.y_root, event->xbutton.button)) {
				close_x_dialog (dpy);
			}
			break;
		case KeyRelease:
			close_x_dialog (dpy);
			break;
	}
	return 1;
}