Skip to content
Snippets Groups Projects
winwidget.c 28.2 KiB
Newer Older
  • Learn to ignore specific revisions
  •   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);
    
      /* 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);
      }
    }