diff --git a/ChangeLog b/ChangeLog index 357cd824..e448b2bf 100644 --- a/ChangeLog +++ b/ChangeLog @@ -24635,3 +24635,6 @@ * Changed the 'AUDIO_CARDS.NAME' database field from 'varchar(64)' to 'text'. * Incremented the database version to 373. +2024-02-06 Fred Gleason + * Fixed a regression in rdairplay(1) that could cause the space bar + to fail to start the next main log event. diff --git a/lib/rdtrackerwidget.cpp b/lib/rdtrackerwidget.cpp index 5525da72..a4c143c1 100644 --- a/lib/rdtrackerwidget.cpp +++ b/lib/rdtrackerwidget.cpp @@ -2,7 +2,7 @@ // // Rivendell Voice Tracker // -// (C) Copyright 2002-2022 Fred Gleason +// (C) Copyright 2002-2024 Fred Gleason // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License version 2 as @@ -69,6 +69,7 @@ RDTrackerWidget::RDTrackerWidget(QString *import_path,QWidget *parent) d_menu_clicked_point=-1; d_shift_pressed=false; d_active=false; + d_focus_policy=Qt::WheelFocus; // // Create Palettes @@ -428,6 +429,25 @@ bool RDTrackerWidget::isActive() const } +void RDTrackerWidget::setFocusPolicy(Qt::FocusPolicy pol) +{ + d_focus_policy=pol; + d_play_button->setFocusPolicy(pol); + d_stop_button->setFocusPolicy(pol); + d_track1_button->setFocusPolicy(pol); + d_record_button->setFocusPolicy(pol); + d_track2_button->setFocusPolicy(pol); + d_finished_button->setFocusPolicy(pol); + d_post_button->setFocusPolicy(pol); + d_reset_button->setFocusPolicy(pol); + d_previous_button->setFocusPolicy(pol); + d_next_button->setFocusPolicy(pol); + d_insert_button->setFocusPolicy(pol); + d_delete_button->setFocusPolicy(pol); + d_log_view->setFocusPolicy(pol); +} + + bool RDTrackerWidget::load(const QString &logname) { QString username; @@ -3507,7 +3527,9 @@ void RDTrackerWidget::UpdateControls() d_track1_button->setPalette(d_record_palette); d_record_button->setEnabled(!d_group->name().isEmpty()); d_record_button->setText(tr("Record")); - d_record_button->setFocus(); + if(d_focus_policy!=Qt::NoFocus) { + d_record_button->setFocus(); + } } else { if((logline->transType()==RDLogLine::Segue)) { @@ -3515,7 +3537,9 @@ void RDTrackerWidget::UpdateControls() setEnabled(!d_group->name().isEmpty()); d_track1_button->setText(tr("Start")); d_track1_button->setPalette(d_start_palette); - d_track1_button->setFocus(); + if(d_focus_policy!=Qt::NoFocus) { + d_track1_button->setFocus(); + } d_record_button-> setEnabled(!d_group->name().isEmpty()); d_record_button->setText(tr("Import")); @@ -3528,7 +3552,9 @@ void RDTrackerWidget::UpdateControls() d_record_button-> setEnabled(!d_group->name().isEmpty()); d_record_button->setText(tr("Record")); - d_record_button->setFocus(); + if(d_focus_policy!=Qt::NoFocus) { + d_record_button->setFocus(); + } } } d_track2_button->setDisabled(true); @@ -3553,7 +3579,9 @@ void RDTrackerWidget::UpdateControls() d_track1_button->setPalette(d_start_palette); d_record_button->setEnabled(true); d_record_button->setText(tr("Record")); - d_record_button->setFocus(); + if(d_focus_policy!=Qt::NoFocus) { + d_record_button->setFocus(); + } d_track2_button->setDisabled(true); d_finished_button->setPalette(d_abort_palette); d_finished_button->setText(tr("Abort")); @@ -3578,7 +3606,9 @@ void RDTrackerWidget::UpdateControls() if(d_wave_name[2].isEmpty()) { d_finished_button->setPalette(d_done_palette); d_finished_button->setText(tr("Save")); - d_finished_button->setFocus(); + if(d_focus_policy!=Qt::NoFocus) { + d_finished_button->setFocus(); + } d_track2_button->setDisabled(true); } else { @@ -3598,7 +3628,9 @@ void RDTrackerWidget::UpdateControls() d_finished_button->setPalette(d_done_palette); d_track2_button->setDisabled(true); } - d_track2_button->setFocus(); + if(d_focus_policy!=Qt::NoFocus) { + d_track2_button->setFocus(); + } } d_finished_button->setEnabled(true); d_reset_button->setDisabled(true); @@ -3622,7 +3654,9 @@ void RDTrackerWidget::UpdateControls() d_finished_button->setPalette(d_done_palette); d_finished_button->setText(tr("Save")); d_finished_button->setEnabled(true); - d_finished_button->setFocus(); + if(d_focus_policy!=Qt::NoFocus) { + d_finished_button->setFocus(); + } d_reset_button->setDisabled(true); d_post_button->setDisabled(true); d_insert_button->setDisabled(true); @@ -3650,7 +3684,7 @@ void RDTrackerWidget::UpdateControls() d_stop_button->setEnabled(true); d_next_button->setEnabled(transport_idle); d_previous_button->setEnabled(transport_idle); - if(transport_idle) { + if(transport_idle&&(d_focus_policy!=Qt::NoFocus)) { d_next_button->setFocus(); } d_insert_button->setEnabled(transport_idle&&CanInsertTrack()); @@ -3674,7 +3708,7 @@ void RDTrackerWidget::UpdateControls() d_stop_button->setEnabled(true); d_next_button->setEnabled(transport_idle); d_previous_button->setEnabled(transport_idle); - if(transport_idle) { + if(transport_idle&&(d_focus_policy!=Qt::NoFocus)) { d_next_button->setFocus(); } d_insert_button->setEnabled(transport_idle&&CanInsertTrack()); diff --git a/lib/rdtrackerwidget.h b/lib/rdtrackerwidget.h index ac4ab4d1..54651439 100644 --- a/lib/rdtrackerwidget.h +++ b/lib/rdtrackerwidget.h @@ -2,7 +2,7 @@ // // Rivendell Voice Tracker // -// (C) Copyright 2002-2021 Fred Gleason +// (C) Copyright 2002-2024 Fred Gleason // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License version 2 as @@ -70,6 +70,7 @@ class RDTrackerWidget : public RDWidget QSize sizeHint() const; QSizePolicy sizePolicy() const; bool isActive() const; + void setFocusPolicy(Qt::FocusPolicy pol); signals: void activeChanged(bool state); @@ -219,7 +220,6 @@ class RDTrackerWidget : public RDWidget QPushButton *d_next_button; QPushButton *d_insert_button; QPushButton *d_delete_button; - // QPushButton *d_close_button; RDEventPlayer *d_event_player; unsigned d_tracks; int d_time_remaining; @@ -273,7 +273,7 @@ class RDTrackerWidget : public RDWidget QLabel *d_tracks_remaining_label_label; QLabel *d_time_remaining_label_label; QLabel *d_time_label; - + Qt::FocusPolicy d_focus_policy; bool d_active; }; diff --git a/rdairplay/mode_display.cpp b/rdairplay/mode_display.cpp index 2bb63b8d..4a42c918 100644 --- a/rdairplay/mode_display.cpp +++ b/rdairplay/mode_display.cpp @@ -26,6 +26,8 @@ ModeDisplay::ModeDisplay(QWidget *parent) : RDPushButton(parent) { + setFocusPolicy(Qt::NoFocus); + for(int i=0;iairplayConf()->panels(RDAirPlayConf::StationPanel), rda->airplayConf()->panels(RDAirPlayConf::UserPanel), diff --git a/rdairplay/stop_counter.cpp b/rdairplay/stop_counter.cpp index 8a2b9789..d1e779fe 100644 --- a/rdairplay/stop_counter.cpp +++ b/rdairplay/stop_counter.cpp @@ -28,6 +28,8 @@ StopCounter::StopCounter(QWidget *parent) : RDPushButton(parent) { + setFocusPolicy(Qt::NoFocus); + stop_running=false; stop_text=tr("Next Stop [none]"); diff --git a/rdairplay/voicetracker.cpp b/rdairplay/voicetracker.cpp index 8c5d91b3..98851d93 100644 --- a/rdairplay/voicetracker.cpp +++ b/rdairplay/voicetracker.cpp @@ -27,12 +27,22 @@ VoiceTracker::VoiceTracker(QWidget *parent) : RDWidget(parent) { d_tracker_widget=new RDTrackerWidget(&d_import_path,this); + if(rda->airplayConf()->barAction()==RDAirPlayConf::StartNext) { + d_tracker_widget->setFocusPolicy(Qt::NoFocus); + } + else { + d_tracker_widget->setFocusPolicy(Qt::StrongFocus); + } d_load_button=new QPushButton(tr("Load\nLog"),this); d_load_button->setFont(bigButtonFont()); + d_load_button->setFocusPolicy(Qt::NoFocus); + connect(d_load_button,SIGNAL(clicked()),this,SLOT(loadData())); connect(d_tracker_widget,SIGNAL(activeChanged(bool)), d_load_button,SLOT(setDisabled(bool))); + + setFocusPolicy(Qt::NoFocus); } diff --git a/rdairplay/wall_clock.cpp b/rdairplay/wall_clock.cpp index 5c76ee06..e0b66d59 100644 --- a/rdairplay/wall_clock.cpp +++ b/rdairplay/wall_clock.cpp @@ -29,6 +29,8 @@ WallClock::WallClock(QWidget *parent) : RDPushButton(parent) { + setFocusPolicy(Qt::NoFocus); + previous_time=QTime::currentTime(); show_date=true; check_sync=true;