mirror of
https://github.com/ONLYOFFICE/core.git
synced 2026-02-10 18:05:41 +08:00
fix prev
This commit is contained in:
@ -785,13 +785,13 @@ void odf_document::Impl::parse_styles(office_element *element)
|
||||
_CP_LOG << L"[warning] empty styles\n";
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
if(document)
|
||||
{
|
||||
office_master_styles * master_style = dynamic_cast<office_master_styles *>( document->office_master_styles_.get() );
|
||||
if (!master_style)
|
||||
break;
|
||||
unsigned int elements_master_page = master_style->style_master_page_.size();
|
||||
if(master_style->style_master_page_.size() > 1)
|
||||
{
|
||||
for (size_t i = 1; i < master_style->style_master_page_.size(); i++)
|
||||
@ -813,7 +813,7 @@ void odf_document::Impl::parse_styles(office_element *element)
|
||||
continue;
|
||||
if(ws_style_name == master_page_prev->attlist_.style_name_.get_value_or(L""))
|
||||
{
|
||||
master_page->attlist_.style_name_ = ws_style_name + L"_" + std::to_wstring(master_style->style_master_page_.size());
|
||||
master_page->attlist_.style_name_ = ws_style_name + L"_" + std::to_wstring(elements_master_page++);
|
||||
context_->styleContainer().set_new_name_master_page(L"",master_page->attlist_.style_name_.get_value_or(L""));
|
||||
break;
|
||||
}
|
||||
|
||||
@ -128,6 +128,22 @@ void office_presentation::xlsx_convert(oox::xlsx_conversion_context & Context)
|
||||
Context.end_office_spreadsheet();
|
||||
}
|
||||
|
||||
bool CheckPageLayout(std::vector<std::pair<std::wstring,std::wstring>>* vec_name_layout, draw_page* page, bool new_name)
|
||||
{
|
||||
if(vec_name_layout->empty() || !page)
|
||||
return true;
|
||||
for(size_t i = 0; i < vec_name_layout->size();i++)
|
||||
{
|
||||
if((*vec_name_layout)[i].first == page->attlist_.page_layout_name_.get_value_or(L""))
|
||||
{
|
||||
if(new_name)
|
||||
page->attlist_.master_page_name_ = (*vec_name_layout)[i].second;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
void office_presentation::pptx_convert(oox::pptx_conversion_context & Context)
|
||||
{
|
||||
Context.start_office_presentation();
|
||||
@ -176,10 +192,14 @@ void office_presentation::pptx_convert(oox::pptx_conversion_context & Context)
|
||||
{
|
||||
office_element_ptr & elm = pages_[i];
|
||||
draw_page* page = dynamic_cast<draw_page*>(elm.get());
|
||||
if(CheckPageLayout(vec_name_master_page,page,true))
|
||||
continue;
|
||||
for(size_t t = 0 ; t < i ; t++)
|
||||
{
|
||||
office_element_ptr & elm_prev_page = pages_[t];
|
||||
draw_page* prev_page = dynamic_cast<draw_page*>(elm_prev_page.get());
|
||||
if(!prev_page)
|
||||
break;
|
||||
if(page->attlist_.master_page_name_.get_value_or(L"") == prev_page->attlist_.master_page_name_.get_value_or(L"") && page->attlist_.page_layout_name_.get_value_or(L"") != prev_page->attlist_.page_layout_name_.get_value_or(L""))
|
||||
{
|
||||
page->attlist_.master_page_name_ = (*vec_name_master_page)[pos_in_vec].second;
|
||||
@ -195,19 +215,9 @@ void office_presentation::pptx_convert(oox::pptx_conversion_context & Context)
|
||||
}
|
||||
for (size_t i = 0; i < pages_.size(); i++)
|
||||
{
|
||||
if(!vec_name_master_page->empty())
|
||||
{
|
||||
office_element_ptr & elm = pages_[i];
|
||||
draw_page* page = dynamic_cast<draw_page*>(elm.get());
|
||||
for(size_t i = 0; i<vec_name_master_page->size();i++)
|
||||
{
|
||||
if(page->attlist_.page_layout_name_ == (*vec_name_master_page)[i].first)
|
||||
{
|
||||
page->attlist_.master_page_name_ = (*vec_name_master_page)[i].second;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
office_element_ptr & elm = pages_[i];
|
||||
draw_page* page = dynamic_cast<draw_page*>(elm.get());
|
||||
CheckPageLayout(vec_name_master_page,page,true);
|
||||
pages_[i]->pptx_convert(Context);
|
||||
}
|
||||
Context.end_office_presentation();
|
||||
|
||||
Reference in New Issue
Block a user