pidgin/win32/gtkwin32dep.c

branch
release-2.x.y
changeset 37778
694ec370d84a
parent 37565
fa3c41b69e47
child 37901
41e45e18f3b2
equal deleted inserted replaced
37777:f2269fc0a52c 37778:694ec370d84a
463 463
464 CopyRect(workingAreaRc, &(info.rcWork)); 464 CopyRect(workingAreaRc, &(info.rcWork));
465 return TRUE; 465 return TRUE;
466 } 466 }
467 467
468 void winpidgin_ensure_onscreen(GtkWidget *win) {
469 RECT winR, wAR, intR;
470 HWND hwnd = GDK_WINDOW_HWND(win->window);
471 typedef HRESULT (WINAPI* DwmIsCompositionEnabledFunction)(BOOL*); 468 typedef HRESULT (WINAPI* DwmIsCompositionEnabledFunction)(BOOL*);
472 typedef HRESULT (WINAPI* DwmGetWindowAttributeFunction)(HWND, DWORD, PVOID, DWORD); 469 typedef HRESULT (WINAPI* DwmGetWindowAttributeFunction)(HWND, DWORD, PVOID, DWORD);
473 static HMODULE dwmapi_module = NULL; 470 static HMODULE dwmapi_module = NULL;
474 static DwmIsCompositionEnabledFunction DwmIsCompositionEnabled = NULL; 471 static DwmIsCompositionEnabledFunction DwmIsCompositionEnabled = NULL;
475 static DwmGetWindowAttributeFunction DwmGetWindowAttribute = NULL; 472 static DwmGetWindowAttributeFunction DwmGetWindowAttribute = NULL;
479 476
480 static RECT 477 static RECT
481 get_actualWindowRect(HWND hwnd) 478 get_actualWindowRect(HWND hwnd)
482 { 479 {
483 RECT winR; 480 RECT winR;
484 481
485 GetWindowRect(hwnd, &winR); 482 GetWindowRect(hwnd, &winR);
486 483
487 if (dwmapi_module == NULL) { 484 if (dwmapi_module == NULL) {
488 dwmapi_module = GetModuleHandleW(L"dwmapi.dll"); 485 dwmapi_module = GetModuleHandleW(L"dwmapi.dll");
489 if (dwmapi_module != NULL) { 486 if (dwmapi_module != NULL) {
490 DwmIsCompositionEnabled = (DwmIsCompositionEnabledFunction) GetProcAddress(dwmapi_module, "DwmIsCompositionEnabled"); 487 DwmIsCompositionEnabled = (DwmIsCompositionEnabledFunction) GetProcAddress(dwmapi_module, "DwmIsCompositionEnabled");
491 DwmGetWindowAttribute = (DwmGetWindowAttributeFunction) GetProcAddress(dwmapi_module, "DwmGetWindowAttribute"); 488 DwmGetWindowAttribute = (DwmGetWindowAttributeFunction) GetProcAddress(dwmapi_module, "DwmGetWindowAttribute");
492 } 489 }
493 } 490 }
494 491
495 if (DwmIsCompositionEnabled != NULL && DwmGetWindowAttribute != NULL) { 492 if (DwmIsCompositionEnabled != NULL && DwmGetWindowAttribute != NULL) {
496 BOOL pfEnabled; 493 BOOL pfEnabled;
497 if (SUCCEEDED(DwmIsCompositionEnabled(&pfEnabled))) { 494 if (SUCCEEDED(DwmIsCompositionEnabled(&pfEnabled))) {
498 RECT tempR; 495 RECT tempR;
499 if (SUCCEEDED(DwmGetWindowAttribute(hwnd, DWMWA_EXTENDED_FRAME_BOUNDS, &tempR, sizeof(tempR)))) { 496 if (SUCCEEDED(DwmGetWindowAttribute(hwnd, DWMWA_EXTENDED_FRAME_BOUNDS, &tempR, sizeof(tempR)))) {
500 winR = tempR; 497 winR = tempR;
501 } 498 }
502 } 499 }
503 } 500 }
504 501
505 return winR; 502 return winR;
506 } 503 }
507 504
505 void winpidgin_ensure_onscreen(GtkWidget *win) {
506 RECT winR, wAR, intR;
507 HWND hwnd = GDK_WINDOW_HWND(win->window);
508 508
509 g_return_if_fail(hwnd != NULL); 509 g_return_if_fail(hwnd != NULL);
510 winR = get_actualWindowRect(hwnd); 510 winR = get_actualWindowRect(hwnd);
511 511
512 purple_debug_info("win32placement", 512 purple_debug_info("win32placement",

mercurial