diff --git a/common/project.cpp b/common/project.cpp index 1614e984..0ba08632 100644 --- a/common/project.cpp +++ b/common/project.cpp @@ -1575,6 +1575,9 @@ void Project::UpdateAllViews() // Returns true if the active view changed. bool Project::SetActiveView(View* view) { + m_ActiveView = view; + return false; + /* if (view == m_ActiveView) return false; @@ -1595,6 +1598,7 @@ bool Project::SetActiveView(View* view) } return true; + */ } ///////////////////////////////////////////////////////////////////////////// @@ -2860,16 +2864,12 @@ void Project::RenderOverlays(int Viewport) void Project::RenderViewports(bool bBackground, bool bLines) { - float x, y, w, h; - int vp; - - glViewport(0, 0, m_nViewX, m_nViewY); glMatrixMode(GL_PROJECTION); glLoadIdentity(); - glOrtho(0, m_nViewX, 0, m_nViewY, -1, 1); + glOrtho(0.0f, m_nViewX, 0.0f, m_nViewY, -1.0f, 1.0f); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); - glTranslatef(0.375, 0.375, 0.0); + glTranslatef(0.375f, 0.375f, 0.0f); if (bLines) { @@ -2879,59 +2879,15 @@ void Project::RenderViewports(bool bBackground, bool bLines) glTexEnvi(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); m_pScreenFont->MakeCurrent(); glEnable(GL_ALPHA_TEST); + glBegin(GL_QUADS); - for (vp = 0; vp < viewports[m_nViewportMode].n; vp++) - { - x = viewports[m_nViewportMode].dim[vp][0] * (float)m_nViewX; - y = viewports[m_nViewportMode].dim[vp][1] * (float)m_nViewY; - w = viewports[m_nViewportMode].dim[vp][2] * (float)(m_nViewX - 1); - h = viewports[m_nViewportMode].dim[vp][3] * (float)(m_nViewY - 1); + m_pScreenFont->PrintText(3.0f, (float)(m_nViewY - 1.0f) - 6.0f, 0.0f, m_pViewCameras[0]->GetName()); - m_pScreenFont->PrintText(x + 3, y + h - 6, 0.0f, m_pViewCameras[vp]->GetName()); - } glEnd(); glDisable(GL_ALPHA_TEST); glDisable(GL_TEXTURE_2D); - - // Borders - if (m_fLineWidth != 1.0f) - glLineWidth (1.0f); - - for (vp = 0; vp < viewports[m_nViewportMode].n; vp++) - { - if (vp == m_nActiveViewport) - continue; - - x = viewports[m_nViewportMode].dim[vp][0] * (float)m_nViewX; - y = viewports[m_nViewportMode].dim[vp][1] * (float)m_nViewY; - w = viewports[m_nViewportMode].dim[vp][2] * (float)(m_nViewX - 1); - h = viewports[m_nViewportMode].dim[vp][3] * (float)(m_nViewY - 1); - - glBegin(GL_LINE_LOOP); - glVertex2f(x, y); - glVertex2f(x+w, y); - glVertex2f(x+w, y+h); - glVertex2f(x, y+h); - glEnd(); - } - - x = viewports[m_nViewportMode].dim[m_nActiveViewport][0] * (float)m_nViewX; - y = viewports[m_nViewportMode].dim[m_nActiveViewport][1] * (float)m_nViewY; - w = viewports[m_nViewportMode].dim[m_nActiveViewport][2] * (float)(m_nViewX - 1); - h = viewports[m_nViewportMode].dim[m_nActiveViewport][3] * (float)(m_nViewY - 1); - - glColor3f(1.0f, 0, 0); - glBegin(GL_LINE_LOOP); - glVertex2f(x, y); - glVertex2f(x+w, y); - glVertex2f(x+w, y+h); - glVertex2f(x, y+h); - glEnd(); - - if (m_fLineWidth != 1.0f) - glLineWidth (m_fLineWidth); } } diff --git a/win/Cadview.cpp b/win/Cadview.cpp index c8bb68dd..72dc4c03 100644 --- a/win/Cadview.cpp +++ b/win/Cadview.cpp @@ -752,8 +752,8 @@ void CCADView::OnKeyUp(UINT nChar, UINT nRepCnt, UINT nFlags) void CCADView::OnActivateView(BOOL bActivate, CView* pActivateView, CView* pDeactiveView) { - if (pActivateView && pActivateView->IsKindOf(RUNTIME_CLASS(CCADView))) - lcGetActiveProject()->SetActiveView(((CCADView*)pActivateView)->m_pView); +// if (pActivateView && pActivateView->IsKindOf(RUNTIME_CLASS(CCADView))) +// lcGetActiveProject()->SetActiveView(((CCADView*)pActivateView)->m_pView); CView::OnActivateView(bActivate, pActivateView, pDeactiveView); } diff --git a/win/Mainfrm.cpp b/win/Mainfrm.cpp index ad7c3946..06bae9f3 100644 --- a/win/Mainfrm.cpp +++ b/win/Mainfrm.cpp @@ -26,8 +26,6 @@ static char THIS_FILE[] = __FILE__; #endif -#define TOOLBAR_VERSION 1 - void mainframe_listener (int message, void *data, void *user) { if (message == LC_MSG_FOCUS_CHANGED) @@ -239,9 +237,6 @@ int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct) EnableDocking(CBRS_ALIGN_ANY); // ShowPane(&m_wndModifyDlg, FALSE, FALSE, FALSE); -// if (theApp.GetProfileInt(_T("Settings"), _T("ToolBarVersion"), 0) == TOOLBAR_VERSION) - // LoadBarState("Toolbars"); - // UpdateMenuAccelerators(); if (m_wndInvisibleToolBar.Create(this, AFX_DEFAULT_TOOLBAR_STYLE, ID_VIEW_INVISIBLE_BAR)) @@ -1349,7 +1344,8 @@ void CMainFrame::UpdateMenuAccelerators() void CMainFrame::OnDropFiles(HDROP hDropInfo) { - SetActiveWindow(); // activate us first ! + SetActiveWindow(); + UINT nFiles = ::DragQueryFile(hDropInfo, (UINT)-1, NULL, 0); if (nFiles > 0) @@ -1359,6 +1355,7 @@ void CMainFrame::OnDropFiles(HDROP hDropInfo) lcGetActiveProject()->OpenProject(szFileName); } + ::DragFinish(hDropInfo); } @@ -1403,8 +1400,12 @@ void CMainFrame::OnViewSplitVertically() NewSplitter->SetColumnInfo(0, Width, 0); NewSplitter->CreateView(0, 1, RUNTIME_CLASS(CCADView), CSize(Width, Height), NULL); + CWnd* NewView = NewSplitter->GetPane(0, 1); + NewView->ModifyStyleEx(0, WS_EX_CLIENTEDGE); + RecalcLayout(); ParentSplitter->RecalcLayout(); + ParentSplitter->Invalidate(); } void CMainFrame::OnViewSplitHorizontally() @@ -1448,8 +1449,13 @@ void CMainFrame::OnViewSplitHorizontally() NewSplitter->SetRowInfo(0, Height, 0); NewSplitter->CreateView(1, 0, RUNTIME_CLASS(CCADView), CSize(Width, Height), NULL); + CWnd* NewView = NewSplitter->GetPane(1, 0); + NewView->ModifyStyleEx(0, WS_EX_CLIENTEDGE); + RecalcLayout(); - ParentSplitter->RecalcLayout();} + ParentSplitter->RecalcLayout(); + ParentSplitter->Invalidate(); +} void CMainFrame::OnViewDeleteView() { @@ -1535,44 +1541,42 @@ void CMainFrame::OnViewDeleteView() void CMainFrame::OnViewResetViews() { - /* - CView* view = GetActiveView(); - CDynamicSplitterWnd* parent = (CDynamicSplitterWnd*)view->GetParent(); + CView* ActiveView = GetActiveView(); - if (!view->IsKindOf(RUNTIME_CLASS(CCADView))) + if (!ActiveView->IsKindOf(RUNTIME_CLASS(CCADView))) + return; + + CWnd* Parent = ActiveView->GetParent(); + + if (Parent == this) + return; + + CDynamicSplitterWnd* ParentSplitter = (CDynamicSplitterWnd*)Parent; + int Row, Col; + + ParentSplitter->GetViewRowCol(ActiveView, &Row, &Col); + ParentSplitter->DetachWindow(Row, Col); + + CWnd* TopSplitter = ParentSplitter; + for (CWnd* NextParent = TopSplitter; NextParent != this; NextParent = NextParent->GetParent()) + TopSplitter = NextParent; + + ParentSplitter->DestroyWindow(); + + for (int i = 0; i < m_SplitterList.GetSize(); i++) { - CWnd* Sibling = &m_wndSplitter; - - while (!Sibling->IsKindOf(RUNTIME_CLASS(CCADView))) - Sibling = ((CDynamicSplitterWnd*)Sibling)->GetPane(0, 0); - - view = (CView*)Sibling; - parent = (CDynamicSplitterWnd*)view->GetParent(); - } - - // Don't do anything if there's only one view. - if (parent != &m_wndSplitter) - { - // Save the active view. - int Row, Col; - parent->GetViewRowCol(view, &Row, &Col); - parent->DetachWindow(Row, Col); - - // Delete all other views. - m_wndSplitter.GetPane(0, 0)->DestroyWindow(); - - for (int i = 0; i < m_SplitterList.GetSize(); i++) + if (m_SplitterList[i] == ParentSplitter) + { delete m_SplitterList[i]; - m_SplitterList.RemoveAll(); - - // Add the active view back. - m_wndSplitter.AttachWindow(view, 0, 0); - m_wndSplitter.RecalcLayout(); - SetActiveView(view); + m_SplitterList.RemoveAt(i); + break; + } } - // Load default view layout. - const char* str = main_window->GetViewLayout(false); - SetViewLayout(NULL, str); - */ + ActiveView->SetDlgCtrlID(AFX_IDW_PANE_FIRST); + ActiveView->SetParent(this); + ActiveView->ShowWindow(SW_SHOW); + ActiveView->InvalidateRect(NULL); + + RecalcLayout(); }