| | 295 | /* Event debugging stuff. Borrowed from the Knuts Qt patch. */ |
|---|
| | 296 | #ifdef DEBUG |
|---|
| | 297 | |
|---|
| | 298 | # define MY_CASE(a) case a: return #a |
|---|
| | 299 | const char * DarwinDebugEventName (UInt32 ekind) |
|---|
| | 300 | { |
|---|
| | 301 | switch (ekind) |
|---|
| | 302 | { |
|---|
| | 303 | MY_CASE(kEventWindowUpdate ); |
|---|
| | 304 | MY_CASE(kEventWindowDrawContent ); |
|---|
| | 305 | MY_CASE(kEventWindowActivated ); |
|---|
| | 306 | MY_CASE(kEventWindowDeactivated ); |
|---|
| | 307 | MY_CASE(kEventWindowHandleActivate ); |
|---|
| | 308 | MY_CASE(kEventWindowHandleDeactivate ); |
|---|
| | 309 | MY_CASE(kEventWindowGetClickActivation ); |
|---|
| | 310 | MY_CASE(kEventWindowGetClickModality ); |
|---|
| | 311 | MY_CASE(kEventWindowShowing ); |
|---|
| | 312 | MY_CASE(kEventWindowHiding ); |
|---|
| | 313 | MY_CASE(kEventWindowShown ); |
|---|
| | 314 | MY_CASE(kEventWindowHidden ); |
|---|
| | 315 | MY_CASE(kEventWindowCollapsing ); |
|---|
| | 316 | MY_CASE(kEventWindowCollapsed ); |
|---|
| | 317 | MY_CASE(kEventWindowExpanding ); |
|---|
| | 318 | MY_CASE(kEventWindowExpanded ); |
|---|
| | 319 | MY_CASE(kEventWindowZoomed ); |
|---|
| | 320 | MY_CASE(kEventWindowBoundsChanging ); |
|---|
| | 321 | MY_CASE(kEventWindowBoundsChanged ); |
|---|
| | 322 | MY_CASE(kEventWindowResizeStarted ); |
|---|
| | 323 | MY_CASE(kEventWindowResizeCompleted ); |
|---|
| | 324 | MY_CASE(kEventWindowDragStarted ); |
|---|
| | 325 | MY_CASE(kEventWindowDragCompleted ); |
|---|
| | 326 | MY_CASE(kEventWindowClosed ); |
|---|
| | 327 | MY_CASE(kEventWindowTransitionStarted ); |
|---|
| | 328 | MY_CASE(kEventWindowTransitionCompleted ); |
|---|
| | 329 | MY_CASE(kEventWindowClickDragRgn ); |
|---|
| | 330 | MY_CASE(kEventWindowClickResizeRgn ); |
|---|
| | 331 | MY_CASE(kEventWindowClickCollapseRgn ); |
|---|
| | 332 | MY_CASE(kEventWindowClickCloseRgn ); |
|---|
| | 333 | MY_CASE(kEventWindowClickZoomRgn ); |
|---|
| | 334 | MY_CASE(kEventWindowClickContentRgn ); |
|---|
| | 335 | MY_CASE(kEventWindowClickProxyIconRgn ); |
|---|
| | 336 | MY_CASE(kEventWindowClickToolbarButtonRgn ); |
|---|
| | 337 | MY_CASE(kEventWindowClickStructureRgn ); |
|---|
| | 338 | MY_CASE(kEventWindowCursorChange ); |
|---|
| | 339 | MY_CASE(kEventWindowCollapse ); |
|---|
| | 340 | MY_CASE(kEventWindowCollapseAll ); |
|---|
| | 341 | MY_CASE(kEventWindowExpand ); |
|---|
| | 342 | MY_CASE(kEventWindowExpandAll ); |
|---|
| | 343 | MY_CASE(kEventWindowClose ); |
|---|
| | 344 | MY_CASE(kEventWindowCloseAll ); |
|---|
| | 345 | MY_CASE(kEventWindowZoom ); |
|---|
| | 346 | MY_CASE(kEventWindowZoomAll ); |
|---|
| | 347 | MY_CASE(kEventWindowContextualMenuSelect ); |
|---|
| | 348 | MY_CASE(kEventWindowPathSelect ); |
|---|
| | 349 | MY_CASE(kEventWindowGetIdealSize ); |
|---|
| | 350 | MY_CASE(kEventWindowGetMinimumSize ); |
|---|
| | 351 | MY_CASE(kEventWindowGetMaximumSize ); |
|---|
| | 352 | MY_CASE(kEventWindowConstrain ); |
|---|
| | 353 | MY_CASE(kEventWindowHandleContentClick ); |
|---|
| | 354 | MY_CASE(kEventWindowGetDockTileMenu ); |
|---|
| | 355 | MY_CASE(kEventWindowProxyBeginDrag ); |
|---|
| | 356 | MY_CASE(kEventWindowProxyEndDrag ); |
|---|
| | 357 | MY_CASE(kEventWindowToolbarSwitchMode ); |
|---|
| | 358 | MY_CASE(kEventWindowFocusAcquired ); |
|---|
| | 359 | MY_CASE(kEventWindowFocusRelinquish ); |
|---|
| | 360 | MY_CASE(kEventWindowFocusContent ); |
|---|
| | 361 | MY_CASE(kEventWindowFocusToolbar ); |
|---|
| | 362 | MY_CASE(kEventWindowFocusDrawer ); |
|---|
| | 363 | MY_CASE(kEventWindowSheetOpening ); |
|---|
| | 364 | MY_CASE(kEventWindowSheetOpened ); |
|---|
| | 365 | MY_CASE(kEventWindowSheetClosing ); |
|---|
| | 366 | MY_CASE(kEventWindowSheetClosed ); |
|---|
| | 367 | MY_CASE(kEventWindowDrawerOpening ); |
|---|
| | 368 | MY_CASE(kEventWindowDrawerOpened ); |
|---|
| | 369 | MY_CASE(kEventWindowDrawerClosing ); |
|---|
| | 370 | MY_CASE(kEventWindowDrawerClosed ); |
|---|
| | 371 | MY_CASE(kEventWindowDrawFrame ); |
|---|
| | 372 | MY_CASE(kEventWindowDrawPart ); |
|---|
| | 373 | MY_CASE(kEventWindowGetRegion ); |
|---|
| | 374 | MY_CASE(kEventWindowHitTest ); |
|---|
| | 375 | MY_CASE(kEventWindowInit ); |
|---|
| | 376 | MY_CASE(kEventWindowDispose ); |
|---|
| | 377 | MY_CASE(kEventWindowDragHilite ); |
|---|
| | 378 | MY_CASE(kEventWindowModified ); |
|---|
| | 379 | MY_CASE(kEventWindowSetupProxyDragImage ); |
|---|
| | 380 | MY_CASE(kEventWindowStateChanged ); |
|---|
| | 381 | MY_CASE(kEventWindowMeasureTitle ); |
|---|
| | 382 | MY_CASE(kEventWindowDrawGrowBox ); |
|---|
| | 383 | MY_CASE(kEventWindowGetGrowImageRegion ); |
|---|
| | 384 | MY_CASE(kEventWindowPaint ); |
|---|
| | 385 | } |
|---|
| | 386 | static char s_sz[64]; |
|---|
| | 387 | sprintf(s_sz, "kind=%u", (uint)ekind); |
|---|
| | 388 | return s_sz; |
|---|
| | 389 | } |
|---|
| | 390 | # undef MY_CASE |
|---|
| | 391 | |
|---|
| | 392 | /* Convert a class into the 4 char code defined in |
|---|
| | 393 | * 'Developer/Headers/CFMCarbon/CarbonEvents.h' to |
|---|
| | 394 | * identify the event. */ |
|---|
| | 395 | const char * darwinDebugClassName (UInt32 eclass) |
|---|
| | 396 | { |
|---|
| | 397 | char *pclass = (char*)&eclass; |
|---|
| | 398 | static char s_sz[11]; |
|---|
| | 399 | sprintf(s_sz, "class=%c%c%c%c", pclass[3], |
|---|
| | 400 | pclass[2], |
|---|
| | 401 | pclass[1], |
|---|
| | 402 | pclass[0]); |
|---|
| | 403 | return s_sz; |
|---|
| | 404 | } |
|---|
| | 405 | |
|---|
| | 406 | void darwinDebugPrintEvent (const char *psz, EventRef event) |
|---|
| | 407 | { |
|---|
| | 408 | if (!event) |
|---|
| | 409 | return; |
|---|
| | 410 | UInt32 ekind = GetEventKind (event), eclass = GetEventClass (event); |
|---|
| | 411 | if (eclass == kEventClassWindow) |
|---|
| | 412 | { |
|---|
| | 413 | switch (ekind) |
|---|
| | 414 | { |
|---|
| | 415 | case kEventWindowDrawContent: |
|---|
| | 416 | case kEventWindowUpdate: |
|---|
| | 417 | case kEventWindowBoundsChanged: |
|---|
| | 418 | break; |
|---|
| | 419 | default: |
|---|
| | 420 | { |
|---|
| | 421 | WindowRef wid = NULL; |
|---|
| | 422 | GetEventParameter(event, kEventParamDirectObject, typeWindowRef, NULL, sizeof(WindowRef), NULL, &wid); |
|---|
| | 423 | QWidget *widget = QWidget::find((WId)wid); |
|---|
| | 424 | printf("%d %s: (%s) %#x win=%p wid=%p (%s)\n", (int)time(NULL), psz, darwinDebugClassName (eclass), (uint)ekind, wid, widget, DarwinDebugEventName (ekind)); |
|---|
| | 425 | break; |
|---|
| | 426 | } |
|---|
| | 427 | } |
|---|
| | 428 | } |
|---|
| | 429 | else if (eclass == kEventClassCommand) |
|---|
| | 430 | { |
|---|
| | 431 | WindowRef wid = NULL; |
|---|
| | 432 | GetEventParameter(event, kEventParamDirectObject, typeWindowRef, NULL, sizeof(WindowRef), NULL, &wid); |
|---|
| | 433 | QWidget *widget = QWidget::find((WId)wid); |
|---|
| | 434 | const char *name = "Unknown"; |
|---|
| | 435 | switch (ekind) |
|---|
| | 436 | { |
|---|
| | 437 | case kEventCommandProcess: |
|---|
| | 438 | name = "kEventCommandProcess"; |
|---|
| | 439 | break; |
|---|
| | 440 | case kEventCommandUpdateStatus: |
|---|
| | 441 | name = "kEventCommandUpdateStatus"; |
|---|
| | 442 | break; |
|---|
| | 443 | } |
|---|
| | 444 | printf("%d %s: (%s) %#x win=%p wid=%p (%s)\n", (int)time(NULL), psz, darwinDebugClassName (eclass), (uint)ekind, wid, widget, name); |
|---|
| | 445 | } |
|---|
| | 446 | else if (eclass == kEventClassKeyboard) |
|---|
| | 447 | printf("%d %s: %#x(%s) %#x (kEventClassKeyboard)\n", (int)time(NULL), psz, (uint)eclass, darwinDebugClassName (eclass), (uint)ekind); |
|---|
| | 448 | |
|---|
| | 449 | else |
|---|
| | 450 | printf("%d %s: %#x(%s) %#x\n", (int)time(NULL), psz, (uint)eclass, darwinDebugClassName (eclass), (uint)ekind); |
|---|
| | 451 | } |
|---|
| | 452 | |
|---|
| | 453 | #endif /* DEBUG */ |
|---|