failed icon, win32

This commit is contained in:
David Rose 2011-08-29 17:52:58 +00:00
parent 65da4cfa50
commit a37e44c7c5
5 changed files with 18 additions and 13 deletions

View File

@ -234,10 +234,9 @@ void CP3DActiveXCtrl::OnDraw(CDC* pdc, const CRect& rcBounds, const CRect& rcInv
return;
case S_failed:
// Something went wrong.
// Something went wrong. Go ahead and draw the failed icon.
KillTimer(1);
DoSuperclassPaint(pdc, rcBounds);
return;
break;
}
// The instance is setting itself up. In the meantime, draw the
@ -252,8 +251,11 @@ void CP3DActiveXCtrl::OnDraw(CDC* pdc, const CRect& rcBounds, const CRect& rcInv
// Don't draw the twirling icon until at least half a second has
// passed, so we don't distract people by drawing it
// unnecessarily.
if ((now - _init_time) >= 500) {
if (_state == S_failed || (now - _init_time) >= 500) {
int step = (now / 100) % twirl_num_steps;
if (_state == S_failed) {
step = twirl_num_steps;
}
// Create an in-memory DC compatible with the display DC we're
// using to paint
@ -590,7 +592,7 @@ get_twirl_bitmaps() {
unsigned char twirl_data[twirl_size * 3];
unsigned char new_data[twirl_size * 4];
for (int step = 0; step < twirl_num_steps; ++step) {
for (int step = 0; step < twirl_num_steps + 1; ++step) {
get_twirl_data(twirl_data, twirl_size, step,
m_instance._fgcolor_r, m_instance._fgcolor_g, m_instance._fgcolor_b,
m_instance._bgcolor_r, m_instance._bgcolor_g, m_instance._bgcolor_b);

View File

@ -99,7 +99,7 @@ protected:
CComPtr<IOleClientSite> m_spClientSite;
CBitmap _twirl_bitmaps[twirl_num_steps];
CBitmap _twirl_bitmaps[twirl_num_steps + 1];
enum State {
S_init, // before starting the download

View File

@ -1956,7 +1956,7 @@ cleanup_window() {
DeleteObject(_bg_brush);
_bg_brush = NULL;
}
for (int step = 0; step < twirl_num_steps; ++step) {
for (int step = 0; step < twirl_num_steps + 1; ++step) {
if (_twirl_bitmaps[step] != NULL) {
DeleteObject(_twirl_bitmaps[step]);
_twirl_bitmaps[step] = NULL;
@ -2318,7 +2318,7 @@ win_get_twirl_bitmaps() {
unsigned char twirl_data[twirl_size * 3];
unsigned char new_data[twirl_size * 4];
for (int step = 0; step < twirl_num_steps; ++step) {
for (int step = 0; step < twirl_num_steps + 1; ++step) {
get_twirl_data(twirl_data, twirl_size, step,
_fgcolor_r, _fgcolor_g, _fgcolor_b,
_bgcolor_r, _bgcolor_g, _bgcolor_b);
@ -2368,14 +2368,17 @@ win_paint_twirl(HWND hwnd, HDC dc) {
// Start by painting the background color.
FillRect(bdc, &rect, _bg_brush);
if (!_started && !_failed) {
if (!_started) {
DWORD now = GetTickCount();
// Don't draw the twirling icon until at least half a second has
// passed, so we don't distract people by drawing it
// unnecessarily.
if ((now - _init_time) >= 500) {
if (_failed || (now - _init_time) >= 500) {
// Which frame are we drawing?
int step = (now / 100) % twirl_num_steps;
if (_failed) {
step = twirl_num_steps;
}
HBITMAP twirl = _twirl_bitmaps[step];

View File

@ -221,7 +221,7 @@ private:
#ifdef _WIN32
LONG_PTR _orig_window_proc;
HWND _hwnd;
HBITMAP _twirl_bitmaps[twirl_num_steps];
HBITMAP _twirl_bitmaps[twirl_num_steps + 1];
HBRUSH _bg_brush;
DWORD _init_time;
#endif // _WIN32

View File

@ -576,7 +576,7 @@ NPP_GetValue(NPP instance, NPPVariable variable, void *value) {
if (err != NPERR_NO_ERROR) {
supports_xembed = false;
}
nout << "browser supports_xembed: " << (bool)supports_xembed << "\n";
nout << "browser supports_xembed: " << (supports_xembed != 0) << "\n";
#ifdef HAVE_GTK
bool plugin_supports = true;
#else
@ -585,7 +585,7 @@ NPP_GetValue(NPP instance, NPPVariable variable, void *value) {
#endif // HAVE_GTK
nout << "plugin supports_xembed: " << plugin_supports << "\n";
inst->set_xembed(supports_xembed);
inst->set_xembed(supports_xembed != 0);
*(NPBool *)value = supports_xembed;
return NPERR_NO_ERROR;