projects
/
goodguy
/
history.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
21eb2e0
)
vicon drag tweaks, proxy drag fix, vicon mouseover, binfolder around sort fix, draw_r...
author
Good Guy
<good1.2guy@gmail.com>
Sat, 25 Aug 2018 21:47:36 +0000
(15:47 -0600)
committer
Good Guy
<good1.2guy@gmail.com>
Sat, 25 Aug 2018 21:47:36 +0000
(15:47 -0600)
16 files changed:
cinelerra-5.1/cinelerra/assetpopup.C
patch
|
blob
|
history
cinelerra-5.1/cinelerra/awindowgui.C
patch
|
blob
|
history
cinelerra-5.1/cinelerra/awindowgui.h
patch
|
blob
|
history
cinelerra-5.1/cinelerra/binfolder.C
patch
|
blob
|
history
cinelerra-5.1/cinelerra/cwindowgui.C
patch
|
blob
|
history
cinelerra-5.1/cinelerra/edl.C
patch
|
blob
|
history
cinelerra-5.1/cinelerra/edl.h
patch
|
blob
|
history
cinelerra-5.1/cinelerra/proxypopup.C
patch
|
blob
|
history
cinelerra-5.1/cinelerra/vdevicex11.C
patch
|
blob
|
history
cinelerra-5.1/cinelerra/vwindowgui.C
patch
|
blob
|
history
cinelerra-5.1/cinelerra/vwindowgui.h
patch
|
blob
|
history
cinelerra-5.1/guicast/bclistbox.C
patch
|
blob
|
history
cinelerra-5.1/guicast/bclistbox.h
patch
|
blob
|
history
cinelerra-5.1/guicast/bcwindowbase.C
patch
|
blob
|
history
cinelerra-5.1/guicast/vicon.C
patch
|
blob
|
history
cinelerra-5.1/guicast/vicon.h
patch
|
blob
|
history
diff --git
a/cinelerra-5.1/cinelerra/assetpopup.C
b/cinelerra-5.1/cinelerra/assetpopup.C
index 59e13131507e0b2cbcb685078069de58cd25744c..fe52bbd6936336a0ac2a848ae37606f0cac296e7 100644
(file)
--- a/
cinelerra-5.1/cinelerra/assetpopup.C
+++ b/
cinelerra-5.1/cinelerra/assetpopup.C
@@
-100,7
+100,8
@@
void AssetPopup::paste_assets()
mwindow->gui->lock_window("AssetPopup::paste_assets");
mwindow->cwindow->gui->lock_window("AssetPopup::paste_assets");
mwindow->gui->lock_window("AssetPopup::paste_assets");
mwindow->cwindow->gui->lock_window("AssetPopup::paste_assets");
- gui->collect_assets();
+ int proxy = mwindow->edl->session->awindow_folder == AW_PROXY_FOLDER ? 1 : 0;
+ gui->collect_assets(proxy);
mwindow->paste_assets(mwindow->edl->local_session->get_selectionstart(1),
mwindow->edl->tracks->first, 0); // do not overwrite
mwindow->paste_assets(mwindow->edl->local_session->get_selectionstart(1),
mwindow->edl->tracks->first, 0); // do not overwrite
@@
-139,7
+140,8
@@
void AssetPopup::match_all()
int AssetPopup::update()
{
format->update();
int AssetPopup::update()
{
format->update();
- gui->collect_assets();
+ int proxy = mwindow->edl->session->awindow_folder == AW_PROXY_FOLDER ? 1 : 0;
+ gui->collect_assets(proxy);
return 0;
}
return 0;
}
diff --git
a/cinelerra-5.1/cinelerra/awindowgui.C
b/cinelerra-5.1/cinelerra/awindowgui.C
index d7f6268b3cbc4a49ba7968c70fc33675dc65d60b..cfdfb6dd03006c877f96df70833979dd684d1eed 100644
(file)
--- a/
cinelerra-5.1/cinelerra/awindowgui.C
+++ b/
cinelerra-5.1/cinelerra/awindowgui.C
@@
-153,6
+153,10
@@
VFrame *AssetVIcon::frame()
if( !temp )
temp = new VFrame(0, -1, asset->width, asset->height, BC_RGB888, -1);
while( seq_no >= images.size() ) {
if( !temp )
temp = new VFrame(0, -1, asset->width, asset->height, BC_RGB888, -1);
while( seq_no >= images.size() ) {
+ mwindow->video_cache->check_in(asset);
+ Thread::yield();
+ file = mwindow->video_cache->check_out(asset, mwindow->edl, 0);
+ if( !file ) { usleep(1000); continue; }
file->set_layer(0);
int64_t pos = images.size() / picon->gui->vicon_thread->refresh_rate * frame_rate;
file->set_video_position(pos,0);
file->set_layer(0);
int64_t pos = images.size() / picon->gui->vicon_thread->refresh_rate * frame_rate;
file->set_video_position(pos,0);
@@
-1713,17
+1717,18
@@
EDL *AWindowGUI::collect_proxy(Indexable *indexable)
}
}
-void AWindowGUI::collect_assets()
+void AWindowGUI::collect_assets(
int proxy
)
{
mwindow->session->drag_assets->remove_all();
mwindow->session->drag_clips->remove_all();
int i = 0; AssetPicon *result;
while( (result = (AssetPicon*)asset_list->get_selection(0, i++)) != 0 ) {
Indexable *indexable = result->indexable;
{
mwindow->session->drag_assets->remove_all();
mwindow->session->drag_clips->remove_all();
int i = 0; AssetPicon *result;
while( (result = (AssetPicon*)asset_list->get_selection(0, i++)) != 0 ) {
Indexable *indexable = result->indexable;
- if( indexable && indexable->is_asset &&
+ if(
proxy &&
indexable && indexable->is_asset &&
indexable->awindow_folder == AW_PROXY_FOLDER ) {
EDL *drag_edl = collect_proxy(indexable);
if( drag_edl ) mwindow->session->drag_clips->append(drag_edl);
indexable->awindow_folder == AW_PROXY_FOLDER ) {
EDL *drag_edl = collect_proxy(indexable);
if( drag_edl ) mwindow->session->drag_clips->append(drag_edl);
+ continue;
}
if( indexable ) {
mwindow->session->drag_assets->append(indexable);
}
if( indexable ) {
mwindow->session->drag_assets->append(indexable);
@@
-1751,10
+1756,13
@@
void AWindowGUI::copy_picons(ArrayList<BC_ListBoxItem*> *dst,
AssetPicon *picon = (AssetPicon*)src->values[i];
picon->sort_key = -1;
if( !visible && bin_folder ) {
AssetPicon *picon = (AssetPicon*)src->values[i];
picon->sort_key = -1;
if( !visible && bin_folder ) {
- Indexable *idxbl = bin_folder->is_clips ? picon->edl : picon->indexable;
+ Indexable *idxbl = bin_folder->is_clips ? (Indexable *)picon->edl :
+ picon->indexable ? picon->indexable :
+ picon->edl ? picon->edl->get_proxy_asset() : 0;
if( idxbl ) {
picon->sort_key = mwindow->edl->folders.matches_indexable(folder, idxbl);
if( idxbl ) {
picon->sort_key = mwindow->edl->folders.matches_indexable(folder, idxbl);
- if( picon->sort_key >= 0 ) visible = 1;
+ if( picon->sort_key < 0 ) continue;
+ visible = 1;
}
}
if( !visible && picon->indexable && picon->indexable->awindow_folder == folder )
}
}
if( !visible && picon->indexable && picon->indexable->awindow_folder == folder )
@@
-2226,17
+2234,18
@@
int AWindowAssets::selection_changed()
break;
}
break;
}
-
BC_ListBox::
deactivate_selection();
+ deactivate_selection();
}
}
- else if( gui->vicon_drawing &&
- get_button_down() && get_buttonpress() == 1 &&
- (item = (AssetPicon*)get_selection(0, 0)) ) {
+ else if( gui->vicon_drawing && get_button_down() && get_buttonpress() == 1 &&
+ ( mwindow->edl->session->awindow_folder == AW_MEDIA_FOLDER ||
+ mwindow->edl->session->awindow_folder >= AWINDOW_USER_FOLDERS ) &&
+ (item = (AssetPicon*)get_selection(0, 0)) != 0 ) {
VIcon *vicon = 0;
VIcon *vicon = 0;
- if( !gui->vicon_thread->vi
ewing
) {
+ if( !gui->vicon_thread->vi
con
) {
vicon = item->vicon;
vicon = item->vicon;
+ deactivate_selection();
}
gui->vicon_thread->set_view_popup(vicon);
}
gui->vicon_thread->set_view_popup(vicon);
-
}
return 1;
}
}
return 1;
}
@@
-2255,7
+2264,7
@@
void AWindowAssets::draw_background()
int AWindowAssets::drag_start_event()
{
int collect_pluginservers = 0;
int AWindowAssets::drag_start_event()
{
int collect_pluginservers = 0;
- int collect_assets = 0;
+ int collect_assets = 0
, proxy = 0
;
if( BC_ListBox::drag_start_event() ) {
switch( mwindow->edl->session->awindow_folder ) {
if( BC_ListBox::drag_start_event() ) {
switch( mwindow->edl->session->awindow_folder ) {
@@
-2278,6
+2287,8
@@
int AWindowAssets::drag_start_event()
case AW_LABEL_FOLDER:
// do nothing!
break;
case AW_LABEL_FOLDER:
// do nothing!
break;
+ case AW_PROXY_FOLDER:
+ proxy = 1; // fall thru
case AW_MEDIA_FOLDER:
default:
mwindow->session->current_operation = DRAG_ASSET;
case AW_MEDIA_FOLDER:
default:
mwindow->session->current_operation = DRAG_ASSET;
@@
-2298,7
+2309,7
@@
int AWindowAssets::drag_start_event()
}
if( collect_assets ) {
}
if( collect_assets ) {
- gui->collect_assets();
+ gui->collect_assets(
proxy
);
}
return 1;
}
return 1;
@@
-2403,8
+2414,9
@@
int AWindowAssets::column_resize_event()
int AWindowAssets::focus_in_event()
{
int AWindowAssets::focus_in_event()
{
+ int ret = BC_ListBox::focus_in_event();
gui->start_vicon_drawing();
gui->start_vicon_drawing();
- return
0
;
+ return
ret
;
}
int AWindowAssets::focus_out_event()
}
int AWindowAssets::focus_out_event()
@@
-2413,6
+2425,19
@@
int AWindowAssets::focus_out_event()
return BC_ListBox::focus_out_event();
}
return BC_ListBox::focus_out_event();
}
+int AWindowAssets::cursor_enter_event()
+{
+ int ret = BC_ListBox::cursor_enter_event();
+ gui->start_vicon_drawing();
+ return ret;
+}
+
+int AWindowAssets::cursor_leave_event()
+{
+ gui->stop_vicon_drawing();
+ return BC_ListBox::cursor_leave_event();
+}
+
void AWindowAssets::update_vicon_area()
{
int x0 = 0, x1 = get_w();
void AWindowAssets::update_vicon_area()
{
int x0 = 0, x1 = get_w();
@@
-2425,6
+2450,18
@@
void AWindowAssets::update_vicon_area()
gui->vicon_thread->set_drawing_area(x0,y0, x1,y1);
}
gui->vicon_thread->set_drawing_area(x0,y0, x1,y1);
}
+int AWindowAssets::mouse_over_event(int no)
+{
+ if( gui->vicon_thread->viewing &&
+ no >= 0 && no < gui->displayed_assets[0].size() ) {
+ AssetPicon *picon = (AssetPicon *)gui->displayed_assets[0][no];
+ VIcon *vicon = picon->vicon;
+ picon->gui->vicon_thread->set_view_popup(vicon);
+ }
+ return 0;
+}
+
+
AWindowSearchTextBox::AWindowSearchTextBox(AWindowSearchText *search_text, int x, int y, int w)
: BC_TextBox(x, y, w, 1, "")
{
AWindowSearchTextBox::AWindowSearchTextBox(AWindowSearchText *search_text, int x, int y, int w)
: BC_TextBox(x, y, w, 1, "")
{
diff --git
a/cinelerra-5.1/cinelerra/awindowgui.h
b/cinelerra-5.1/cinelerra/awindowgui.h
index 6aade3ca6925d03a09e8b199ae0dfe165decb221..c26d4e87dc2e809a124e7fc23c4040c58fc4b6ea 100644
(file)
--- a/
cinelerra-5.1/cinelerra/awindowgui.h
+++ b/
cinelerra-5.1/cinelerra/awindowgui.h
@@
-183,7
+183,7
@@
public:
int drag_motion();
int drag_stop();
// Collect items into the drag vectors of MainSession
int drag_motion();
int drag_stop();
// Collect items into the drag vectors of MainSession
- void collect_assets();
+ void collect_assets(
int proxy=0
);
EDL *collect_proxy(Indexable *indexable);
void create_persistent_folder(ArrayList<BC_ListBoxItem*> *output,
int do_audio,
EDL *collect_proxy(Indexable *indexable);
void create_persistent_folder(ArrayList<BC_ListBoxItem*> *output,
int do_audio,
@@
-321,7
+321,10
@@
public:
int column_resize_event();
int focus_in_event();
int focus_out_event();
int column_resize_event();
int focus_in_event();
int focus_out_event();
+ int cursor_enter_event();
+ int cursor_leave_event();
void update_vicon_area();
void update_vicon_area();
+ int mouse_over_event(int no);
MWindow *mwindow;
AWindowGUI *gui;
MWindow *mwindow;
AWindowGUI *gui;
diff --git
a/cinelerra-5.1/cinelerra/binfolder.C
b/cinelerra-5.1/cinelerra/binfolder.C
index 32fd02aa82fb41a632de925d9d488b66619cb240..593bfdab1fe041b27ba15a9caf15a0b30de40421 100644
(file)
--- a/
cinelerra-5.1/cinelerra/binfolder.C
+++ b/
cinelerra-5.1/cinelerra/binfolder.C
@@
-239,7
+239,6
@@
static int64_t scan_date(const char *cp, char *&bp)
struct tm ttm; memset(&ttm, 0, sizeof(ttm));
ttm.tm_year = year-1900; ttm.tm_mon = mon-1; ttm.tm_mday = day;
ttm.tm_hour = hour; ttm.tm_min = min; ttm.tm_sec = secs;
struct tm ttm; memset(&ttm, 0, sizeof(ttm));
ttm.tm_year = year-1900; ttm.tm_mon = mon-1; ttm.tm_mday = day;
ttm.tm_hour = hour; ttm.tm_min = min; ttm.tm_sec = secs;
- ttm.tm_wday = ttm.tm_yday = 0; ttm.tm_isdst = daylight; /* tzset in main */
time_t t = mktime(&ttm);
return (int64_t)t;
}
time_t t = mktime(&ttm);
return (int64_t)t;
}
@@
-539,9
+538,9
@@
void BinFolderFilters::copy_from(BinFolderFilters *that)
double BinFolderOp::around(double v, double a)
{
double BinFolderOp::around(double v, double a)
{
- if( type != FOLDER_OP_AROUND
|| a <= 0
) return v;
-
if( (v=fabs(v)) > a ) return -1
;
- return
v / a
;
+ if( type != FOLDER_OP_AROUND ) return v;
+
v = fabs(v)
;
+ return
a>0 ? v/a : v
;
}
// string theory: Feynman, Einstein and Schrodinger string compare
}
// string theory: Feynman, Einstein and Schrodinger string compare
diff --git
a/cinelerra-5.1/cinelerra/cwindowgui.C
b/cinelerra-5.1/cinelerra/cwindowgui.C
index ea957147637ff434eb2234f4ef164302391aaadd..d8c09e055692e8b0587fb9d7dc9f106dfe21337c 100644
(file)
--- a/
cinelerra-5.1/cinelerra/cwindowgui.C
+++ b/
cinelerra-5.1/cinelerra/cwindowgui.C
@@
-646,14
+646,12
@@
int CWindowGUI::drag_stop()
if(mwindow->session->drag_assets->total ||
mwindow->session->drag_clips->total)
{
if(mwindow->session->drag_assets->total ||
mwindow->session->drag_clips->total)
{
- mwindow->gui->lock_window("CWindowGUI::drag_stop
5
");
+ mwindow->gui->lock_window("CWindowGUI::drag_stop
1
");
mwindow->undo->update_undo_before(_("insert assets"), 0);
mwindow->undo->update_undo_before(_("insert assets"), 0);
- mwindow->gui->unlock_window();
}
if(mwindow->session->drag_assets->total)
{
}
if(mwindow->session->drag_assets->total)
{
- mwindow->gui->lock_window("CWindowGUI::drag_stop 1");
mwindow->clear(0);
mwindow->load_assets(mwindow->session->drag_assets,
mwindow->edl->local_session->get_selectionstart(),
mwindow->clear(0);
mwindow->load_assets(mwindow->session->drag_assets,
mwindow->edl->local_session->get_selectionstart(),
@@
-668,7
+666,6
@@
int CWindowGUI::drag_stop()
if(mwindow->session->drag_clips->total)
{
if(mwindow->session->drag_clips->total)
{
- mwindow->gui->lock_window("CWindowGUI::drag_stop 2");
mwindow->clear(0);
mwindow->paste_edls(mwindow->session->drag_clips,
LOADMODE_PASTE,
mwindow->clear(0);
mwindow->paste_edls(mwindow->session->drag_clips,
LOADMODE_PASTE,
@@
-688,7
+685,7
@@
int CWindowGUI::drag_stop()
mwindow->gui->update(1, 1, 1, 1, 0, 1, 0);
mwindow->undo->update_undo_after(_("insert assets"), LOAD_ALL);
mwindow->gui->unlock_window();
mwindow->gui->update(1, 1, 1, 1, 0, 1, 0);
mwindow->undo->update_undo_after(_("insert assets"), LOAD_ALL);
mwindow->gui->unlock_window();
- mwindow->sync_parameters(
LOAD
_ALL);
+ mwindow->sync_parameters(
CHANGE
_ALL);
}
}
}
}
diff --git
a/cinelerra-5.1/cinelerra/edl.C
b/cinelerra-5.1/cinelerra/edl.C
index ebab4cd7ed3ea496273f600420b2f9995bf4f22b..2f0d6e20a78bed8b53f780f8d4788f6f2c53cbb0 100644
(file)
--- a/
cinelerra-5.1/cinelerra/edl.C
+++ b/
cinelerra-5.1/cinelerra/edl.C
@@
-1608,6
+1608,12
@@
void EDL::add_proxy(int use_scaler,
}
}
}
}
+Asset *EDL::get_proxy_asset()
+{
+ return awindow_folder == AW_PROXY_FOLDER ?
+ tracks->first->edits->first->asset : 0;
+}
+
double EDL::get_cursor_position(int cursor_x, int pane_no)
{
return (double)cursor_x * local_session->zoom_sample / session->sample_rate +
double EDL::get_cursor_position(int cursor_x, int pane_no)
{
return (double)cursor_x * local_session->zoom_sample / session->sample_rate +
diff --git
a/cinelerra-5.1/cinelerra/edl.h
b/cinelerra-5.1/cinelerra/edl.h
index 76ad03715034e9bc1c8f70ad8d2dc431035a66bb..8a96155e1933338cc11d3a83e80dacf29f019745 100644
(file)
--- a/
cinelerra-5.1/cinelerra/edl.h
+++ b/
cinelerra-5.1/cinelerra/edl.h
@@
-261,6
+261,7
@@
public:
ArrayList<Indexable*> *orig_assets, ArrayList<Indexable*> *proxy_assets);
void add_proxy(int use_scaler,
ArrayList<Indexable*> *orig_assets, ArrayList<Indexable*> *proxy_assets);
ArrayList<Indexable*> *orig_assets, ArrayList<Indexable*> *proxy_assets);
void add_proxy(int use_scaler,
ArrayList<Indexable*> *orig_assets, ArrayList<Indexable*> *proxy_assets);
+ Asset *get_proxy_asset();
// Titles of all subfolders
BinFolders folders;
// Titles of all subfolders
BinFolders folders;
diff --git
a/cinelerra-5.1/cinelerra/proxypopup.C
b/cinelerra-5.1/cinelerra/proxypopup.C
index 40a29ded973a3f3bcb3523bb6730c9ea3940d45e..04a1bdae736bb02678d912d5730ca5499e7241f9 100644
(file)
--- a/
cinelerra-5.1/cinelerra/proxypopup.C
+++ b/
cinelerra-5.1/cinelerra/proxypopup.C
@@
-80,7
+80,7
@@
void ProxyPopup::paste_assets()
mwindow->gui->lock_window("ProxyPopup::paste_assets");
mwindow->cwindow->gui->lock_window("ProxyPopup::paste_assets");
mwindow->gui->lock_window("ProxyPopup::paste_assets");
mwindow->cwindow->gui->lock_window("ProxyPopup::paste_assets");
- gui->collect_assets();
+ gui->collect_assets(
1
);
mwindow->paste_assets(mwindow->edl->local_session->get_selectionstart(1),
mwindow->edl->tracks->first, 0); // do not overwrite
mwindow->paste_assets(mwindow->edl->local_session->get_selectionstart(1),
mwindow->edl->tracks->first, 0); // do not overwrite
@@
-92,7
+92,7
@@
void ProxyPopup::paste_assets()
int ProxyPopup::update()
{
format->update();
int ProxyPopup::update()
{
format->update();
- gui->collect_assets();
+ gui->collect_assets(
1
);
return 0;
}
return 0;
}
diff --git
a/cinelerra-5.1/cinelerra/vdevicex11.C
b/cinelerra-5.1/cinelerra/vdevicex11.C
index fc9e84097a0bc2c44f9e99c3510fb755746a1dbc..9db8bb831c45e24e332de2b3f75dc54887ae3997 100644
(file)
--- a/
cinelerra-5.1/cinelerra/vdevicex11.C
+++ b/
cinelerra-5.1/cinelerra/vdevicex11.C
@@
-161,6
+161,7
@@
int VDeviceX11::close_all()
if( output ) {
output->lock_canvas("VDeviceX11::close_all 1");
output->get_canvas()->lock_window("VDeviceX11::close_all 1");
if( output ) {
output->lock_canvas("VDeviceX11::close_all 1");
output->get_canvas()->lock_window("VDeviceX11::close_all 1");
+ int video_on = output->get_canvas()->get_video_on();
// Update the status bug
if( !device->single_frame ) {
output->stop_video();
// Update the status bug
if( !device->single_frame ) {
output->stop_video();
@@
-168,13
+169,12
@@
int VDeviceX11::close_all()
else {
output->stop_single();
}
else {
output->stop_single();
}
- }
-
- if( output && output_frame ) {
- output->update_refresh(device, output_frame);
+ if( output_frame ) {
+ output->update_refresh(device, output_frame);
// if the last frame is good, don't draw over it
// if the last frame is good, don't draw over it
- if( output->need_overlays() )
- output->draw_refresh(1);
+ if( !video_on || output->need_overlays() )
+ output->draw_refresh(1);
+ }
}
delete bitmap; bitmap = 0;
}
delete bitmap; bitmap = 0;
@@
-576,27
+576,29
@@
int VDeviceX11::write_buffer(VFrame *output_channels, EDL *edl)
output->get_canvas()->lock_window("VDeviceX11::write_buffer 2");
}
}
output->get_canvas()->lock_window("VDeviceX11::write_buffer 2");
}
}
- else
- if( bitmap->hardware_scaling() ) {
- output->get_canvas()->draw_bitmap(bitmap, !device->single_frame,
- (int)canvas_x1, (int)canvas_y1,
- (int)(canvas_x2 - canvas_x1), (int)(canvas_y2 - canvas_y1),
- (int)output_x1, (int)output_y1,
- (int)(output_x2 - output_x1), (int)(output_y2 - output_y1),
- 0);
- }
else {
else {
+ if( bitmap->hardware_scaling() ) {
+ output->get_canvas()->draw_bitmap(bitmap, !device->single_frame,
+ (int)canvas_x1, (int)canvas_y1,
+ (int)(canvas_x2 - canvas_x1), (int)(canvas_y2 - canvas_y1),
+ (int)output_x1, (int)output_y1,
+ (int)(output_x2 - output_x1), (int)(output_y2 - output_y1),
+ 0);
+ }
+ else {
//printf("VDeviceX11::write_buffer %d x=%d y=%d w=%d h=%d\n",
// __LINE__, (int)canvas_x1, (int)canvas_y1,
// output->get_canvas()->get_w(), output->get_canvas()->get_h());
//printf("VDeviceX11::write_buffer %d x=%d y=%d w=%d h=%d\n",
// __LINE__, (int)canvas_x1, (int)canvas_y1,
// output->get_canvas()->get_w(), output->get_canvas()->get_h());
-
- output->get_canvas()->draw_bitmap(bitmap, !device->single_frame,
- (int)canvas_x1, (int)canvas_y1,
- (int)(canvas_x2 - canvas_x1), (int)(canvas_y2 - canvas_y1),
- 0, 0,
- (int)(canvas_x2 - canvas_x1), (int)(canvas_y2 - canvas_y1),
- 0);
+ output->get_canvas()->draw_bitmap(bitmap, !device->single_frame,
+ (int)canvas_x1, (int)canvas_y1,
+ (int)(canvas_x2 - canvas_x1), (int)(canvas_y2 - canvas_y1),
+ 0, 0,
+ (int)(canvas_x2 - canvas_x1), (int)(canvas_y2 - canvas_y1),
+ 0);
//printf("VDeviceX11::write_buffer %d bitmap=%p\n", __LINE__, bitmap);
//printf("VDeviceX11::write_buffer %d bitmap=%p\n", __LINE__, bitmap);
+ }
+ if( !output->get_canvas()->get_video_on() )
+ output->get_canvas()->flash(0);
}
output->get_canvas()->unlock_window();
}
output->get_canvas()->unlock_window();
diff --git
a/cinelerra-5.1/cinelerra/vwindowgui.C
b/cinelerra-5.1/cinelerra/vwindowgui.C
index 92505781fac1330d60857aaf3f4afb50d77efc45..d13197b4869f7f679b26f83acfc660de0bd2c67f 100644
(file)
--- a/
cinelerra-5.1/cinelerra/vwindowgui.C
+++ b/
cinelerra-5.1/cinelerra/vwindowgui.C
@@
-471,10
+471,10
@@
int VWindowGUI::drag_stop()
unlock_window();
Indexable *indexable =
unlock_window();
Indexable *indexable =
- mwindow->session->drag_clips->size() > 0 ?
- (Indexable *)mwindow->session->drag_clips->get(0) :
mwindow->session->drag_assets->size() > 0 ?
mwindow->session->drag_assets->size() > 0 ?
- (Indexable *)mwindow->session->drag_assets->get(0) : 0;
+ (Indexable *)mwindow->session->drag_assets->get(0) :
+ mwindow->session->drag_clips->size() > 0 ?
+ (Indexable *)mwindow->session->drag_clips->get(0) : 0;
if( indexable )
vwindow->change_source(indexable);
if( indexable )
vwindow->change_source(indexable);
@@
-857,6
+857,12
@@
void VWindowCanvas::draw_refresh(int flush)
}
}
}
}
+int VWindowCanvas::need_overlays()
+{
+ if( gui->highlighted ) return 1;
+ return 0;
+}
+
void VWindowCanvas::draw_overlays()
{
if( gui->highlighted )
void VWindowCanvas::draw_overlays()
{
if( gui->highlighted )
diff --git
a/cinelerra-5.1/cinelerra/vwindowgui.h
b/cinelerra-5.1/cinelerra/vwindowgui.h
index da10c484a9934bcfd3514f55e90c2a537b0baf41..e09eb4c3fe72510fa88d38dd78c765409d7d0372 100644
(file)
--- a/
cinelerra-5.1/cinelerra/vwindowgui.h
+++ b/
cinelerra-5.1/cinelerra/vwindowgui.h
@@
-119,6
+119,7
@@
public:
void zoom_resize_window(float percentage);
void draw_refresh(int flush = 1);
void zoom_resize_window(float percentage);
void draw_refresh(int flush = 1);
+ int need_overlays();
void draw_overlays();
void close_source();
int get_fullscreen();
void draw_overlays();
void close_source();
int get_fullscreen();
diff --git
a/cinelerra-5.1/guicast/bclistbox.C
b/cinelerra-5.1/guicast/bclistbox.C
index e52d42fa49a1dd4a43f9174d043457a0eefa71cb..54bab352a6f7a6b12db02067a4b21c36b5831db3 100644
(file)
--- a/
cinelerra-5.1/guicast/bclistbox.C
+++ b/
cinelerra-5.1/guicast/bclistbox.C
@@
-3152,7
+3152,8
@@
int BC_ListBox::cursor_motion_event()
// Moved out of item area
if( old_highlighted_item != highlighted_item ) {
// Moved out of item area
if( old_highlighted_item != highlighted_item ) {
- redraw_items = 1;
+ if( !mouse_over_event(highlighted_item) )
+ redraw_items = 1;
}
//printf("BC_ListBox::cursor_motion_event 1 %d\n", highlighted_item);
}
//printf("BC_ListBox::cursor_motion_event 1 %d\n", highlighted_item);
diff --git
a/cinelerra-5.1/guicast/bclistbox.h
b/cinelerra-5.1/guicast/bclistbox.h
index a10446d9a52f1ce572fdf36011adc3033cf8274a..ce867ef88ecc196efd0dfd3b6d9f2c79a881a11f 100644
(file)
--- a/
cinelerra-5.1/guicast/bclistbox.h
+++ b/
cinelerra-5.1/guicast/bclistbox.h
@@
-123,6
+123,8
@@
public:
virtual int sort_order_event() { return 0; };
// Column moved
virtual int move_column_event() { return 0; };
virtual int sort_order_event() { return 0; };
// Column moved
virtual int move_column_event() { return 0; };
+// item highlight changed
+ virtual int mouse_over_event(int no) { return 0; }
int enable();
int disable();
int enable();
int disable();
diff --git
a/cinelerra-5.1/guicast/bcwindowbase.C
b/cinelerra-5.1/guicast/bcwindowbase.C
index a18d155944cce4b3b4267d89d2b2baee1e5913f7..421a26fe7663e2470aba2f52d0265fb15c0560e4 100644
(file)
--- a/
cinelerra-5.1/guicast/bcwindowbase.C
+++ b/
cinelerra-5.1/guicast/bcwindowbase.C
@@
-1338,6
+1338,7
@@
locking_message = event->xclient.message_type;
break;
case LeaveNotify:
break;
case LeaveNotify:
+ if( event->xcrossing.mode != NotifyNormal ) break;
if( cursor_entered && event->xcrossing.window == win ) {
cursor_entered = 0;
}
if( cursor_entered && event->xcrossing.window == win ) {
cursor_entered = 0;
}
@@
-1346,6
+1347,7
@@
locking_message = event->xclient.message_type;
break;
case EnterNotify:
break;
case EnterNotify:
+ if( event->xcrossing.mode != NotifyNormal ) break;
if( !cursor_entered && event->xcrossing.window == win ) {
if( !event->xcrossing.focus && get_resources()->grab_input_focus ) {
XSetInputFocus(display, win, RevertToParent, CurrentTime);
if( !cursor_entered && event->xcrossing.window == win ) {
if( !event->xcrossing.focus && get_resources()->grab_input_focus ) {
XSetInputFocus(display, win, RevertToParent, CurrentTime);
diff --git
a/cinelerra-5.1/guicast/vicon.C
b/cinelerra-5.1/guicast/vicon.C
index 8ae7a7c0ba667a10ad2978113b1b6fc52bde14db..f9978b26ebf0e917b1d7f6852a26b72dbf670c6d 100644
(file)
--- a/
cinelerra-5.1/guicast/vicon.C
+++ b/
cinelerra-5.1/guicast/vicon.C
@@
-155,12
+155,6
@@
int VIconThread::keypress_event(int key)
return 1;
}
return 1;
}
-int ViewPopup::button_press_event()
-{
- vt->set_view_popup(0);
- return 1;
-}
-
bool VIconThread::
visible(VIcon *vicon, int x, int y)
{
bool VIconThread::
visible(VIcon *vicon, int x, int y)
{
@@
-177,6
+171,7
@@
int ViewPopup::keypress_event()
int key = get_keypress();
return vt->keypress_event(key);
}
int key = get_keypress();
return vt->keypress_event(key);
}
+
ViewPopup::ViewPopup(VIconThread *vt, VFrame *frame, int x, int y, int w, int h)
: BC_Popup(vt->wdw, x, y, w, h, BLACK)
{
ViewPopup::ViewPopup(VIconThread *vt, VFrame *frame, int x, int y, int w, int h)
: BC_Popup(vt->wdw, x, y, w, h, BLACK)
{
@@
-239,14
+234,13
@@
int VIconThread::del_vicon(VIcon *&vicon)
void VIconThread::set_view_popup(VIcon *vicon)
{
void VIconThread::set_view_popup(VIcon *vicon)
{
- if( !vicon && this->vicon )
- this->vicon->stop_audio();
this->vicon = vicon;
}
int VIconThread::
update_view()
{
this->vicon = vicon;
}
int VIconThread::
update_view()
{
+ if( viewing ) viewing->stop_audio();
delete view_win; view_win = 0;
if( (viewing=vicon) != 0 ) {
VFrame *frame = viewing->frame();
delete view_win; view_win = 0;
if( (viewing=vicon) != 0 ) {
VFrame *frame = viewing->frame();
diff --git
a/cinelerra-5.1/guicast/vicon.h
b/cinelerra-5.1/guicast/vicon.h
index e1dd04c5629a41577fe8783c416e7aa83ab47dd4..6ffe3b174de09e310241f71bed895a0b5e4c2bcc 100644
(file)
--- a/
cinelerra-5.1/guicast/vicon.h
+++ b/
cinelerra-5.1/guicast/vicon.h
@@
-13,7
+13,6
@@
class ViewPopup : public BC_Popup {
public:
VIconThread *vt;
int keypress_event();
public:
VIconThread *vt;
int keypress_event();
- int button_press_event();
void draw_vframe(VFrame *frame);
ViewPopup(VIconThread *vt, VFrame *frame, int x, int y, int w, int h);
void draw_vframe(VFrame *frame);
ViewPopup(VIconThread *vt, VFrame *frame, int x, int y, int w, int h);