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