Skip to content
Snippets Groups Projects
winwidget.c 28.6 KiB
Newer Older
    min_y = 0;
    max_y = far_top;
  }
  if (winwid->im_x > max_x)
    winwid->im_x = max_x;
  if (winwid->im_x < min_x)
    winwid->im_x = min_x;
  if (winwid->im_y > max_y)
    winwid->im_y = max_y;
  if (winwid->im_y < min_y)
    winwid->im_y = min_y;

  D_RETURN_(4);
}


void
winwidget_size_to_image(winwidget winwid)
{
  D_ENTER(4);
  winwidget_resize(winwid, winwid->im_w * winwid->zoom,
                   winwid->im_h * winwid->zoom);
  winwid->im_x = winwid->im_y = 0;
  winwidget_render_image(winwid, 0, 1);
  D_RETURN_(4);
}

int winwidget_get_width(winwidget winwid) {
  int rect[4];
  D_ENTER(4);
  winwidget_get_geometry(winwid, rect);
  D_RETURN(4, rect[2]);
}

int winwidget_get_height(winwidget winwid) {
  int rect[4];
  D_ENTER(4);
  winwidget_get_geometry(winwid, rect);
  D_RETURN(4, rect[3]);
}

void winwidget_get_geometry(winwidget winwid, int *rect) {
  int bw, bp;
  D_ENTER(4);
  if (!rect)
    return;

  XGetGeometry(disp, winwid->win, &root, 
               &(rect[0]), &(rect[1]), &(rect[2]), &(rect[3]), &bw, &bp);

  XTranslateCoordinates(disp, winwid->win, root,
                          0, 0, &(rect[0]), &(rect[1]), &child);

  /* update the window geometry (in case it's inaccurate) */
  winwid->x = rect[0];
  winwid->y = rect[1];
  winwid->w = rect[2];
  winwid->h = rect[3];
  D_RETURN_(4);
}

void winwidget_show_menu(winwidget winwid) {
  int x, y, b;
  unsigned int c;
  Window r;

  XQueryPointer(disp, winwid->win, &r, &r, &x, &y, &b, &b, &c);
  if (winwid->type == WIN_TYPE_ABOUT)
  {
    if (!menu_about_win)
        feh_menu_init_about_win();
    feh_menu_show_at_xy(menu_about_win, winwid, x, y);
  }
  else if (winwid->type == WIN_TYPE_SINGLE)
  {
    if (!menu_single_win)
        feh_menu_init_single_win();
    feh_menu_show_at_xy(menu_single_win, winwid, x, y);
  }
  else if (winwid->type == WIN_TYPE_THUMBNAIL)
  {
    if (!menu_thumbnail_win)
        feh_menu_init_thumbnail_win();
    feh_menu_show_at_xy(menu_thumbnail_win, winwid, x, y);
  }
  else if (winwid->type == WIN_TYPE_THUMBNAIL_VIEWER)
  {
    if (!menu_single_win)
        feh_menu_init_thumbnail_viewer();
    feh_menu_show_at_xy(menu_thumbnail_viewer, winwid, x, y);
  }
  else
  {
    if (!menu_main)
        feh_menu_init_main();
    feh_menu_show_at_xy(menu_main, winwid, x, y);
  }
}