X-Git-Url: https://git.cinelerra-gg.org/git/?a=blobdiff_plain;ds=sidebyside;f=cinelerra-5.1%2Fplugins%2Ftracer%2Ftracerwindow.C;h=ccc04709814e9d08eb7a93e791f41ffe714ee13f;hb=HEAD;hp=cff7659854c4864c5ce0a6fe3b838724a19e2235;hpb=0df48ad2d876409c5beeae2e21933a728ea76c33;p=goodguy%2Fcinelerra.git diff --git a/cinelerra-5.1/plugins/tracer/tracerwindow.C b/cinelerra-5.1/plugins/tracer/tracerwindow.C index cff76598..653f8624 100644 --- a/cinelerra-5.1/plugins/tracer/tracerwindow.C +++ b/cinelerra-5.1/plugins/tracer/tracerwindow.C @@ -85,7 +85,7 @@ int TracerPointY::handle_event() } TracerWindow::TracerWindow(Tracer *plugin) - : PluginClientWindow(plugin, xS(400), yS(420), xS(400), yS(420), 0) + : PluginClientWindow(plugin, xS(460), yS(420), xS(460), yS(420), 0) { this->plugin = plugin; this->title_x = 0; this->point_x = 0; @@ -110,29 +110,31 @@ void TracerWindow::create_objects() { int x = xS(10), y = yS(10); int margin = plugin->get_theme()->widget_border; - int hot_point = plugin->config.selected; + int hot_point = plugin->selected; add_subwindow(title_x = new BC_Title(x, y, _("X:"))); int x1 = x + title_x->get_w() + margin; - TracerPoint *pt = hot_point >= 0 ? plugin->config.points[hot_point] : 0; + TracerPoints &points = plugin->config.points; + TracerPoint *pt = hot_point >= 0 && hot_pointx); point_x->create_objects(); - x1 += point_x->get_w() + margin; + x1 += point_x->get_w() + margin + xS(20); add_subwindow(new_point = new TracerNewPoint(this, plugin, x1, y)); - x1 += new_point->get_w() + margin; + x1 += new_point->get_w() + margin + xS(30); add_subwindow(point_up = new TracerPointUp(this, x1, y)); y += point_x->get_h() + margin; add_subwindow(title_y = new BC_Title(x, y, _("Y:"))); x1 = x + title_y->get_w() + margin; point_y = new TracerPointY(this, x1, y, !pt ? 0 : pt->y); point_y->create_objects(); - x1 += point_y->get_w() + margin; + x1 += point_y->get_w() + margin + xS(20); add_subwindow(del_point = new TracerDelPoint(this, plugin, x1, y)); - x1 += del_point->get_w() + margin; + x1 += del_point->get_w() + margin + xS(30); add_subwindow(point_dn = new TracerPointDn(this, x1, y)); y += point_y->get_h() + margin + yS(10); add_subwindow(drag = new TracerDrag(this, x, y)); - if( plugin->config.drag ) { + if( plugin->drag ) { if( !grab(plugin->server->mwindow->cwindow->gui) ) eprintf("drag enabled, but compositor already grabbed\n"); } @@ -156,7 +158,7 @@ void TracerWindow::create_objects() y += radius->get_h() + margin + yS(5); add_subwindow(point_list = new TracerPointList(this, plugin, x, y)); - point_list->update(plugin->config.selected); + point_list->update(plugin->selected); y += point_list->get_h() + yS(10); add_subwindow(new BC_Title(x, y, _( @@ -438,7 +440,7 @@ void TracerPointList::update_list(int k) { int sz = plugin->config.points.size(); if( k < 0 || k >= sz ) k = -1; - plugin->config.selected = k; + plugin->selected = k; update_selection(&cols[0], k); int xpos = get_xposition(), ypos = get_yposition(); BC_ListBox::update(&cols[0], &titles[0],&widths[0],PT_SZ, xpos,ypos,k); @@ -465,7 +467,7 @@ void TracerPointList::update(int k) void TracerWindow::update_gui() { TracerConfig &config = plugin->config; - drag->update(config.drag); + drag->update(plugin->drag); draw->update(config.draw); fill->update(config.fill); feather->update(config.feather); @@ -525,7 +527,7 @@ int TracerPointDn::handle_event() } TracerDrag::TracerDrag(TracerWindow *gui, int x, int y) - : BC_CheckBox(x, y, gui->plugin->config.drag, _("Drag")) + : BC_CheckBox(x, y, gui->plugin->drag, _("Drag")) { this->gui = gui; } @@ -541,10 +543,21 @@ int TracerDrag::handle_event() } else gui->ungrab(cwindow_gui); - gui->plugin->config.drag = value; + gui->plugin->drag = value; gui->send_configure_change(); return 1; } +int TracerWindow::handle_ungrab() +{ + CWindowGUI *cwindow_gui = plugin->server->mwindow->cwindow->gui; + int ret = ungrab(cwindow_gui); + if( ret ) { + drag->update(0); + plugin->drag = 0; + } + return ret; +} + TracerDraw::TracerDraw(TracerWindow *gui, int x, int y) : BC_CheckBox(x, y, gui->plugin->config.draw, _("Draw")) @@ -595,7 +608,7 @@ int TracerRadius::handle_event() } TracerNewPoint::TracerNewPoint(TracerWindow *gui, Tracer *plugin, int x, int y) - : BC_GenericButton(x, y, xS(80), _("New")) + : BC_GenericButton(x, y, xS(100), _("New")) { this->gui = gui; this->plugin = plugin; @@ -612,7 +625,7 @@ int TracerNewPoint::handle_event() } TracerDelPoint::TracerDelPoint(TracerWindow *gui, Tracer *plugin, int x, int y) - : BC_GenericButton(x, y, xS(80), C_("Del")) + : BC_GenericButton(x, y, xS(100), C_("Del")) { this->gui = gui; this->plugin = plugin; @@ -644,11 +657,11 @@ TracerReset::~TracerReset() int TracerReset::handle_event() { TracerConfig &config = plugin->config; - if( !config.drag ) { + if( !plugin->drag ) { MWindow *mwindow = plugin->server->mwindow; CWindowGUI *cwindow_gui = mwindow->cwindow->gui; if( gui->grab(cwindow_gui) ) - config.drag = 1; + plugin->drag = 1; else gui->drag->flicker(10,50); } @@ -657,7 +670,7 @@ int TracerReset::handle_event() config.invert = 0; config.feather = 0; config.radius = 1; - config.selected = -1; + plugin->selected = -1; TracerPoints &points = plugin->config.points; points.remove_all_objects(); gui->point_list->update(-1);