X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=synfig-studio%2Ftrunk%2Fsrc%2Fgtkmm%2Fworkarea.cpp;h=a6ca612562e375f1d5352e82381071907404f67d;hb=65fb935293f8601f3042482dddc35a21eaa46d87;hp=d662c5508f1651119e0558e0666c0f4cc655780e;hpb=82172e34b62d1e335b1deb00bfc714e293f1c165;p=synfig.git diff --git a/synfig-studio/trunk/src/gtkmm/workarea.cpp b/synfig-studio/trunk/src/gtkmm/workarea.cpp index d662c55..a6ca612 100644 --- a/synfig-studio/trunk/src/gtkmm/workarea.cpp +++ b/synfig-studio/trunk/src/gtkmm/workarea.cpp @@ -787,7 +787,7 @@ WorkArea::WorkArea(etl::loose_handle canvas_interfac if(!data.empty()) { if(!load_sketch(data)) - load_sketch(dirname(canvas->get_file_name())+ETL_DIRECTORY_SEPERATOR+basename(data)); + load_sketch(dirname(canvas->get_file_name())+ETL_DIRECTORY_SEPARATOR+basename(data)); } } @@ -2067,17 +2067,22 @@ WorkArea::refresh(GdkEventExpose*event) // If we are in animate mode, draw a red border around the screen if(canvas_interface->get_mode()&synfigapp::MODE_ANIMATE) { - /*gc->set_rgb_fg_color(Gdk::Color("#FF0000")); +#ifdef USE_FRAME_BACKGROUND_TO_SHOW_EDIT_MODE + // This method of drawing the red border doesn't work on any + // Gtk theme which uses the crux-engine, hcengine, industrial, + // mist, or ubuntulooks engine, such as the default ubuntu + // 'Human' theme. + drawing_frame->modify_bg(Gtk::STATE_NORMAL,Gdk::Color("#FF0000")); +#else + // So let's do it in a more primitive fashion. + gc->set_rgb_fg_color(Gdk::Color("#FF0000")); gc->set_line_attributes(1,Gdk::LINE_SOLID,Gdk::CAP_BUTT,Gdk::JOIN_MITER); drawing_area->get_window()->draw_rectangle( gc, false, // Fill? 0,0, // x,y - drawing_area->get_width()-1,drawing_area->get_height()-1 //w,h - ); - */ - drawing_frame->modify_bg(Gtk::STATE_NORMAL,Gdk::Color("#FF0000")); - //get_window()->set_background(Gdk::Color("#FF0000")); + drawing_area->get_width()-1,drawing_area->get_height()-1); // w,h +#endif } else drawing_frame->unset_bg(Gtk::STATE_NORMAL); @@ -2119,6 +2124,8 @@ WorkArea::set_quality(int x) } +namespace studio +{ class WorkAreaProgress : public synfig::ProgressCallback { WorkArea *work_area; @@ -2156,6 +2163,7 @@ public: return cb->amount_complete(current,total); } }; +} bool studio::WorkArea::async_update_preview() @@ -2315,7 +2323,6 @@ again: dirty=false; get_canvas_view()->reset_cancel_status(); - bool ret=false; RendDesc desc=get_canvas()->rend_desc(); //newdesc->set_flags(RendDesc::PX_ASPECT|RendDesc::IM_SPAN); @@ -2342,7 +2349,7 @@ again: if(cb) cb->task(strprintf("Rendering canvas %s...",get_canvas()->get_name().c_str())); - target->render(cb); + bool ret = target->render(cb); if(!ret && !get_canvas_view()->get_cancel_status() && dirty) { @@ -2534,7 +2541,12 @@ studio::WorkArea::queue_render_preview() { //synfig::info("queue_render_preview(): (re)queuing..."); //render_idle_func_id=g_idle_add_full(G_PRIORITY_DEFAULT,__render_preview,this,NULL); - render_idle_func_id=g_timeout_add_full(G_PRIORITY_DEFAULT,queue_time,__render_preview,this,NULL); + render_idle_func_id=g_timeout_add_full( + G_PRIORITY_DEFAULT, // priority - + queue_time, // interval - the time between calls to the function, in milliseconds (1/1000ths of a second) + __render_preview, // function - function to call + this, // data - data to pass to function + NULL); // notify - function to call when the idle is removed, or NULL queued=true; } /* else if(rendering)