void TStyleSelection::toggleLink() { if (!m_palette || m_pageIndex < 0) return; int n = m_styleIndicesInPage.size(); if (n <= 0) return; bool somethingHasBeenLinked = false; bool currentStyleIsInSelection = false; TApp *app = TApp::instance(); TPaletteHandle *ph = app->getCurrentPalette(); TPalette::Page *page = m_palette->getPage(m_pageIndex); assert(page); for (std::set<int>::iterator it = m_styleIndicesInPage.begin(); it != m_styleIndicesInPage.end(); ++it) { TColorStyle *cs = page->getStyle(*it); assert(cs); wstring name = cs->getGlobalName(); if (name != L"" && (name[0] == L'-' || name[0] == L'+')) { name[0] = name[0] == L'-' ? L'+' : L'-'; cs->setGlobalName(name); if (name[0] == L'+') somethingHasBeenLinked = true; } if (*it == m_palette->getPage(m_pageIndex)->search(ph->getStyleIndex())) currentStyleIsInSelection = true; } if (somethingHasBeenLinked) StudioPalette::instance()->updateLinkedColors(m_palette.getPointer()); ph->notifyPaletteChanged(); if (currentStyleIsInSelection) ph->notifyColorStyleSwitched(); // DA FARE: e' giusto mettere la nofica del dirty flag a current scene // o e' meglio farlo al livello corrente!? app->getCurrentScene()->setDirtyFlag(true); // extern void setPaletteDirtyFlag(); // setPaletteDirtyFlag(); }