/**
   * called when visibility of current fragment is (potentially) altered by * * drawer being
   * shown/hidden * * whether buffer is shown in the pager (see MainPagerAdapter) * * availability
   * of buffer & activity * * lifecycle
   */
  public void maybeChangeVisibilityState() {
    if (DEBUG_VISIBILITY) logger.debug("maybeChangeVisibilityState()");
    if (activity == null || buffer == null) return;

    // see if visibility has changed. if it hasn't, do nothing
    boolean obscured = activity.isPagerNoticeablyObscured();
    boolean watched = started && pagerVisible && !obscured;

    if (buffer.isWatched == watched) return;

    // visibility has changed.
    if (watched) {
      highlights = buffer.highlights;
      privates = (buffer.type == Buffer.PRIVATE) ? buffer.unreads : 0;
    }
    buffer.setWatched(watched);
    scrollToHotLineIfNeeded();

    // move the read marker in weechat (if preferences dictate)
    if (!watched && P.hotlistSync) {
      EventBus.getDefault()
          .post(new SendMessageEvent("input " + buffer.fullName + " /buffer set hotlist -1"));
      EventBus.getDefault()
          .post(
              new SendMessageEvent(
                  "input " + buffer.fullName + " /input set_unread_current_buffer"));
    }
  }