X-Git-Url: http://git.cinelerra-gg.org/git/?a=blobdiff_plain;f=cinelerra-5.1%2Fplugins%2Fcrikey%2Fcrikeywindow.C;fp=cinelerra-5.1%2Fplugins%2Fcrikey%2Fcrikeywindow.C;h=e774bae81f734e010fd1c836d41edfb927d13f2b;hb=47462c7a88ed4f844fa4eaf32a84533aa847b7d5;hp=3f72f3ded74ccf5aa1f3b56189a6e6661ab1ca98;hpb=4784a8d70bc39f9b7e467f93304d2df3f23fd2df;p=goodguy%2Fhistory.git diff --git a/cinelerra-5.1/plugins/crikey/crikeywindow.C b/cinelerra-5.1/plugins/crikey/crikeywindow.C index 3f72f3de..e774bae8 100644 --- a/cinelerra-5.1/plugins/crikey/crikeywindow.C +++ b/cinelerra-5.1/plugins/crikey/crikeywindow.C @@ -29,6 +29,7 @@ #include "edl.h" #include "edlsession.h" #include "language.h" +#include "mainerror.h" #include "mwindow.h" #include "plugin.h" #include "pluginserver.h" @@ -171,8 +172,8 @@ CriKeyWindow::CriKeyWindow(CriKey *plugin) this->plugin = plugin; this->color_button = 0; this->color_picker = 0; - this->title_x = 0; this->point_x = 0; - this->title_y = 0; this->point_y = 0; + this->title_x = 0; this->point_x = 0; + this->title_y = 0; this->point_y = 0; this->new_point = 0; this->del_point = 0; this->point_up = 0; this->point_dn = 0; this->drag = 0; this->dragging = 0; @@ -225,7 +226,13 @@ void CriKeyWindow::create_objects() x1 += del_point->get_w() + margin; add_subwindow(point_dn = new CriKeyPointDn(this, x1, y)); y += point_y->get_h() + margin + 10; + add_subwindow(drag = new CriKeyDrag(this, x, y)); + if( plugin->config.drag ) { + if( !grab(plugin->server->mwindow->cwindow->gui) ) + eprintf("drag enabled, but compositor already grabbed\n"); + } + x1 = x + drag->get_w() + margin + 20; add_subwindow(cur_point = new CriKeyCurPoint(this, plugin, x1, y+3)); cur_point->update(plugin->config.selected); @@ -233,9 +240,6 @@ void CriKeyWindow::create_objects() add_subwindow(points = new CriKeyPoints(this, plugin, x, y)); points->update(plugin->config.selected); - if( plugin->config.drag ) - grab(plugin->server->mwindow->cwindow->gui); - show_window(1); } @@ -359,7 +363,7 @@ int CriKeyWindow::grab_event(XEvent *event) void CriKeyWindow::done_event(int result) { - ungrab(client->server->mwindow->cwindow->gui); + ungrab(client->server->mwindow->cwindow->gui); if( color_picker ) color_picker->close_window(); } @@ -582,15 +586,19 @@ CriKeyDrag::CriKeyDrag(CriKeyWindow *gui, int x, int y) } int CriKeyDrag::handle_event() { - int value = get_value(); - gui->plugin->config.drag = value; CWindowGUI *cwindow_gui = gui->plugin->server->mwindow->cwindow->gui; - if( value ) - gui->grab(cwindow_gui); - else - gui->ungrab(cwindow_gui); - gui->plugin->send_configure_change(); - return 1; + int value = get_value(); + if( value ) { + if( !gui->grab(cwindow_gui) ) { + update(value = 0); + flicker(10,50); + } + } + else + gui->ungrab(cwindow_gui); + gui->plugin->config.drag = value; + gui->plugin->send_configure_change(); + return 1; } CriKeyNewPoint::CriKeyNewPoint(CriKeyWindow *gui, CriKey *plugin, int x, int y)