added setting for focus on hover for #161
This commit is contained in:
+6
-1
@@ -31,7 +31,8 @@ Config::Config()
|
||||
drop_on_media_to_replace(true),
|
||||
autoscroll(AUTOSCROLL_PAGE_SCROLL),
|
||||
audio_rate(48000),
|
||||
fast_seeking(false)
|
||||
fast_seeking(false),
|
||||
hover_focus(false)
|
||||
{}
|
||||
|
||||
void Config::load(QString path) {
|
||||
@@ -111,6 +112,9 @@ void Config::load(QString path) {
|
||||
} else if (stream.name() == "FastSeeking") {
|
||||
stream.readNext();
|
||||
fast_seeking = (stream.text() == "1");
|
||||
} else if (stream.name() == "HoverFocus") {
|
||||
stream.readNext();
|
||||
hover_focus = (stream.text() == "1");
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -158,6 +162,7 @@ void Config::save(QString path) {
|
||||
stream.writeTextElement("Autoscroll", QString::number(autoscroll));
|
||||
stream.writeTextElement("AudioRate", QString::number(audio_rate));
|
||||
stream.writeTextElement("FastSeeking", QString::number(fast_seeking));
|
||||
stream.writeTextElement("HoverFocus", QString::number(hover_focus));
|
||||
|
||||
stream.writeEndElement(); // configuration
|
||||
stream.writeEndDocument(); // doc
|
||||
|
||||
@@ -43,6 +43,7 @@ struct Config {
|
||||
int autoscroll;
|
||||
int audio_rate;
|
||||
bool fast_seeking;
|
||||
bool hover_focus;
|
||||
|
||||
void load(QString path);
|
||||
void save(QString path);
|
||||
|
||||
+26
-19
@@ -311,34 +311,33 @@ void MainWindow::on_actionSequence_triggered()
|
||||
nsd.exec();
|
||||
}
|
||||
|
||||
void MainWindow::on_actionZoom_In_triggered()
|
||||
{
|
||||
if (panel_timeline->focused()) {
|
||||
void MainWindow::on_actionZoom_In_triggered() {
|
||||
QDockWidget* focused_panel = get_focused_panel();
|
||||
if (focused_panel == panel_timeline) {
|
||||
panel_timeline->set_zoom(true);
|
||||
} else if (panel_effect_controls->keyframe_focus()) {
|
||||
} else if (focused_panel == panel_effect_controls) {
|
||||
panel_effect_controls->set_zoom(true);
|
||||
} else if (panel_footage_viewer->is_focused()) {
|
||||
} else if (focused_panel == panel_footage_viewer) {
|
||||
panel_footage_viewer->set_zoom(true);
|
||||
} else if (panel_sequence_viewer->is_focused()) {
|
||||
} else if (focused_panel == panel_sequence_viewer) {
|
||||
panel_sequence_viewer->set_zoom(true);
|
||||
}
|
||||
}
|
||||
|
||||
void MainWindow::on_actionZoom_out_triggered()
|
||||
{
|
||||
if (panel_timeline->focused()) {
|
||||
void MainWindow::on_actionZoom_out_triggered() {
|
||||
QDockWidget* focused_panel = get_focused_panel();
|
||||
if (focused_panel == panel_timeline) {
|
||||
panel_timeline->set_zoom(false);
|
||||
} else if (panel_effect_controls->keyframe_focus()) {
|
||||
} else if (focused_panel == panel_effect_controls) {
|
||||
panel_effect_controls->set_zoom(false);
|
||||
} else if (panel_footage_viewer->is_focused()) {
|
||||
} else if (focused_panel == panel_footage_viewer) {
|
||||
panel_footage_viewer->set_zoom(false);
|
||||
} else if (panel_sequence_viewer->is_focused()) {
|
||||
} else if (focused_panel == panel_sequence_viewer) {
|
||||
panel_sequence_viewer->set_zoom(false);
|
||||
}
|
||||
}
|
||||
|
||||
void MainWindow::on_actionExport_triggered()
|
||||
{
|
||||
void MainWindow::on_actionExport_triggered() {
|
||||
if (sequence == NULL) {
|
||||
QMessageBox::information(this, "No active sequence", "Please open the sequence you wish to export.", QMessageBox::Ok);
|
||||
} else {
|
||||
@@ -400,9 +399,10 @@ void MainWindow::openSpeedDialog() {
|
||||
|
||||
void MainWindow::cut() {
|
||||
if (sequence != NULL) {
|
||||
if (panel_timeline->focused()) {
|
||||
QDockWidget* focused_panel = get_focused_panel();
|
||||
if (panel_timeline == focused_panel) {
|
||||
panel_timeline->copy(true);
|
||||
} else if (panel_effect_controls->is_focused()) {
|
||||
} else if (panel_effect_controls == focused_panel) {
|
||||
panel_effect_controls->copy(true);
|
||||
}
|
||||
}
|
||||
@@ -410,16 +410,18 @@ void MainWindow::cut() {
|
||||
|
||||
void MainWindow::copy() {
|
||||
if (sequence != NULL) {
|
||||
if (panel_timeline->focused()) {
|
||||
QDockWidget* focused_panel = get_focused_panel();
|
||||
if (panel_timeline == focused_panel) {
|
||||
panel_timeline->copy(false);
|
||||
} else if (panel_effect_controls->is_focused()) {
|
||||
} else if (panel_effect_controls == focused_panel) {
|
||||
panel_effect_controls->copy(false);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void MainWindow::paste() {
|
||||
if ((panel_timeline->focused() || panel_effect_controls->is_focused()) && sequence != NULL) {
|
||||
QDockWidget* focused_panel = get_focused_panel();
|
||||
if ((panel_timeline == focused_panel || panel_effect_controls == focused_panel) && sequence != NULL) {
|
||||
panel_timeline->paste(false);
|
||||
}
|
||||
}
|
||||
@@ -708,6 +710,7 @@ void MainWindow::toolMenu_About_To_Be_Shown() {
|
||||
ui->actionEnable_Seek_to_Import->setChecked(config.enable_seek_to_import);
|
||||
ui->actionAudio_Scrubbing->setChecked(config.enable_audio_scrubbing);
|
||||
ui->actionEnable_Drop_on_Media_to_Replace->setChecked(config.drop_on_media_to_replace);
|
||||
ui->actionEnable_Hover_Focus->setChecked(config.hover_focus);
|
||||
|
||||
ui->actionNo_autoscroll->setChecked(config.autoscroll == AUTOSCROLL_NO_SCROLL);
|
||||
ui->actionPage_Autoscroll->setChecked(config.autoscroll == AUTOSCROLL_PAGE_SCROLL);
|
||||
@@ -1039,3 +1042,7 @@ void MainWindow::on_actionMilliseconds_triggered() {
|
||||
config.timecode_view = TIMECODE_MILLISECONDS;
|
||||
update_ui(false);
|
||||
}
|
||||
|
||||
void MainWindow::on_actionEnable_Hover_Focus_triggered() {
|
||||
config.hover_focus = !config.hover_focus;
|
||||
}
|
||||
|
||||
@@ -211,6 +211,8 @@ private slots:
|
||||
|
||||
void on_actionMilliseconds_triggered();
|
||||
|
||||
void on_actionEnable_Hover_Focus_triggered();
|
||||
|
||||
private:
|
||||
Ui::MainWindow *ui;
|
||||
void setup_layout(bool reset);
|
||||
|
||||
@@ -187,6 +187,7 @@
|
||||
<addaction name="actionEnable_Seek_to_Import"/>
|
||||
<addaction name="actionAudio_Scrubbing"/>
|
||||
<addaction name="actionEnable_Drop_on_Media_to_Replace"/>
|
||||
<addaction name="actionEnable_Hover_Focus"/>
|
||||
<addaction name="separator"/>
|
||||
<addaction name="actionNo_autoscroll"/>
|
||||
<addaction name="actionPage_Autoscroll"/>
|
||||
@@ -925,6 +926,14 @@
|
||||
<string>Milliseconds</string>
|
||||
</property>
|
||||
</action>
|
||||
<action name="actionEnable_Hover_Focus">
|
||||
<property name="checkable">
|
||||
<bool>true</bool>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Enable Hover Focus for Zooming</string>
|
||||
</property>
|
||||
</action>
|
||||
</widget>
|
||||
<layoutdefault spacing="6" margin="11"/>
|
||||
<resources/>
|
||||
|
||||
@@ -7,6 +7,7 @@
|
||||
#include "project/sequence.h"
|
||||
#include "project/clip.h"
|
||||
#include "project/transition.h"
|
||||
#include "io/config.h"
|
||||
#include "debug.h"
|
||||
|
||||
Project* panel_project = 0;
|
||||
@@ -105,3 +106,34 @@ void update_ui(bool modified) {
|
||||
panel_timeline->repaint_timeline();
|
||||
panel_sequence_viewer->update_viewer();
|
||||
}
|
||||
|
||||
QDockWidget *get_focused_panel() {
|
||||
QDockWidget* w = NULL;
|
||||
if (config.hover_focus) {
|
||||
if (panel_project->rect().contains(panel_project->mapFromGlobal(QCursor::pos()))) {
|
||||
w = panel_project;
|
||||
} else if (panel_effect_controls->rect().contains(panel_effect_controls->mapFromGlobal(QCursor::pos()))) {
|
||||
w = panel_effect_controls;
|
||||
} else if (panel_sequence_viewer->rect().contains(panel_sequence_viewer->mapFromGlobal(QCursor::pos()))) {
|
||||
w = panel_sequence_viewer;
|
||||
} else if (panel_footage_viewer->rect().contains(panel_footage_viewer->mapFromGlobal(QCursor::pos()))) {
|
||||
w = panel_footage_viewer;
|
||||
} else if (panel_timeline->rect().contains(panel_timeline->mapFromGlobal(QCursor::pos()))) {
|
||||
w = panel_timeline;
|
||||
}
|
||||
}
|
||||
if (w == NULL) {
|
||||
if (panel_project->is_focused()) {
|
||||
w = panel_project;
|
||||
} else if (panel_effect_controls->keyframe_focus()) {
|
||||
w = panel_effect_controls;
|
||||
} else if (panel_sequence_viewer->is_focused()) {
|
||||
w = panel_sequence_viewer;
|
||||
} else if (panel_footage_viewer->is_focused()) {
|
||||
w = panel_footage_viewer;
|
||||
} else if (panel_timeline->focused()) {
|
||||
w = panel_timeline;
|
||||
}
|
||||
}
|
||||
return w;
|
||||
}
|
||||
|
||||
@@ -5,6 +5,7 @@ class Project;
|
||||
class EffectControls;
|
||||
class Viewer;
|
||||
class Timeline;
|
||||
class QDockWidget;
|
||||
|
||||
extern Project* panel_project;
|
||||
extern EffectControls* panel_effect_controls;
|
||||
@@ -13,5 +14,6 @@ extern Viewer* panel_footage_viewer;
|
||||
extern Timeline* panel_timeline;
|
||||
|
||||
void update_ui(bool modified);
|
||||
QDockWidget* get_focused_panel();
|
||||
|
||||
#endif // PANELS_H
|
||||
|
||||
+12
-10
@@ -416,17 +416,19 @@ void Viewer::set_out_point() {
|
||||
}
|
||||
|
||||
void Viewer::set_zoom(bool in) {
|
||||
if (in) {
|
||||
ui->headers->update_zoom(ui->headers->get_zoom()*2);
|
||||
} else {
|
||||
ui->headers->update_zoom(qMax(minimum_zoom, ui->headers->get_zoom()*0.5));
|
||||
if (seq != NULL) {
|
||||
if (in) {
|
||||
ui->headers->update_zoom(ui->headers->get_zoom()*2);
|
||||
} else {
|
||||
ui->headers->update_zoom(qMax(minimum_zoom, ui->headers->get_zoom()*0.5));
|
||||
}
|
||||
if (ui->openGLWidget->waveform) {
|
||||
ui->openGLWidget->waveform_zoom = ui->headers->get_zoom();
|
||||
ui->openGLWidget->update();
|
||||
}
|
||||
ui->headers->set_scrollbar_max(ui->horizontalScrollBar, seq->getEndFrame(), ui->headers->width());
|
||||
center_scroll_to_playhead(ui->horizontalScrollBar, ui->headers->get_zoom(), seq->playhead);
|
||||
}
|
||||
if (ui->openGLWidget->waveform) {
|
||||
ui->openGLWidget->waveform_zoom = ui->headers->get_zoom();
|
||||
ui->openGLWidget->update();
|
||||
}
|
||||
ui->headers->set_scrollbar_max(ui->horizontalScrollBar, seq->getEndFrame(), ui->headers->width());
|
||||
center_scroll_to_playhead(ui->horizontalScrollBar, ui->headers->get_zoom(), seq->playhead);
|
||||
}
|
||||
|
||||
void Viewer::set_media(Media* m) {
|
||||
|
||||
Reference in New Issue
Block a user