workaround for qt's dock jump bug
This commit is contained in:
+14
-13
@@ -47,7 +47,9 @@ void MainWindow::setup_layout() {
|
||||
addDockWidget(Qt::TopDockWidgetArea, panel_project);
|
||||
addDockWidget(Qt::TopDockWidgetArea, panel_effect_controls);
|
||||
addDockWidget(Qt::TopDockWidgetArea, panel_viewer);
|
||||
addDockWidget(Qt::BottomDockWidgetArea, panel_timeline);
|
||||
addDockWidget(Qt::BottomDockWidgetArea, panel_timeline);
|
||||
|
||||
resizeDocks({panel_project}, {40}, Qt::Horizontal);
|
||||
}
|
||||
|
||||
MainWindow::MainWindow(QWidget *parent) :
|
||||
@@ -84,7 +86,6 @@ MainWindow::MainWindow(QWidget *parent) :
|
||||
setWindowTitle("Olive (August 2018 | Alpha)");
|
||||
statusBar()->showMessage("Welcome to Olive");
|
||||
|
||||
ui->centralWidget->setMaximumSize(0, 0);
|
||||
setDockNestingEnabled(true);
|
||||
|
||||
// TODO maybe replace these with non-pointers later on?
|
||||
@@ -398,42 +399,42 @@ void MainWindow::on_actionDeselect_All_triggered()
|
||||
}
|
||||
}
|
||||
|
||||
void MainWindow::on_actionGo_to_start_triggered()
|
||||
{
|
||||
if (panel_timeline->focused() || panel_viewer->hasFocus()) {
|
||||
panel_timeline->go_to_start();
|
||||
}
|
||||
}
|
||||
|
||||
void MainWindow::on_actionReset_to_default_layout_triggered()
|
||||
{
|
||||
setup_layout();
|
||||
}
|
||||
|
||||
void MainWindow::on_actionGo_to_start_triggered()
|
||||
{
|
||||
if (panel_timeline->focused() || panel_viewer->hasFocus() || panel_effect_controls->keyframe_focus()) {
|
||||
panel_timeline->go_to_start();
|
||||
}
|
||||
}
|
||||
|
||||
void MainWindow::on_actionPrevious_Frame_triggered()
|
||||
{
|
||||
if (panel_timeline->focused() || panel_viewer->hasFocus()) {
|
||||
if (panel_timeline->focused() || panel_viewer->hasFocus() || panel_effect_controls->keyframe_focus()) {
|
||||
panel_timeline->previous_frame();
|
||||
}
|
||||
}
|
||||
|
||||
void MainWindow::on_actionNext_Frame_triggered()
|
||||
{
|
||||
if (panel_timeline->focused() || panel_viewer->hasFocus()) {
|
||||
if (panel_timeline->focused() || panel_viewer->hasFocus() || panel_effect_controls->keyframe_focus()) {
|
||||
panel_timeline->next_frame();
|
||||
}
|
||||
}
|
||||
|
||||
void MainWindow::on_actionGo_to_End_triggered()
|
||||
{
|
||||
if (panel_timeline->focused() || panel_viewer->hasFocus()) {
|
||||
if (panel_timeline->focused() || panel_viewer->hasFocus() || panel_effect_controls->keyframe_focus()) {
|
||||
panel_timeline->go_to_end();
|
||||
}
|
||||
}
|
||||
|
||||
void MainWindow::on_actionPlay_Pause_triggered()
|
||||
{
|
||||
if (panel_timeline->focused() || panel_viewer->hasFocus()) {
|
||||
if (panel_timeline->focused() || panel_viewer->hasFocus() || panel_effect_controls->keyframe_focus()) {
|
||||
panel_timeline->toggle_play();
|
||||
}
|
||||
}
|
||||
|
||||
+14
-1
@@ -17,7 +17,20 @@
|
||||
<iconset resource="icons/icons.qrc">
|
||||
<normaloff>:/icons/full-icon.png</normaloff>:/icons/full-icon.png</iconset>
|
||||
</property>
|
||||
<widget class="QWidget" name="centralWidget"/>
|
||||
<widget class="QWidget" name="centralWidget">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Minimum" vsizetype="Minimum">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
<width>0</width>
|
||||
<height>0</height>
|
||||
</size>
|
||||
</property>
|
||||
</widget>
|
||||
<widget class="QMenuBar" name="menuBar">
|
||||
<property name="geometry">
|
||||
<rect>
|
||||
|
||||
+5
-8
@@ -148,13 +148,10 @@ void Timeline::reset_all_audio() {
|
||||
}
|
||||
|
||||
void Timeline::seek(long p) {
|
||||
pause();
|
||||
|
||||
pause();
|
||||
playhead = p;
|
||||
|
||||
reset_all_audio();
|
||||
|
||||
repaint_timeline();
|
||||
repaint_timeline();
|
||||
}
|
||||
|
||||
void Timeline::toggle_play() {
|
||||
@@ -268,7 +265,7 @@ bool Timeline::focused() {
|
||||
}
|
||||
|
||||
void Timeline::repaint_timeline() {
|
||||
if (playing) {
|
||||
if (playing) {
|
||||
playhead = round(playhead_start + ((QDateTime::currentMSecsSinceEpoch()-start_msecs) * 0.001 * sequence->frame_rate));
|
||||
}
|
||||
|
||||
@@ -282,7 +279,7 @@ void Timeline::repaint_timeline() {
|
||||
ui->audio_monitor->update();
|
||||
last_frame = playhead;
|
||||
}
|
||||
panel_viewer->update_playhead_timecode(playhead);
|
||||
panel_viewer->update_playhead_timecode(playhead);
|
||||
}
|
||||
|
||||
void Timeline::redraw_all_clips(bool changed) {
|
||||
@@ -296,7 +293,7 @@ void Timeline::redraw_all_clips(bool changed) {
|
||||
ui->audio_area->redraw_clips();
|
||||
panel_effect_controls->update_keyframes();
|
||||
|
||||
panel_viewer->update_end_timecode();
|
||||
panel_viewer->update_end_timecode();
|
||||
}
|
||||
|
||||
void Timeline::select_all() {
|
||||
|
||||
+13
-1
@@ -10,6 +10,12 @@
|
||||
<height>592</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Expanding" vsizetype="Expanding">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
<string>Timeline</string>
|
||||
</property>
|
||||
@@ -258,7 +264,7 @@
|
||||
<item>
|
||||
<widget class="QWidget" name="timeline_area" native="true">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Minimum" vsizetype="Preferred">
|
||||
<sizepolicy hsizetype="Minimum" vsizetype="Minimum">
|
||||
<horstretch>1</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
@@ -364,6 +370,12 @@
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QSplitter" name="splitter">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="orientation">
|
||||
<enum>Qt::Vertical</enum>
|
||||
</property>
|
||||
|
||||
@@ -20,8 +20,7 @@ TimelineHeader::TimelineHeader(QWidget *parent) : QWidget(parent), dragging(fals
|
||||
void TimelineHeader::set_playhead(int mouse_x) {
|
||||
long frame = getFrameFromScreenPoint(zoom, mouse_x);
|
||||
if (snapping) panel_timeline->snap_to_clip(&frame, false);
|
||||
panel_timeline->seek(frame);
|
||||
panel_timeline->repaint_timeline();
|
||||
panel_timeline->seek(frame);
|
||||
}
|
||||
|
||||
void TimelineHeader::set_visible_in(long i) {
|
||||
|
||||
@@ -1565,7 +1565,7 @@ void TimelineWidget::redraw_clips() {
|
||||
}
|
||||
}
|
||||
int panel_width = panel_timeline->getTimelineScreenPointFromFrame(end_frame) + 100;
|
||||
int panel_height = 0;
|
||||
int panel_height = 100;
|
||||
if (bottom_align) {
|
||||
for (int i=-1;i>=video_track_limit;i--) {
|
||||
panel_height += panel_timeline->calculate_track_height(i, -1);
|
||||
@@ -1577,7 +1577,7 @@ void TimelineWidget::redraw_clips() {
|
||||
}
|
||||
|
||||
if (minimumWidth() != panel_width || clip_pixmap.height() != height() || panel_height != minimumHeight()) {
|
||||
panel_timeline->ui->headers->setMinimumWidth(panel_width);
|
||||
panel_timeline->ui->headers->setMinimumWidth(panel_width + 100);
|
||||
setMinimumWidth(panel_width);
|
||||
setMinimumHeight(panel_height);
|
||||
clip_pixmap = QPixmap(qMax(width(), panel_width), qMax(height(), panel_height));
|
||||
|
||||
Reference in New Issue
Block a user