void DocManager::slotViewFocused( View *view ) { ViewContainer * vc = static_cast<ViewContainer*>(KTechlab::self()->tabWidget()->currentWidget()); if (!vc) view = 0l; if (!view) return; // This function can get called with a view that is not in the current view // container (such as when the user right clicks and then the popup is // destroyed - not too sure why, but this is the easiest way to fix it). if ( view->viewContainer() != vc ) view = vc->activeView(); if ( !view || (View*)p_focusedView == view ) return; if (p_focusedView) slotViewUnfocused(); p_focusedView = view; if ( TextView * textView = dynamic_cast<TextView*>((View*)p_focusedView) ) KTechlab::self()->factory()->addClient( textView->kateView() ); else KTechlab::self()->factory()->addClient( p_focusedView ); Document *document = view->document(); connect( document, SIGNAL(undoRedoStateChanged()), KTechlab::self(), SLOT(slotDocUndoRedoChanged()) ); p_connectedDocument = document; if ( document->type() == Document::dt_circuit || document->type() == Document::dt_flowcode || document->type() == Document::dt_mechanics ) { ItemDocument *cvb = static_cast<ItemDocument*>(view->document()); ItemInterface::self()->slotItemDocumentChanged(cvb); } KTechlab::self()->slotDocUndoRedoChanged(); KTechlab::self()->slotDocModifiedChanged(); KTechlab::self()->requestUpdateCaptions(); }
void DocManager::slotViewUnfocused() { if ( !KTechlab::self() ) return; KTechlab::self()->removeGUIClients(); disableContextActions(); if (!p_focusedView) return; if (p_connectedDocument) { disconnect( p_connectedDocument, SIGNAL(undoRedoStateChanged()), KTechlab::self(), SLOT(slotDocUndoRedoChanged()) ); p_connectedDocument = 0; } ItemInterface::self()->slotItemDocumentChanged(0l); p_focusedView = 0; // KTechlab::self()->setCaption( 0 ); KTechlab::self()->requestUpdateCaptions(); }