mirror of
https://gitlab.com/mbunkus/mkvtoolnix.git
synced 2025-02-26 08:22:31 +00:00
Only fix mandatory track elements after everything else has been done
Fix for bug 711.
This commit is contained in:
parent
0050735031
commit
ace2654f77
@ -1,5 +1,9 @@
|
||||
2012-01-27 Moritz Bunkus <moritz@bunkus.org>
|
||||
|
||||
* mmg: bug fix: The header editor was sometimes creating two
|
||||
instances of an element if an element was added to the second or
|
||||
one of the later tracks. Fix for bug 711.
|
||||
|
||||
* mkvpropedit, mmg: bug fix: Trying to modify a file located in a
|
||||
path mounted with GVFS SFTP will no longer crash the
|
||||
programs. Instead an error message is output if an error
|
||||
|
@ -346,6 +346,8 @@ header_editor_frame_c::handle_tracks(kax_analyzer_data_c *data) {
|
||||
if (!m_e_tracks)
|
||||
return;
|
||||
|
||||
he_track_type_page_c *last_track_page = NULL;
|
||||
|
||||
KaxTracks *kax_tracks = static_cast<KaxTracks *>(m_e_tracks.get_object());
|
||||
int track_type = -1;
|
||||
size_t i;
|
||||
@ -366,7 +368,8 @@ header_editor_frame_c::handle_tracks(kax_analyzer_data_c *data) {
|
||||
wxString title;
|
||||
track_type = uint64(*k_track_type);
|
||||
|
||||
he_track_type_page_c *page = new he_track_type_page_c(this, track_type, track_number, m_e_tracks);
|
||||
he_track_type_page_c *page = new he_track_type_page_c(this, track_type, track_number, m_e_tracks, *k_track_entry);
|
||||
last_track_page = page;
|
||||
page->init();
|
||||
|
||||
he_value_page_c *child_page;
|
||||
@ -500,6 +503,9 @@ header_editor_frame_c::handle_tracks(kax_analyzer_data_c *data) {
|
||||
|
||||
// m_tc_tree->ExpandAllChildren(page->m_page_id);
|
||||
}
|
||||
|
||||
if (NULL != last_track_page)
|
||||
last_track_page->set_is_last_track(true);
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -21,7 +21,6 @@
|
||||
|
||||
#include "common/ebml.h"
|
||||
#include "common/segmentinfo.h"
|
||||
#include "common/segment_tracks.h"
|
||||
#include "common/wx.h"
|
||||
#include "mmg/header_editor/frame.h"
|
||||
#include "mmg/header_editor/top_level_page.h"
|
||||
@ -49,8 +48,5 @@ he_top_level_page_c::do_modifications() {
|
||||
if (is_id(m_l1_element, KaxInfo))
|
||||
fix_mandatory_segmentinfo_elements(m_l1_element.get_object());
|
||||
|
||||
else if (is_id(m_l1_element, KaxTracks))
|
||||
fix_mandatory_segment_tracks_elements(m_l1_element.get_object());
|
||||
|
||||
m_l1_element->UpdateSize(true);
|
||||
}
|
||||
|
@ -21,16 +21,20 @@
|
||||
#include <matroska/KaxTrackEntryData.h>
|
||||
|
||||
#include "common/common_pch.h"
|
||||
#include "common/segment_tracks.h"
|
||||
#include "common/wx.h"
|
||||
#include "mmg/header_editor/track_type_page.h"
|
||||
|
||||
he_track_type_page_c::he_track_type_page_c(header_editor_frame_c *parent,
|
||||
int track_type,
|
||||
unsigned int track_number,
|
||||
ebml_element_cptr l1_element)
|
||||
ebml_element_cptr l1_element,
|
||||
KaxTrackEntry &track_entry)
|
||||
: he_top_level_page_c(parent, "" , l1_element)
|
||||
, m_track_type(track_type)
|
||||
, m_track_number(track_number)
|
||||
, m_track_entry(track_entry)
|
||||
, m_is_last_track(false)
|
||||
{
|
||||
}
|
||||
|
||||
@ -59,3 +63,19 @@ he_track_type_page_c::translate_ui() {
|
||||
|
||||
he_top_level_page_c::translate_ui();
|
||||
}
|
||||
|
||||
void
|
||||
he_track_type_page_c::do_modifications() {
|
||||
he_page_base_c::do_modifications();
|
||||
|
||||
if (!m_is_last_track)
|
||||
return;
|
||||
|
||||
fix_mandatory_segment_tracks_elements(m_l1_element.get_object());
|
||||
m_l1_element->UpdateSize(true);
|
||||
}
|
||||
|
||||
void
|
||||
he_track_type_page_c::set_is_last_track(bool is_last_track) {
|
||||
m_is_last_track = is_last_track;
|
||||
}
|
||||
|
@ -24,12 +24,17 @@ class he_track_type_page_c: public he_top_level_page_c {
|
||||
public:
|
||||
int m_track_type;
|
||||
unsigned int m_track_number;
|
||||
KaxTrackEntry &m_track_entry;
|
||||
bool m_is_last_track;
|
||||
|
||||
public:
|
||||
he_track_type_page_c(header_editor_frame_c *parent, int track_type, unsigned int track_number, ebml_element_cptr l1_element);
|
||||
he_track_type_page_c(header_editor_frame_c *parent, int track_type, unsigned int track_number, ebml_element_cptr l1_element, KaxTrackEntry &track_entry);
|
||||
virtual ~he_track_type_page_c();
|
||||
|
||||
virtual void translate_ui();
|
||||
|
||||
virtual void set_is_last_track(bool is_last_track);
|
||||
virtual void do_modifications();
|
||||
};
|
||||
|
||||
#endif // __HE_TRACK_TYPE_PAGE_H
|
||||
|
Loading…
Reference in New Issue
Block a user