X-Git-Url: http://git.cinelerra-gg.org/git/?a=blobdiff_plain;f=cinelerra-5.0%2Fcinelerra%2Fmwindowgui.C;h=8c5b4726ac33d7f3b9f1c34bae2233223c7165b5;hb=e919ce8a71cdc99bb7344cc192e13a2c2db9e1c0;hp=86a41fcc8459ca611ac30b9d7a8facc496dd1306;hpb=91efd376233a15f6572e6f68d28a5bee69797e87;p=goodguy%2Fhistory.git diff --git a/cinelerra-5.0/cinelerra/mwindowgui.C b/cinelerra-5.0/cinelerra/mwindowgui.C index 86a41fcc..8c5b4726 100644 --- a/cinelerra-5.0/cinelerra/mwindowgui.C +++ b/cinelerra-5.0/cinelerra/mwindowgui.C @@ -25,6 +25,7 @@ #include "bcdisplayinfo.h" #include "bchash.h" #include "bcsignals.h" +#include "clip.h" #include "cwindowgui.h" #include "cwindow.h" #include "channelinfo.h" @@ -70,7 +71,7 @@ #include "vwindow.h" #include "zoombar.h" -#define PANE_DRAG_MARGIN 50 +#define PANE_DRAG_MARGIN MAX(mwindow->theme->pane_w, mwindow->theme->pane_h) // the main window uses its own private colormap for video @@ -389,12 +390,59 @@ int MWindowGUI::resize_event(int w, int h) mwindow->session->mwindow_h = h; mwindow->theme->get_mwindow_sizes(this, w, h); mwindow->theme->draw_mwindow_bg(this); -// mainmenu->reposition_window(0, 0, w, mainmenu->get_h()); mbuttons->resize_event(); statusbar->resize_event(); resource_thread->stop_draw(1); + if(total_panes() > 1) + { + if(horizontal_panes()) + { +// printf("MWindowGUI::resize_event %d %d %d\n", +// __LINE__, +// pane[TOP_RIGHT_PANE]->x, +// mwindow->theme->mcanvas_w - +// BC_ScrollBar::get_span(SCROLL_VERT) - +// PANE_DRAG_MARGIN); + if(pane[TOP_RIGHT_PANE]->x >= mwindow->theme->mcanvas_w - + BC_ScrollBar::get_span(SCROLL_VERT) - + PANE_DRAG_MARGIN) + { + delete_x_pane(pane[TOP_RIGHT_PANE]->x); + mwindow->edl->local_session->x_pane = -1; + } + } + else + if(vertical_panes()) + { + if(pane[BOTTOM_LEFT_PANE]->y >= mwindow->theme->mzoom_y - + BC_ScrollBar::get_span(SCROLL_HORIZ) - + PANE_DRAG_MARGIN) + { + delete_y_pane(pane[BOTTOM_LEFT_PANE]->y); + mwindow->edl->local_session->y_pane = -1; + } + } + else + { + if(pane[TOP_RIGHT_PANE]->x >= mwindow->theme->mcanvas_w - + BC_ScrollBar::get_span(SCROLL_VERT) - + PANE_DRAG_MARGIN) + { + delete_x_pane(pane[TOP_RIGHT_PANE]->x); + mwindow->edl->local_session->x_pane = -1; + } + + if(pane[BOTTOM_LEFT_PANE]->y >= mwindow->theme->mzoom_y - + BC_ScrollBar::get_span(SCROLL_HORIZ) - + PANE_DRAG_MARGIN) + { + delete_y_pane(pane[BOTTOM_LEFT_PANE]->y); + mwindow->edl->local_session->y_pane = -1; + } + } + } if(total_panes() == 1) { @@ -469,10 +517,14 @@ int MWindowGUI::resize_event(int w, int h) zoombar->resize_event(); pane_button->reposition_window(w - mwindow->theme->get_image_set("pane")[0]->get_w(), mwindow->theme->mzoom_y + 1 - mwindow->theme->get_image_set("pane")[0]->get_h()); + int x = get_w() - MainShBtns::calculate_w(0); + mainmenu->resize_event(x, mainmenu->get_h()); + mainshbtns->reposition_window(x, 0); // get_scrollbars(0); // canvas->resize_event(); //printf("MWindowGUI::resize_event %d\n", __LINE__); - flash(0); +// required to get new widgets to appear after a pane deletion + show_window(); return 0; }