Merge branch 'blender-v2.83-release'
authorCampbell Barton <ideasman42@gmail.com>
Thu, 21 May 2020 02:59:55 +0000 (12:59 +1000)
committerCampbell Barton <ideasman42@gmail.com>
Thu, 21 May 2020 02:59:55 +0000 (12:59 +1000)
1  2 
source/blender/windowmanager/intern/wm_event_system.c

index 2133ab7892dede6e509495c828924bd85e4c3c4e,32b6b8b9c4a59e34b05b887fab5fec4e15228561..c7bda0bdae0d53f327aabd2574a2c3cd8d19a48d
@@@ -2669,6 -2669,12 +2669,12 @@@ static int wm_handlers_do_gizmo_handler
    return action;
  }
  
+ /** \} */
+ /* -------------------------------------------------------------------- */
+ /** \name Handle Single Event (All Handler Types)
+  * \{ */
  static int wm_handlers_do_intern(bContext *C, wmEvent *event, ListBase *handlers)
  {
    const bool do_debug_handler =
@@@ -2970,6 -2976,14 +2976,14 @@@ static int wm_handlers_do(bContext *C, 
    return action;
  }
  
+ /** \} */
+ /* -------------------------------------------------------------------- */
+ /** \name Event Queue Utilities
+  *
+  * Utilities used by #wm_event_do_handlers.
+  * \{ */
  static bool wm_event_inside_rect(const wmEvent *event, const rcti *rect)
  {
    if (wm_event_always_pass(event)) {
@@@ -3134,6 -3148,14 +3148,14 @@@ static void wm_event_free_and_remove_fr
    }
  }
  
+ /** \} */
+ /* -------------------------------------------------------------------- */
+ /** \name Main Event Queue (Every Window)
+  *
+  * Handle events for all windows, run from the #WM_main event loop.
+  * \{ */
  /* called in main loop */
  /* goes over entire hierarchy:  events -> window -> screen -> area -> region */
  void wm_event_do_handlers(bContext *C)
            }
  
            if (is_playing_sound == 0) {
 -            const float time = BKE_sound_sync_scene(scene_eval);
 +            const double time = BKE_sound_sync_scene(scene_eval);
              if (isfinite(time)) {
 -              int ncfra = time * (float)FPS + 0.5f;
 +              int ncfra = time * FPS + 0.5;
                if (ncfra != scene->r.cfra) {
                  scene->r.cfra = ncfra;
                  ED_update_for_newframe(CTX_data_main(C), depsgraph);
@@@ -3442,13 -3464,19 +3464,13 @@@ void WM_event_add_fileselect(bContext *
    wmWindowManager *wm = CTX_wm_manager(C);
    wmWindow *win = CTX_wm_window(C);
    const bool is_temp_screen = WM_window_is_temp_screen(win);
 -  const bool opens_window = (U.filebrowser_display_type == USER_TEMP_SPACE_DISPLAY_WINDOW);
 -  /* Don't add the file handler to the temporary window if one is opened, or else it owns the
 -   * handlers for itself, causing dangling pointers once it's destructed through a handler. It has
 -   * a parent which should hold the handlers itself. */
 -  ListBase *modalhandlers = (is_temp_screen && opens_window) ? &win->parent->modalhandlers :
 -                                                               &win->modalhandlers;
  
    /* Close any popups, like when opening a file browser from the splash. */
 -  UI_popup_handlers_remove_all(C, modalhandlers);
 +  UI_popup_handlers_remove_all(C, &win->modalhandlers);
  
    if (!is_temp_screen) {
      /* only allow 1 file selector open per window */
 -    LISTBASE_FOREACH_MUTABLE (wmEventHandler *, handler_base, modalhandlers) {
 +    LISTBASE_FOREACH_MUTABLE (wmEventHandler *, handler_base, &win->modalhandlers) {
        if (handler_base->type == WM_HANDLER_TYPE_OP) {
          wmEventHandler_Op *handler = (wmEventHandler_Op *)handler_base;
          if (handler->is_fileselect == false) {
    handler->context.area = CTX_wm_area(C);
    handler->context.region = CTX_wm_region(C);
  
 -  BLI_addhead(modalhandlers, handler);
 +  BLI_addhead(&win->modalhandlers, handler);
  
    /* check props once before invoking if check is available
     * ensures initial properties are valid */