Well, I'm fairly sure
void MWindow::hide_vwindow() kinda wrong (because copypasta!)
but it seems to work for single viewer window I wanted to hide via this menu.
diff --git a/cinelerra-5.1/cinelerra/mainmenu.C b/cinelerra-5.1/cinelerra/mainmenu.C
index 5735f8c9..18e2466d 100644
--- a/cinelerra-5.1/cinelerra/mainmenu.C
+++ b/cinelerra-5.1/cinelerra/mainmenu.C
@@ -1607,9 +1607,18 @@ ShowVWindow::ShowVWindow(MWindow *mwindow)
}
int ShowVWindow::handle_event()
{
- mwindow->gui->unlock_window();
- mwindow->show_vwindow(1);
- mwindow->gui->lock_window("ShowVWindow::handle_event");
+
+ mwindow->gui->unlock_window();
+ if( !mwindow->session->show_vwindow )
+ mwindow->show_vwindow(1);
+ else
+ mwindow->hide_vwindow();
+ mwindow->gui->lock_window("ShowVWindow::handle_event");
+ set_checked(mwindow->session->show_vwindow);
+
+// mwindow->gui->unlock_window();
+// mwindow->show_vwindow(1);
+// mwindow->gui->lock_window("ShowVWindow::handle_event");
return 1;
}
@@ -1621,9 +1630,18 @@ ShowAWindow::ShowAWindow(MWindow *mwindow)
}
int ShowAWindow::handle_event()
{
- mwindow->gui->unlock_window();
- mwindow->show_awindow();
- mwindow->gui->lock_window("ShowAWindow::handle_event");
+ mwindow->gui->unlock_window();
+ if( !mwindow->session->show_awindow )
+ mwindow->show_awindow();
+ else
+ mwindow->hide_awindow();
+ mwindow->gui->lock_window("ShowAWindow::handle_event");
+ set_checked(mwindow->session->show_awindow);
+
+
+// mwindow->gui->unlock_window();
+// mwindow->show_awindow();
+// mwindow->gui->lock_window("ShowAWindow::handle_event");
return 1;
}
@@ -1635,9 +1653,17 @@ ShowCWindow::ShowCWindow(MWindow *mwindow)
}
int ShowCWindow::handle_event()
{
- mwindow->gui->unlock_window();
- mwindow->show_cwindow();
- mwindow->gui->lock_window("ShowCWindow::handle_event");
+ mwindow->gui->unlock_window();
+ if( !mwindow->session->show_cwindow )
+ mwindow->show_cwindow();
+ else
+ mwindow->hide_cwindow();
+ mwindow->gui->lock_window("ShowCWindow::handle_event");
+ set_checked(mwindow->session->show_cwindow);
+
+// mwindow->gui->unlock_window();
+// mwindow->show_cwindow();
+// mwindow->gui->lock_window("ShowCWindow::handle_event");
return 1;
}
@@ -1672,9 +1698,18 @@ ShowLWindow::ShowLWindow(MWindow *mwindow)
}
int ShowLWindow::handle_event()
{
- mwindow->gui->unlock_window();
- mwindow->show_lwindow();
- mwindow->gui->lock_window("ShowLWindow::handle_event");
+
+ mwindow->gui->unlock_window();
+ if( !mwindow->session->show_lwindow )
+ mwindow->show_lwindow();
+ else
+ mwindow->hide_lwindow();
+ mwindow->gui->lock_window("ShowLWindow::handle_event");
+ set_checked(mwindow->session->show_lwindow);
+
+// mwindow->gui->unlock_window();
+// mwindow->show_lwindow();
+// mwindow->gui->lock_window("ShowLWindow::handle_event");
return 1;
}
diff --git a/cinelerra-5.1/cinelerra/mwindow.C b/cinelerra-5.1/cinelerra/mwindow.C
index f245018a..c25c2bdf 100644
--- a/cinelerra-5.1/cinelerra/mwindow.C
+++ b/cinelerra-5.1/cinelerra/mwindow.C
@@ -2997,6 +2997,36 @@ void MWindow::show_vwindow(int raise)
gui->mainmenu->show_vwindow->set_checked(1);
}
+
+void MWindow::hide_vwindow()
+{
+ session->show_vwindow = 0;
+ int total_running = 0;
+
+ for(int j = 0; j < vwindows.size(); j++) {
+ VWindow *vwindow = vwindows[j];
+ if( !vwindow->is_running() ) continue;
+ total_running++;
+ if( !raise && !vwindow->gui->is_hidden() ) continue;
+ vwindow->gui->lock_window("MWindow::show_vwindow");
+ vwindow->gui->hide_window(0);
+ //vwindow->gui->raise_window();
+ //vwindow->gui->flush();
+ vwindow->gui->unlock_window();
+ }
+// If no windows visible
+ if( !total_running )
+ get_viewer(1, DEFAULT_VWINDOW);
+
+ gui->mainmenu->show_vwindow->set_checked(0);
+
+//
+// vwindow->gui->lock_window("MWindow::show_vwindow");
+// vwindow->gui->hide_window();
+// vwindow->gui->unlock_window();
+}
+
+
void MWindow::show_awindow()
{
session->show_awindow = 1;
@@ -3008,6 +3038,18 @@ void MWindow::show_awindow()
gui->mainmenu->show_awindow->set_checked(1);
}
+void MWindow::hide_awindow()
+{
+ session->show_awindow = 0;
+
+ awindow->gui->lock_window("MWindow::show_awindow");
+ awindow->gui->hide_window();
+ awindow->gui->unlock_window();
+ gui->mainmenu->show_awindow->set_checked(0);
+}
+
+
+
char *MWindow::get_cwindow_display()
{
char *x11_host = screens < 2 || session->window_config == 0 ?
@@ -3023,6 +3065,18 @@ void MWindow::show_cwindow()
gui->mainmenu->show_cwindow->set_checked(1);
}
+
+void MWindow::hide_cwindow()
+{
+ session->show_cwindow = 0;
+
+ cwindow->gui->lock_window("MWindow::show_cwindow");
+ cwindow->gui->hide_window();
+ cwindow->gui->unlock_window();
+ gui->mainmenu->show_cwindow->set_checked(0);
+}
+
+
void MWindow::show_gwindow()
{
session->show_gwindow = 1;
@@ -3035,6 +3089,7 @@ void MWindow::show_gwindow()
gui->mainmenu->show_gwindow->set_checked(1);
}
+
void MWindow::hide_gwindow()
{
session->show_gwindow = 0;
@@ -3042,6 +3097,8 @@ void MWindow::hide_gwindow()
gwindow->gui->lock_window("MWindow::show_gwindow");
gwindow->gui->hide_window();
gwindow->gui->unlock_window();
+
+ gui->mainmenu->show_gwindow->set_checked(0);
}
void MWindow::show_lwindow()
@@ -3055,6 +3112,18 @@ void MWindow::show_lwindow()
gui->mainmenu->show_lwindow->set_checked(1);
}
+void MWindow::hide_lwindow()
+{
+ session->show_lwindow = 0;
+
+ lwindow->gui->lock_window("MWindow::show_lwindow");
+ lwindow->gui->hide_window();
+ lwindow->gui->unlock_window();
+ gui->mainmenu->show_lwindow->set_checked(0);
+}
+
+
+
void MWindow::restore_windows()
{
gui->unlock_window();
diff --git a/cinelerra-5.1/cinelerra/mwindow.h b/cinelerra-5.1/cinelerra/mwindow.h
index 6a4e2fb6..a4508e67 100644
--- a/cinelerra-5.1/cinelerra/mwindow.h
+++ b/cinelerra-5.1/cinelerra/mwindow.h
@@ -210,9 +210,13 @@ public:
int create_ref(Asset *asset, EDL *ref);
// Show windows
void show_vwindow(int raise);
+ void hide_vwindow();
void show_awindow();
- void show_lwindow();
+ void hide_awindow();
void show_cwindow();
+ void hide_cwindow();
+ void show_lwindow();
+ void hide_lwindow();
void show_gwindow();
void hide_gwindow();
void restore_windows();
--
Cin mailing list
[email protected]
https://lists.cinelerra-gg.org/mailman/listinfo/cin