translation fixes, pref wdw min width, xfer mode ops
[goodguy/history.git] / cinelerra-5.1 / cinelerra / preferencesthread.C
index 8d8e22c79bc2aafe8e16d177ad1b113c21ccf660..d02f9ad44304704bfd90990a42367a9295ede31c 100644 (file)
@@ -127,10 +127,17 @@ BC_Window* PreferencesThread::new_gui()
        int scr_w = mwindow->gui->get_screen_w(0, -1);
        int scr_h = mwindow->gui->get_screen_h(0, -1);
 
-       int x = scr_x + scr_w / 2 - WIDTH / 2;
-       int y = scr_h / 2 - HEIGHT / 2;
+       int w = WIDTH, h = HEIGHT;
+       int min_w = mwindow->theme->preferencescategory_x;
+       for(int i = 0; i < CATEGORIES; i++) {
+               min_w += PreferencesButton::calculate_w(mwindow->gui, category_to_text(i)) -
+                       mwindow->theme->preferences_category_overlap;
+       }
+       if( w < min_w ) w = min_w;
+       int x = scr_x + scr_w / 2 - w / 2;
+       int y = scr_h / 2 - h / 2;
 
-       window = new PreferencesWindow(mwindow, this, x, y);
+       window = new PreferencesWindow(mwindow, this, x, y, w, h);
        window->create_objects();
        mwindow->gui->unlock_window();
 
@@ -211,6 +218,7 @@ int PreferencesThread::apply_settings()
 
        BC_Signals::set_catch_segv(mwindow->preferences->trap_sigsegv);
        BC_Signals::set_catch_intr(mwindow->preferences->trap_sigintr);
+       BC_WindowBase::get_resources()->popupmenu_btnup = mwindow->preferences->popupmenu_btnup;
 
        mwindow->reset_android_remote();
        mwindow->gui->ffmpeg_toggle->update(mwindow->preferences->ffmpeg_early_probe);
@@ -356,11 +364,8 @@ SET_TRACE
 
 
 PreferencesWindow::PreferencesWindow(MWindow *mwindow,
-       PreferencesThread *thread,
-       int x,
-       int y)
- : BC_Window(_(PROGRAM_NAME ": Preferences"),
-       x,y, WIDTH,HEIGHT, WIDTH,HEIGHT, 1,0,1)
+       PreferencesThread *thread, int x, int y, int w, int h)
+ : BC_Window(_(PROGRAM_NAME ": Preferences"), x,y, w,h, 1,0,1)
 {
        this->mwindow = mwindow;
        this->thread = thread;
@@ -518,6 +523,7 @@ int PreferencesWindow::set_current_dialog(int number)
 //printf("PreferencesWindow::set_current_dialog %d\n", __LINE__);
                dialog->create_objects();
 //printf("PreferencesWindow::set_current_dialog %d\n", __LINE__);
+               dialog->lower_window();
                dialog->show_window(0);
        }
 
@@ -597,12 +603,16 @@ PreferencesApply::PreferencesApply(MWindow *mwindow, PreferencesThread *thread)
        this->mwindow = mwindow;
        this->thread = thread;
 }
-
 int PreferencesApply::handle_event()
 {
        thread->apply_settings();
        return 1;
 }
+int PreferencesApply::resize_event(int w, int h)
+{
+       reposition_window(w/2 - get_w()/2, h-get_h()-10);
+       return 1;
+}
 
 
 
@@ -615,7 +625,6 @@ PreferencesOK::PreferencesOK(MWindow *mwindow, PreferencesThread *thread)
        this->mwindow = mwindow;
        this->thread = thread;
 }
-
 int PreferencesOK::keypress_event()
 {
        if(get_keypress() == RETURN)
@@ -630,6 +639,11 @@ int PreferencesOK::handle_event()
        thread->window->set_done(0);
        return 1;
 }
+int PreferencesOK::resize_event(int w, int h)
+{
+       reposition_window(10, h-get_h()-10);
+       return 1;
+}
 
 
 
@@ -650,12 +664,16 @@ int PreferencesCancel::keypress_event()
        }
        return 0;
 }
-
 int PreferencesCancel::handle_event()
 {
        thread->window->set_done(1);
        return 1;
 }
+int PreferencesCancel::resize_event(int w, int h)
+{
+       reposition_window(w-get_w()-10, h-get_h()-10);
+       return 1;
+}