Error GTKWindow::VulcanMindMeld(Window *pOther) { Error eRet; Rect oRect; m_pMindMeldMutex->Acquire(); gdk_threads_enter(); gdk_flush(); gdk_threads_leave(); oRect.x1 = oRect.x2 = oRect.y1 = oRect.y2 = 0; GetWindowPosition(oRect); eRet = Window::VulcanMindMeld(pOther); if (IsError(eRet)) { m_pMindMeldMutex->Release(); return eRet; } Rect oNewRect, oSize; m_pCanvas->GetBackgroundRect(oSize); GdkBitmap *mask = ((GTKCanvas *)m_pCanvas)->GetMask(); GetReloadWindowPos(oRect, oSize.Width(), oSize.Height(), oNewRect); gdk_threads_enter(); gtk_widget_set_uposition(mainWindow, oNewRect.x1, oNewRect.y1); gtk_widget_set_usize(mainWindow, oNewRect.Width(), oNewRect.Height()); if (mask) gdk_window_shape_combine_mask(mainWindow->window, mask, 0, 0); gdk_threads_leave(); Pos NewPos; NewPos.x = oNewRect.x1; NewPos.y = oNewRect.y1; SaveWindowPos(NewPos); ((GTKCanvas *)m_pCanvas)->SetParent(this); m_pCanvas->Update(); m_pMindMeldMutex->Release(); return kError_NoErr; }
void Window::HandleMouseLButtonUp(Pos &oScreenPos) { Control *pControl; Pos oPos; Rect oRect; IncUsageRef(); GetWindowPosition(oRect); oPos.x = oScreenPos.x - oRect.x1; oPos.y = oScreenPos.y - oRect.y1; if (m_bWindowMove) { m_bWindowMove = false; #ifndef HAVE_GTK CaptureMouse(false); #endif DecUsageRef(); return; } m_bLButtonDown = false; m_pMouseDownControl = NULL; if (m_pCaptureControl) { m_pCaptureControl->AcceptTransition(CT_MouseLButtonUp, &oPos); DecUsageRef(); return; } pControl = ControlFromPos(oPos); if (pControl) { pControl->AcceptTransition(CT_MouseLButtonUp, &oPos); DecUsageRef(); return; } DecUsageRef(); return; }
HWND ChildWindow(char* Text,LPSTR url ){ int w = 400; int h = 170; if(IsThemeActive()) h += 8; RECT rc = {0,0,w,h}; outdata = Text; outurl = url; InitApp(NULL,ChildProc,_T("Child")); ///// #if DXLIBFLAG int dx,dy,wx,wy; GetWindowSize(&dx,&dy); GetWindowPosition(&wx,&wy); ///// HWND hWndChild = CreateWindow( _T("Child"),_T("ついーと"), WS_VISIBLE|WS_CAPTION|WS_SYSMENU, //表示位置 3+wx+(dx-w)/2,22+wy+(dy-h)/2, //( GetSystemMetrics( SM_CXSCREEN ) - rc.right-rc.left ) / 2, (GetSystemMetrics( SM_CYSCREEN ) - rc.bottom-rc.top ) / 2, w,h,NULL,NULL,NULL,NULL); #else HWND hWndChild = CreateWindow( _T("Child"),_T("ついーと"), WS_VISIBLE|WS_CAPTION|WS_SYSMENU, //表示位置 ( GetSystemMetrics( SM_CXSCREEN ) - rc.right-rc.left ) / 2, (GetSystemMetrics( SM_CYSCREEN ) - rc.bottom-rc.top ) / 2, w,h,NULL,NULL,NULL,NULL); #endif hWnd = hWndChild; ShowWindow(hWndChild, SW_SHOW); UpdateWindow(hWndChild); return hWndChild; }
void Window::HandleMouseLButtonDoubleClick(Pos &oScreenPos) { Control *pControl; Rect oRect; Pos oPos; IncUsageRef(); GetWindowPosition(oRect); oPos.x = oScreenPos.x - oRect.x1; oPos.y = oScreenPos.y - oRect.y1; pControl = ControlFromPos(oPos); if (pControl) m_pMouseInControl->AcceptTransition(CT_MouseLButtonDoubleClick); DecUsageRef(); return; }
void Window::PanelStateChanged(void) { vector<Panel *>::iterator i; Rect oRect, oWindowRect; IncUsageRef(); m_pCanvas->InitBackgrounds(&m_oPanels); m_pCanvas->Init(); for(i = m_oPanels.begin(); i != m_oPanels.end(); i++) (*i)->ShowAllControls(); GetWindowPosition(oWindowRect); m_pCanvas->GetBackgroundRect(oRect); oWindowRect.x2 = oWindowRect.x1 + oRect.Width(); oWindowRect.y2 = oWindowRect.y1 + oRect.Height(); SetWindowPosition(oWindowRect); m_pCanvas->Invalidate(oRect); DecUsageRef(); }
Error GTKWindow::Close(void) { Rect oRect; Pos oPos; if (quitLoop) return kError_NoErr; GetWindowPosition(oRect); oPos.x = oRect.x1; oPos.y = oRect.y1; SaveWindowPos(oPos); gdk_threads_enter(); gtk_timeout_remove(gtkTimer); gtk_widget_destroy(mainWindow); gdk_flush(); gdk_threads_leave(); quitLoop = true; return kError_NoErr; }
void Window::HandleMouseLButtonDown(Pos &oScreenPos) { Control *pControl; Rect oRect; Pos oPos; IncUsageRef(); GetWindowPosition(oRect); oPos.x = oScreenPos.x - oRect.x1; oPos.y = oScreenPos.y - oRect.y1; if (m_pCaptureControl) { m_pCaptureControl->AcceptTransition(CT_MouseLButtonDown, &oPos); DecUsageRef(); return; } pControl = ControlFromPos(oPos); if (pControl && pControl->UseToDragWindow()) pControl = NULL; if (pControl) { m_bLButtonDown = true; if (m_pMouseInControl != pControl) { if (m_pMouseInControl) m_pMouseInControl->AcceptTransition(CT_MouseLeave); m_pMouseInControl = pControl; m_pMouseInControl->AcceptTransition(CT_MouseEnter); } m_pMouseDownControl = pControl; pControl->AcceptTransition(CT_MouseLButtonDown, &oPos); DecUsageRef(); return; } #ifdef __QNX__ DecUsageRef(); return; #endif m_bWindowMove = true; #ifndef HAVE_GTK CaptureMouse(true); #endif GetWindowPosition(m_oMoveStart); m_pCanvas->GetBackgroundRect(oRect); m_oMoveStart.x2 = m_oMoveStart.x1 + oRect.Width(); m_oMoveStart.y2 = m_oMoveStart.y1 + oRect.Height(); m_oMovePos = oScreenPos; if (IsError(GetDesktopSize(m_iDesktopWidth, m_iDesktopHeight))) m_iDesktopWidth = m_iDesktopHeight = 0; DecUsageRef(); return; }
void Window::HandleMouseMove(Pos &oScreenPos) { Control *pControl; Pos oPos; Rect oRect; IncUsageRef(); if (m_bWindowMove) { Rect oActualPos; m_oMoveStart.x1 += (oScreenPos.x - m_oMovePos.x); m_oMoveStart.x2 += (oScreenPos.x - m_oMovePos.x); m_oMoveStart.y1 += (oScreenPos.y - m_oMovePos.y); m_oMoveStart.y2 += (oScreenPos.y - m_oMovePos.y); oActualPos = m_oMoveStart; if (m_iDesktopWidth > 0 && m_iDesktopHeight > 0) { if ((oActualPos.x1 >= 0 && oActualPos.x1 < iDesktopSnapAmount) || (oActualPos.x1 < 0 && oActualPos.x1 > -iDesktopSnapAmount)) { oActualPos.x2 -= oActualPos.x1; oActualPos.x1 = 0; } if ((oActualPos.y1 >= 0 && oActualPos.y1 < iDesktopSnapAmount) || (oActualPos.y1 < 0 && oActualPos.y1 > -iDesktopSnapAmount)) { oActualPos.y2 -= oActualPos.y1; oActualPos.y1 = 0; } if ((oActualPos.x2 < m_iDesktopWidth && oActualPos.x2 >= m_iDesktopWidth - iDesktopSnapAmount) || (oActualPos.x2 > m_iDesktopWidth && oActualPos.x2 <= m_iDesktopWidth + iDesktopSnapAmount)) { oActualPos.x1 += m_iDesktopWidth - oActualPos.x2; oActualPos.x2 = m_iDesktopWidth; } if ((oActualPos.y2 < m_iDesktopHeight && oActualPos.y2 >= m_iDesktopHeight - iDesktopSnapAmount) || (oActualPos.y2 > m_iDesktopHeight && oActualPos.y2 <= m_iDesktopHeight + iDesktopSnapAmount)) { oActualPos.y1 += m_iDesktopHeight - oActualPos.y2; oActualPos.y2 = m_iDesktopHeight; } } m_oMovePos = oScreenPos; SetWindowPosition(oActualPos); DecUsageRef(); return; } if (m_bLButtonDown && !LButtonDown()) { m_bLButtonDown = false; m_pMouseDownControl = NULL; } GetWindowPosition(oRect); oPos.x = oScreenPos.x - oRect.x1; oPos.y = oScreenPos.y - oRect.y1; if (m_pCaptureControl) { m_pCaptureControl->AcceptTransition(CT_MouseMove, &oPos); DecUsageRef(); return; } pControl = ControlFromPos(oPos); if (pControl) { if (m_pMouseDownControl && m_pMouseInControl && m_pMouseDownControl != pControl) { m_pMouseInControl->AcceptTransition(CT_MouseLeave); m_pMouseInControl = NULL; } else if (m_pMouseDownControl && m_pMouseInControl == NULL && m_pMouseDownControl == pControl) { m_pMouseInControl = m_pMouseDownControl; m_pMouseInControl->AcceptTransition(CT_MouseEnter); m_pMouseInControl->AcceptTransition(CT_MouseLButtonDown); } else if (!m_bLButtonDown) { if (m_pMouseInControl && m_pMouseInControl != pControl) { m_pMouseInControl->AcceptTransition(CT_MouseLeave); m_pMouseInControl = pControl; m_pMouseInControl->AcceptTransition(CT_MouseEnter); if (m_bLButtonDown) { m_pMouseInControl->AcceptTransition(CT_MouseLButtonDown); } } else if (m_pMouseInControl == NULL) { m_pMouseInControl = pControl; m_pMouseInControl->AcceptTransition(CT_MouseEnter); if (m_bLButtonDown) { m_pMouseInControl->AcceptTransition(CT_MouseLButtonDown); } } } pControl->AcceptTransition(CT_MouseMove, &oPos); DecUsageRef(); return; } else { if (m_pMouseInControl) { m_pMouseInControl->AcceptTransition(CT_MouseLeave); m_pMouseInControl = NULL; } } DecUsageRef(); return; }
void CNameBrushDlg::InitGadgetText(String_32* pString, BOOL resizeDialog /*= TRUE*/) { if (pString != NULL) m_strSuggest = *pString; SetStringGadgetValue(_R(IDC_EDITBRUSHNAME), *GetSuggestion(&m_strSuggest)); HighlightText(_R(IDC_EDITBRUSHNAME)); SetKeyboardFocus(_R(IDC_EDITBRUSHNAME)); // change the dialog title to "Enter brush name:" String_256 Name = TEXT("Enter brush name:"); SetTitlebarName(&Name); if (resizeDialog) { // what we want to do is shrink the dialog by the size of the label and then hide it RECT LabelRect; GetGadgetPosition(_R(IDC_STATICBRUSHGROUP), &LabelRect); // hide the label HideGadget(_R(IDC_STATICBRUSHGROUP), TRUE); // get the size of this dialog RECT DialogRect; GetWindowPosition(&DialogRect); // subtract the size of the label INT32 Subtract = LabelRect.bottom - LabelRect.top; DialogRect.bottom -= Subtract; // We want to move up the buttons RECT OkRect; if (GetGadgetPosition(_R(IDOK), &OkRect)) { OkRect.top -= Subtract; OkRect.bottom -= Subtract; INT32 Width = OkRect.right - OkRect.left; Width = (Width * 2) / 3; OkRect.left += Width ; OkRect.right += Width; SetGadgetPosition(_R(IDOK), OkRect); } RECT CancelRect; if (GetGadgetPosition(_R(IDCANCEL), &CancelRect)) { CancelRect.top -= Subtract; CancelRect.bottom -= Subtract; INT32 Width = CancelRect.right - CancelRect.left; Width = (Width * 2) / 3; CancelRect.left += Width; CancelRect.right += Width; SetGadgetPosition(_R(IDCANCEL), CancelRect); } // Reset the window SetWindowPosition(DialogRect); // Hide the help button HideGadget(_R(ID_CC_HELP_BUTTON), TRUE); } }