#include <stdio.h>
#include <stdlib.h>
#include "kernel.h"
#include "swis.h"

#include "toolbox.h"
#include "wimp.h"
#include "wimplib.h"
#include "window.h"

#include "toggle.h"
#include "pinboard.h"

static void toggle_set_position(_backdrop_state *state)
{
  // update the backdrop window position
  WimpGetWindowStateBlock win;
  window_get_wimp_handle(0,state->obj,&win.window_handle);
  wimp_get_window_state(&win);

  win.behind=-state->toggle_position;
  wimp_open_window((WimpOpenWindowBlock *)&win);
}

int message_togglebd(WimpMessage *msg,void *handle)
{
  WimpToggleBackdropMessage *m=(WimpToggleBackdropMessage *)msg;
  _backdrop_state *state=(_backdrop_state *)handle;

  if (m->flags<0 || m->flags>3) return 0;

  if (m->flags!=3) {
    // do something to the backdrop
    if (m->flags==0) {
      state->toggle_position=3-state->toggle_position; 
    } else {
      state->toggle_position=m->flags;
    }

    toggle_set_position(state);
  }

  // send state back to caller
  m->flags=state->toggle_position;
  wimp_send_message(17,m,m->hdr.sender,0,NULL);

  return 1;
}
