verision update, fix findobj missing hdrs, fix colorpicker handle_new_color callback
[goodguy/cinelerra.git] / cinelerra-5.1 / plugins / findobj / findobjwindow.C
index 2f5cd7a2b4725b482e1c6a396de81a5a1630b250..e1ed25c5b0e6f18ad8f056ee0ade9f68f9e0617f 100644 (file)
@@ -22,6 +22,8 @@
 #include "bcdisplayinfo.h"
 #include "clip.h"
 #include "dragcheckbox.h"
+#include "edl.h"
+#include "edlsession.h"
 #include "language.h"
 #include "findobj.h"
 #include "findobjwindow.h"
@@ -533,7 +535,8 @@ int FindObjDragScene::handle_event()
 }
 Track *FindObjDragScene::get_drag_track()
 {
-       return plugin->server->plugin->track;
+       return !plugin->server->plugin ? 0 :
+               plugin->server->plugin->track;
 }
 int64_t FindObjDragScene::get_drag_position()
 {
@@ -543,7 +546,8 @@ void FindObjDragScene::update_gui()
 {
        bound();
        Track *track = get_drag_track();
-       int trk_w = track->track_w, trk_h = track->track_h;
+       int trk_w = track ? track->track_w : plugin->get_edl()->session->output_w;
+       int trk_h = track ? track->track_h : plugin->get_edl()->session->output_h;
        float ctr_x = drag_x + drag_w/2, ctr_y = drag_y + drag_h/2;
        gui->scene_x->update( plugin->config.scene_x = 100. * ctr_x / trk_w );
        gui->scene_y->update( plugin->config.scene_y = 100. * ctr_y / trk_h );
@@ -573,7 +577,8 @@ int FindObjDragObject::handle_event()
 }
 Track *FindObjDragObject::get_drag_track()
 {
-       return plugin->server->plugin->track;
+       return !plugin->server->plugin ? 0 :
+               plugin->server->plugin->track;
 }
 int64_t FindObjDragObject::get_drag_position()
 {
@@ -583,7 +588,8 @@ void FindObjDragObject::update_gui()
 {
        bound();
        Track *track = get_drag_track();
-       int trk_w = track->track_w, trk_h = track->track_h;
+       int trk_w = track ? track->track_w : plugin->get_edl()->session->output_w;
+       int trk_h = track ? track->track_h : plugin->get_edl()->session->output_h;
        float ctr_x = drag_x + drag_w/2, ctr_y = drag_y + drag_h/2;
        gui->object_x->update( plugin->config.object_x = 100. * ctr_x / trk_w );
        gui->object_y->update( plugin->config.object_y = 100. * ctr_y / trk_h );
@@ -613,7 +619,8 @@ int FindObjDragReplace::handle_event()
 }
 Track *FindObjDragReplace::get_drag_track()
 {
-       return plugin->server->plugin->track;
+       return !plugin->server->plugin ? 0 :
+               plugin->server->plugin->track;
 }
 int64_t FindObjDragReplace::get_drag_position()
 {
@@ -623,7 +630,8 @@ void FindObjDragReplace::update_gui()
 {
        bound();
        Track *track = get_drag_track();
-       int trk_w = track->track_w, trk_h = track->track_h;
+       int trk_w = track ? track->track_w : plugin->get_edl()->session->output_w;
+       int trk_h = track ? track->track_h : plugin->get_edl()->session->output_h;
        float ctr_x = drag_x + drag_w/2, ctr_y = drag_y + drag_h/2;
        gui->replace_x->update( plugin->config.replace_x = 100. * ctr_x / trk_w );
        gui->replace_y->update( plugin->config.replace_y = 100. * ctr_y / trk_h );