Project

General

Profile

Bug #3652 » 0001-Fix-escape-handling-for-multiple-modeless-WDialogs.patch

Bruce Toll, 11/06/2014 09:44 PM

View differences:

src/Wt/WDialog
385 385
  void create();
386 386
  void onEscapePressed();
387 387
  void onDefaultPressed();
388
  void bringToFront();
388 389

  
389 390
  DialogCover *cover();
390 391
};
src/Wt/WDialog.C
66 66

  
67 67
    if (dialogs_.empty())
68 68
      delete this;
69
    else
70
      scheduleRender();
69 71
  }
70 72

  
71 73
  virtual bool isExposed(WWidget *w) {
......
86 88
    return dialog->id() == topDialogId_;
87 89
  }
88 90

  
91
  void bringToFront(WDialog *dialog) {
92
    if (Utils::erase(dialogs_, dialog)) {
93
      dialogs_.push_back(dialog);
94
      scheduleRender();
95
    }
96
  }
97

  
89 98
protected:
90 99
  virtual void render(WFlags<RenderFlag> flags) {
91 100
    if (dialogs_.empty())
......
397 406
  }
398 407

  
399 408
  if (!isModal())
400
    titleBar()->clicked()
401
      .connect("jQuery.data(" + jsRef() + ", 'obj').bringToFront");
409
    titleBar()->clicked().connect(this, &WDialog::bringToFront);
402 410

  
403 411
  if ( (flags & RenderFull) && autoFocus_)
404 412
    impl_->setFirstFocus();
......
627 635
    return 0;
628 636
}
629 637

  
638
void WDialog::bringToFront()
639
{
640
  doJavaScript("jQuery.data(" + jsRef() + ", 'obj').bringToFront()");
641
  DialogCover *c = cover();
642
  c->bringToFront(this);
643
}
644

  
630 645
}
631
- 
(2-2/2)