{
for( int i=0; i<DRAW_MODES; ++i )
add_item(new CriKeyDrawModeItem(draw_modes[i], i));
- update(gui->plugin->config.draw_mode);
+ update(gui->plugin->config.draw_mode, 0);
}
-void CriKeyDrawMode::update(int mode)
+void CriKeyDrawMode::update(int mode, int send)
{
if( this->mode == mode ) return;
this->mode = mode;
set_text(draw_modes[mode]);
gui->plugin->config.draw_mode = mode;
- gui->plugin->send_configure_change();
+ if( send ) gui->plugin->send_configure_change();
}
int CriKeyKeyModeItem::handle_event()
{
for( int i=0; i<KEY_MODES; ++i )
add_item(new CriKeyKeyModeItem(key_modes[i], i));
- update(gui->plugin->config.key_mode);
+ update(gui->plugin->config.key_mode, 0);
}
-void CriKeyKeyMode::update(int mode)
+void CriKeyKeyMode::update(int mode, int send)
{
if( this->mode == mode ) return;
this->mode = mode;
set_text(key_modes[mode]);
gui->draw_key(mode);
- gui->plugin->send_configure_change();
+ if( send ) gui->plugin->send_configure_change();
}
CriKeyColorButton::CriKeyColorButton(CriKeyWindow *gui, int x, int y)
gui->lock_window("CriKeyColorPicker::handle_new_color");
gui->update_color(this->color = color);
gui->flush();
+ gui->plugin->config.color = color;
+ gui->plugin->send_configure_change();
gui->unlock_window();
return 1;
}
{
if( key_mode->mode != KEY_POINT ) return 0;
+ MWindow *mwindow = plugin->server->mwindow;
+ CWindowGUI *cwindow_gui = mwindow->cwindow->gui;
+ CWindowCanvas *canvas = cwindow_gui->canvas;
+ int cx, cy; canvas->get_canvas()->get_relative_cursor_xy(cx, cy);
+ if( cx < mwindow->theme->ccanvas_x ) return 0;
+ if( cx >= mwindow->theme->ccanvas_x+mwindow->theme->ccanvas_w ) return 0;
+ if( cy < mwindow->theme->ccanvas_y ) return 0;
+ if( cy >= mwindow->theme->ccanvas_y+mwindow->theme->ccanvas_h ) return 0;
+
switch( event->type ) {
case ButtonPress:
if( dragging ) return 0;
default:
return 0;
}
- MWindow *mwindow = plugin->server->mwindow;
- CWindowGUI *cwindow_gui = mwindow->cwindow->gui;
- CWindowCanvas *canvas = cwindow_gui->canvas;
- float cursor_x = canvas->get_canvas()->get_relative_cursor_x();
- float cursor_y = canvas->get_canvas()->get_relative_cursor_y();
+
+ float cursor_x = cx, cursor_y = cy;
canvas->canvas_to_output(mwindow->edl, 0, cursor_x, cursor_y);
int64_t position = plugin->get_source_position();
float projector_x, projector_y, projector_z;