mirror of
https://github.com/ONLYOFFICE/core.git
synced 2026-04-07 13:55:33 +08:00
fix prev
This commit is contained in:
@ -786,12 +786,12 @@ void odf_document::Impl::parse_styles(office_element *element)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if(document)
|
if(document)
|
||||||
{
|
{
|
||||||
office_master_styles * master_style = dynamic_cast<office_master_styles *>( document->office_master_styles_.get() );
|
office_master_styles * master_style = dynamic_cast<office_master_styles *>( document->office_master_styles_.get() );
|
||||||
if (!master_style)
|
if (!master_style)
|
||||||
break;
|
break;
|
||||||
|
unsigned int elements_master_page = master_style->style_master_page_.size();
|
||||||
if(master_style->style_master_page_.size() > 1)
|
if(master_style->style_master_page_.size() > 1)
|
||||||
{
|
{
|
||||||
for (size_t i = 1; i < master_style->style_master_page_.size(); i++)
|
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;
|
continue;
|
||||||
if(ws_style_name == master_page_prev->attlist_.style_name_.get_value_or(L""))
|
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""));
|
context_->styleContainer().set_new_name_master_page(L"",master_page->attlist_.style_name_.get_value_or(L""));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -128,6 +128,22 @@ void office_presentation::xlsx_convert(oox::xlsx_conversion_context & Context)
|
|||||||
Context.end_office_spreadsheet();
|
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)
|
void office_presentation::pptx_convert(oox::pptx_conversion_context & Context)
|
||||||
{
|
{
|
||||||
Context.start_office_presentation();
|
Context.start_office_presentation();
|
||||||
@ -176,10 +192,14 @@ void office_presentation::pptx_convert(oox::pptx_conversion_context & Context)
|
|||||||
{
|
{
|
||||||
office_element_ptr & elm = pages_[i];
|
office_element_ptr & elm = pages_[i];
|
||||||
draw_page* page = dynamic_cast<draw_page*>(elm.get());
|
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++)
|
for(size_t t = 0 ; t < i ; t++)
|
||||||
{
|
{
|
||||||
office_element_ptr & elm_prev_page = pages_[t];
|
office_element_ptr & elm_prev_page = pages_[t];
|
||||||
draw_page* prev_page = dynamic_cast<draw_page*>(elm_prev_page.get());
|
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""))
|
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;
|
page->attlist_.master_page_name_ = (*vec_name_master_page)[pos_in_vec].second;
|
||||||
@ -194,20 +214,10 @@ void office_presentation::pptx_convert(oox::pptx_conversion_context & Context)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
for (size_t i = 0; i < pages_.size(); i++)
|
for (size_t i = 0; i < pages_.size(); i++)
|
||||||
{
|
|
||||||
if(!vec_name_master_page->empty())
|
|
||||||
{
|
{
|
||||||
office_element_ptr & elm = pages_[i];
|
office_element_ptr & elm = pages_[i];
|
||||||
draw_page* page = dynamic_cast<draw_page*>(elm.get());
|
draw_page* page = dynamic_cast<draw_page*>(elm.get());
|
||||||
for(size_t i = 0; i<vec_name_master_page->size();i++)
|
CheckPageLayout(vec_name_master_page,page,true);
|
||||||
{
|
|
||||||
if(page->attlist_.page_layout_name_ == (*vec_name_master_page)[i].first)
|
|
||||||
{
|
|
||||||
page->attlist_.master_page_name_ = (*vec_name_master_page)[i].second;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
pages_[i]->pptx_convert(Context);
|
pages_[i]->pptx_convert(Context);
|
||||||
}
|
}
|
||||||
Context.end_office_presentation();
|
Context.end_office_presentation();
|
||||||
|
|||||||
Reference in New Issue
Block a user