| 350 |
350 |
| 351 SHAppBarMessage(ABM_ACTIVATE, &abd); |
351 SHAppBarMessage(ABM_ACTIVATE, &abd); |
| 352 } |
352 } |
| 353 return GDK_FILTER_CONTINUE; |
353 return GDK_FILTER_CONTINUE; |
| 354 } |
354 } |
| |
355 |
| |
356 static void show_hide(GtkAppBar *ab, gboolean hide) { |
| |
357 purple_debug_info("gtkappbar", "show_hide(%d)\n", hide); |
| |
358 |
| |
359 if (hide) { |
| |
360 purple_debug_info("gtkappbar", "hidden\n"); |
| |
361 gtk_appbar_unregister(ab, GDK_WINDOW_HWND(ab->win->window)); |
| |
362 ab->docked = TRUE; |
| |
363 ab->iconized = TRUE; |
| |
364 } else { |
| |
365 ab->iconized = FALSE; |
| |
366 purple_debug_info("gtkappbar", "shown\n"); |
| |
367 ab->docked = FALSE; |
| |
368 gtk_appbar_do_dock(ab, ab->side); |
| |
369 } |
| |
370 |
| |
371 } |
| |
372 |
| 355 /** Notify the system that the appbar's position has changed */ |
373 /** Notify the system that the appbar's position has changed */ |
| 356 static GdkFilterReturn wnd_poschanged(GtkAppBar *ab, GdkXEvent *xevent) { |
374 static GdkFilterReturn wnd_poschanged(GtkAppBar *ab, GdkXEvent *xevent) { |
| 357 if (ab->registered) { |
375 if (ab->registered) { |
| 358 APPBARDATA abd; |
376 APPBARDATA abd; |
| 359 MSG *msg = (MSG*)xevent; |
377 MSG *msg = (MSG*)xevent; |
| |
378 |
| 360 purple_debug(PURPLE_DEBUG_INFO, "gtkappbar", "wnd_poschanged\n"); |
379 purple_debug(PURPLE_DEBUG_INFO, "gtkappbar", "wnd_poschanged\n"); |
| 361 |
380 |
| 362 abd.hWnd = msg->hwnd; |
381 abd.hWnd = msg->hwnd; |
| 363 abd.cbSize = sizeof(APPBARDATA); |
382 abd.cbSize = sizeof(APPBARDATA); |
| 364 |
383 |
| 365 SHAppBarMessage(ABM_WINDOWPOSCHANGED, &abd); |
384 SHAppBarMessage(ABM_WINDOWPOSCHANGED, &abd); |
| |
385 |
| 366 } |
386 } |
| 367 return GDK_FILTER_CONTINUE; |
387 return GDK_FILTER_CONTINUE; |
| 368 } |
388 } |
| 369 /** The window is about to change */ |
389 /** The window is about to change */ |
| 370 static GdkFilterReturn wnd_poschanging(GtkAppBar *ab, GdkXEvent *xevent) { |
390 static GdkFilterReturn wnd_poschanging(GtkAppBar *ab, GdkXEvent *xevent) { |
| 380 wpos->cy = ab->docked_rect.bottom - ab->docked_rect.top; |
400 wpos->cy = ab->docked_rect.bottom - ab->docked_rect.top; |
| 381 if(IsIconic(msg->hwnd)) |
401 if(IsIconic(msg->hwnd)) |
| 382 set_toolbar(msg->hwnd, FALSE); |
402 set_toolbar(msg->hwnd, FALSE); |
| 383 /*return GDK_FILTER_REMOVE;*/ |
403 /*return GDK_FILTER_REMOVE;*/ |
| 384 } |
404 } |
| |
405 |
| |
406 if (ab->docked) { |
| |
407 if (ab->iconized && wpos->flags & SWP_SHOWWINDOW) |
| |
408 show_hide(ab, FALSE); |
| |
409 else if (!ab->iconized && wpos->flags & SWP_HIDEWINDOW) |
| |
410 show_hide(ab, TRUE); |
| |
411 } |
| |
412 |
| 385 return GDK_FILTER_CONTINUE; |
413 return GDK_FILTER_CONTINUE; |
| 386 } |
414 } |
| 387 |
415 |
| 388 static GdkFilterReturn wnd_exitsizemove(GtkAppBar *ab, GdkXEvent *xevent) { |
416 static GdkFilterReturn wnd_exitsizemove(GtkAppBar *ab, GdkXEvent *xevent) { |
| 389 MSG *msg = (MSG*)xevent; |
417 MSG *msg = (MSG*)xevent; |
| 407 |
435 |
| 408 return GDK_FILTER_CONTINUE; |
436 return GDK_FILTER_CONTINUE; |
| 409 } |
437 } |
| 410 |
438 |
| 411 static GdkFilterReturn wnd_showwindow(GtkAppBar *ab, GdkXEvent *xevent) { |
439 static GdkFilterReturn wnd_showwindow(GtkAppBar *ab, GdkXEvent *xevent) { |
| 412 MSG *msg = (MSG*)xevent; |
440 MSG *msg = (MSG*)xevent; |
| 413 |
441 |
| 414 purple_debug(PURPLE_DEBUG_INFO, "gtkappbar", "wnd_showwindow\n"); |
442 purple_debug_info("gtkappbar", "wnd_showwindow\n"); |
| 415 if(msg->wParam && ab->docked) { |
443 if(msg->wParam && ab->docked) { |
| 416 ab->iconized = FALSE; |
444 show_hide(ab, FALSE); |
| 417 purple_debug(PURPLE_DEBUG_INFO, "gtkappbar", "shown\n"); |
445 } else if(!msg->wParam && ab->docked) { |
| 418 ab->docked = FALSE; |
446 show_hide(ab, TRUE); |
| 419 gtk_appbar_do_dock(ab, ab->side); |
447 } |
| 420 } |
448 return GDK_FILTER_CONTINUE; |
| 421 else if(!msg->wParam && ab->docked) { |
449 } |
| 422 purple_debug(PURPLE_DEBUG_INFO, "gtkappbar", "hidden\n"); |
450 |
| 423 gtk_appbar_unregister(ab, GDK_WINDOW_HWND(ab->win->window)); |
|
| 424 ab->docked = TRUE; |
|
| 425 ab->iconized = TRUE; |
|
| 426 } |
|
| 427 return GDK_FILTER_CONTINUE; |
|
| 428 } |
|
| 429 /** The window's size has changed */ |
451 /** The window's size has changed */ |
| 430 static GdkFilterReturn wnd_size(GtkAppBar *ab, GdkXEvent *xevent) { |
452 static GdkFilterReturn wnd_size(GtkAppBar *ab, GdkXEvent *xevent) { |
| 431 MSG *msg = (MSG*)xevent; |
453 MSG *msg = (MSG*)xevent; |
| 432 |
454 |
| 433 purple_debug(PURPLE_DEBUG_INFO, "gtkappbar", "wnd_size\n"); |
455 purple_debug(PURPLE_DEBUG_INFO, "gtkappbar", "wnd_size\n"); |