- gui->stop_vicon_drawing();
- int mode = !v ? ASSET_VIEW_NONE :
- draw_mode >= 0 ? draw_mode :
- this->draw_mode;
- this->vicon = v;
- this->draw_mode = mode;
- gui->start_vicon_drawing();
+ BC_WindowBase *parent = wdw->get_parent();
+ int rx = 0, ry = 0, rw = 0, rh = 0;
+ if( draw_mode != ASSET_VIEW_FULL ) {
+ XineramaScreenInfo *info = parent->get_xinerama_info(-1);
+ int cx = info ? info->x_org + info->width/2 : parent->get_root_w(0)/2;
+ int cy = info ? info->y_org + info->height/2 : parent->get_root_h(0)/2;
+ int vx = viewing->get_vx(), vy = viewing->get_vy();
+ wdw->get_root_coordinates(vx, vy, &rx, &ry);
+ rx += (rx >= cx ? -view_w+viewing->w/4 : viewing->w-viewing->w/4);
+ ry += (ry >= cy ? -view_h+viewing->h/4 : viewing->h-viewing->h/4);
+ rw = view_w; rh = view_h;
+ }
+ else
+ parent->get_fullscreen_geometry(rx, ry, rw, rh);
+ AssetViewPopup *av_popup = (AssetViewPopup *)vpopup;
+ if( av_popup )
+ av_popup->reposition_window(rx, ry, rw, rh);
+ else
+ av_popup = new AssetViewPopup(this, draw_mode, rx, ry, rw, rh);
+ int playing_audio = gui->play_off ? -1 : 0;
+ if( !playing_audio ) {
+ switch( draw_mode ) {
+ case ASSET_VIEW_NONE:
+ case ASSET_VIEW_ICON:
+ case ASSET_VIEW_MEDIA_MAP:
+ case ASSET_VIEW_FULL:
+ playing_audio = -1;
+ break;
+ case ASSET_VIEW_MEDIA:
+ switch( gui->vicon_drawing ) {
+ case AVICON_SRC_TARGET:
+ case AVICON_NO_PLAY:
+ playing_audio = -1;
+ break;
+ }
+ }
+ }
+ vicon->playing_audio = playing_audio;
+ wdw->set_active_subwindow(av_popup);
+ return av_popup;