X-Git-Url: http://git.cinelerra-gg.org/git/?a=blobdiff_plain;f=cinelerra-5.0%2Fcinelerra%2Fmwindowgui.C;h=8c5b4726ac33d7f3b9f1c34bae2233223c7165b5;hb=e919ce8a71cdc99bb7344cc192e13a2c2db9e1c0;hp=13f7247524dd3db92a2e7ae1a4a8b6954d692f18;hpb=94e8dc2b306135e7735b2618a54f0f7de7ac7a0c;p=goodguy%2Fhistory.git diff --git a/cinelerra-5.0/cinelerra/mwindowgui.C b/cinelerra-5.0/cinelerra/mwindowgui.C index 13f72475..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" @@ -58,8 +59,9 @@ #include "renderengine.h" #include "resourcethread.h" #include "samplescroll.h" -#include "swindow.h" +#include "shbtnprefs.h" #include "statusbar.h" +#include "swindow.h" #include "theme.h" #include "trackcanvas.h" #include "trackscroll.h" @@ -69,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 @@ -258,7 +260,10 @@ void MWindowGUI::create_objects() if(debug) printf("MWindowGUI::create_objects %d\n", __LINE__); - add_subwindow(mainmenu = new MainMenu(mwindow, this)); + int x = get_w() - MainShBtns::calculate_w(0); + add_subwindow(mainmenu = new MainMenu(mwindow, this, x)); + add_subwindow(mainshbtns = new MainShBtns(mwindow, x, 0)); + mainshbtns->load(mwindow->preferences); mwindow->theme->get_mwindow_sizes(this, get_w(), get_h()); mwindow->theme->draw_mwindow_bg(this); mainmenu->create_objects(); @@ -385,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) { @@ -465,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; }