Closed
Bug 66809
Opened 24 years ago
Closed 21 years ago
New MODAL_SUBSET windows are not created
Categories
(MailNews Core :: Filters, defect, P1)
Tracking
(Not tracked)
RESOLVED
FIXED
People
(Reporter: vargol, Assigned: beos)
References
Details
Attachments
(10 obsolete files)
On the BeOS build dated 27/01/2001 you can not add message filters as the 'New'
Filter button does absolutely nothing.
The other enabled buttons work fine.
Comment 1•24 years ago
|
||
Can't reproduce on 2001-01-26 or 2001-02-05 on Win95...
Gerv
Comment 2•24 years ago
|
||
Gervase: this is a BeOS only bug.This problem isn't just with this particular button, and can be seen throughout various dialogs. But is the primary thing that makes MailNews unusable for me under BeOS.The buttons, when clicked, will cause moz to print two lines to the Terminal:nsWindow::ShowMenuBar - FIXME: not implemented!nsWindow::ConstrainPosition - not implementedA new bug should be created for these two messages, and this one marked as a dupe, or the Summary of this bug should be changed.
Comment 3•24 years ago
|
||
Augh. Silly NetPositive. Sorry about the formatting on the entry above.
Comment 4•24 years ago
|
||
I know that this bug can be solved by changing the window 'feel' of dialogs
from modal to normal one. ( in nsWindow.cpp ) But if you do so, dialogs will
not come in front of other windows, I didn't test it recently, though.
I could't find the reason why these dialogs do not appear when
the dialogs have 'modal' feel.
Comment 5•24 years ago
|
||
Ah hah.
You hit the nail on the head Ham.
The problem is that when you click these buttons, they want to throw up another
window (an alert actually) that is a MODAL_SUBSET of the current BWindow, which
is already a MODAL_SUBSET of another BWindow. The problem is that under BeOS you
can't have a BWindow be a MODAL_SUBSET of another MODAL_SUBSET BWindow.
Three possible solutions I can think of:
1) Don't use (evil) modal windows. Of course this would have adverse
side-effects when the new window is an alert that you want to be blocking. Eg:
"Please enter an email address before clicking next". We'll just have to trust
the user (hah!). Easiest solution and it would get us running at least.
2) Figure out how to only make them MODAL_SUBSET windows if they are an
important alert/requestor (like in the example above). Harder and might require
updates to alot of dialogs.
3) Keep a "MODAL_SUBSET"-type bool privatly to each window, as well as maybe a
pointer to any sub windows it might spawn. If we spawn a new window, set the
bool to true and update the pointer to point to the new (non modal) window. Now,
if the user activates the window prematurely (B_WINDOW_ACTIVATED, bool active =
true) while the modal-subset bool is true and the pointer is valid, do
BWindow::Activate() to the "modal" dialog that is supposed to be up. When the
"modal" dialog is closed and sends its message(?) back to the "parent" window,
unset the bool and pointer.
Methods 2 and 3 would require work. Work I don't think I'd be able to handle.
What does everyone think? I'm curious if other platforms have hit this
limitation we have, and what their workaround was.
Comment 6•24 years ago
|
||
Updating summary and reassinging to Yannick.
Assignee: gayatrib → koehler
Status: UNCONFIRMED → NEW
Ever confirmed: true
Priority: -- → P5
Hardware: Other → PC
Summary: The 'new' button on the message filter dialog does not work → New MODAL_SUBSET windows are not created
Comment 7•24 years ago
|
||
Comment 8•24 years ago
|
||
This patch makes the Window Feel of Dialogs B_MODAL_APP_WINDOW always. This gets
us going, but dialogs will block access to the entire app, not just its
"parent". Unless someone has a better idea, I think this patch should go in so
these dialogs can be useable and prevent crashes.
Comment 9•24 years ago
|
||
I tested to change the dialog's feel to B_MODAL_APP_WINDOW_FEEL, then this bug
was solved, but on the other hand, pull-down-menus on dialogs stopped
working properly. ( ex: Preference->Appearance->Fonts->Language encoding)
I also tested to set B_NORMAL_WINDOW_FEEL, and there is no such problem.
But then, dialogs can be behind the other windows.
So, I think B_NORMAL_WINDOW_FEEL is the best so far, because it
disables nothing. But we should find some way to order windows.
Comment 10•24 years ago
|
||
Comment 11•23 years ago
|
||
i've checked in the last attachment. open to suggestions on managing the order of windows
Status: NEW → ASSIGNED
Comment 12•23 years ago
|
||
No more working on Bezilla
Assignee: koehler → nobody
Status: ASSIGNED → NEW
Comment 13•23 years ago
|
||
I don't know if these MODEL_SUBSET's are created or not, but it works the way it is supposed to now. marking FIXED.
Status: NEW → RESOLVED
Closed: 23 years ago
Resolution: --- → FIXED
Comment 15•22 years ago
|
||
Dialogs' behaviour is still far from being perfect in BeOS.
E.g. Find dialog should be permanently frontmost, when arised, but should still
allow access to main page. Now, with activating main window, find dialogs, as
password dialogs are going to background, and it is total pain to find them
sometimes among other apps and windows.
NS_METHOD nsWindow::Enable() function which should add proper behaviour for
dialogs, does really nothing in our case.
Status: VERIFIED → REOPENED
Resolution: FIXED → ---
Comment 16•22 years ago
|
||
Creates dialog windows with B_FLOATING_APP_WINDOW_FEEL (instead MODAL or NORMAL
as it was before), changes Enable() method
Comment 17•22 years ago
|
||
Still needs additional work on allowing drop-down boxes in filter field
Comment 18•22 years ago
|
||
eWindowType_popup is now also permanently B_FLOATING_APP_FEEL.
It allows not only working "New" button for creating message filters, but also
working drop-down boxes in this filter.
Attachment #88819 -
Attachment is obsolete: true
Comment 19•22 years ago
|
||
adding myself to CC
Assignee | ||
Comment 21•22 years ago
|
||
ok, it seems a bit better than before. however, shouldn't the dialog only be on
top of the window that openned it. i.e. if I have two browser windows, one
opens a dialog window, I switch to the other browser window, it overlaps the
dialog window. I switch back, the dialog comes forward. this is, at least,
what happens under linux.
as for the patch, I would remove the window_feel variable, and all the comments
around it, and just put the feel type in the constructor. the comments aren't
really needed, as, cvs gives us history, and comments are added with changes to cvs.
Comment 22•22 years ago
|
||
HYeah, Paul, it should, but problem is here: nsresult
nsWindow::StandardWindowCreate
parent = ((aParent) ? (BView *)aParent->GetNativeData(NS_NATIVE_WINDOW) : nsnull);
In case of dialogs' tree (see beginning of this bug) this parent should point on
previous dialog, not on first window. In such case we'll be able to use
B_FLOATING_SUBSET_WINDOW_FEEL without problem (with adding secondary dialog to
subset of primary dialog window, not to subset of main window).
But i don't know how to do it.
Comment 23•22 years ago
|
||
opps, regarding previous comment... this gets just previous dialog as parent.
so thesis should be inverted, sorry.
Comment 24•22 years ago
|
||
Now dialogs "belongs" to window, not whole app (following Paul's request).
In reality there is something "GetTopWindow" now in code, so in future it may
be separated as function/metod, if needed.
bug 72488 depends a little bit on checkin of this (as it affects also popups),
so i'm on hold.
Attachment #88830 -
Attachment is obsolete: true
Comment 25•22 years ago
|
||
has little issue. If you close secondary dialog, e.g. Alert "Not Found" for
"Find" dialog, focus don't go automatically to primary ("Find") dialog, but to
main window.
But it seems rather subject to further SetFocus()/Show() improvements, than for
this bug.
Comment 26•22 years ago
|
||
Now parentless dialogs have, as it should be, B_NORMAL_WINDOW_FEEL flag, so
those form itslef "root" for subsets.
Comment 27•22 years ago
|
||
Comment on attachment 89263 [details] [diff] [review]
Dialogs now belongs to window, not app
obsolete
Attachment #89263 -
Attachment is obsolete: true
Assignee | ||
Comment 28•22 years ago
|
||
much better!
is there a reason that you create subsets as floating, and not modal? (line 579)
I've changed it to B_MODAL_SUBSET_WINDOW_FEEL, and, personally, I like the way
it works a bit better. For one thing, if you focus on another window that does
not have a dialog, the warning/dialog still stays on top of the window it is
"attached" to.
Comment 29•22 years ago
|
||
About MODAL.
There are 2 reasons.
1)For "Find" dialog i prefer that main window stays still accessbile,
when dialog is raised. As far as i understand, it should be availble in case
of other dialogs too, except cases, when Enable() function was called explicitly
2) setting it as MODAL brings us to "roots" of this bug - drop-down lists in
"New" mail filter creation dialog don't work. So it needs bothering with flags
and handling of eWindowType_popup widgets.
If you agree with argument 1) i can try to fix problem with alert box in
Destroy() method.
Btw, maybe this bug needs some discussion outside bugzilla.
Comment 30•22 years ago
|
||
Added implementation of NS_METHOD SetModal().
Attachment #24864 -
Attachment is obsolete: true
Attachment #25606 -
Attachment is obsolete: true
Attachment #89289 -
Attachment is obsolete: true
Comment 31•22 years ago
|
||
Fixes stupid hiding of Find box when right-click popup is called from its
text-input field, and also hiding of primary message filter dialog, when "New
Filter" dialog rises.
Attachment #89691 -
Attachment is obsolete: true
Comment 32•22 years ago
|
||
hehe, there is funny side effect with popups being floating:
with enabled tooltips "mouse over" on tooltip place brings whole mozilla
frontmost, if it was in background/non-active.
Though, remedy should be in another bug/patch - related to popups and mose
events handling.
Attachment #89727 -
Flags: needs-work+
Assignee | ||
Comment 33•22 years ago
|
||
Comment on attachment 89727 [details] [diff] [review]
patch
in nsWindow::Enable, there is a chance that
the Looper may be locked, without being Unlocked if the window type is a popup.
Comment 34•22 years ago
|
||
removed Enable function from my code long ago - it rather stays on the way
everywhere than really does any job in BeOS. Here it immediatelly returns NS_OK;
So patch should be updated
Comment 35•22 years ago
|
||
Enable is placeholder now.
Addition in Show() prevents from driving window frontmost by tooltips.
Attachment #89727 -
Attachment is obsolete: true
Assignee | ||
Comment 36•22 years ago
|
||
Comment on attachment 93048 [details] [diff] [review]
Patch
You like to create extra variables, don't you Sergei :)
>+NS_METHOD nsWindow::SetModal(PRBool aModal)
>+{
>+ window_feel feel, newfeel;
You can get rid of the above two vars
>+ if(mView && mView->Window())
>+ {
>+ feel= mView->Window()->Feel();
remove above line
>+ if(aModal)
>+ {
>+ switch(feel)
change to switch(mView->Window()->Feel())
>+ {
>+ case B_FLOATING_SUBSET_WINDOW_FEEL:
>+ newfeel = B_MODAL_SUBSET_WINDOW_FEEL;
change to mView->Window()->SetFeel(B_MODAL_SUBSET_WINDOW_FEEL);
do this for all the others as well
Beyond that, tooltips will still bring windows forward, though, not the window
the tooltip is being shown for. ex:
open two mozilla windows, open a non mozilla window, put both mozilla windows
behind the non-mozilla window. tooltip from one window, will bring the other
one forward over the non-window.
solution: don't display tooltips for non-active windows
Attachment #93048 -
Flags: needs-work+
Comment 38•22 years ago
|
||
Comment on attachment 93092 [details] [diff] [review]
patch
outdated. working on new patch
Attachment #93092 -
Attachment is obsolete: true
Assignee | ||
Comment 40•21 years ago
|
||
fix dependency. This depends on bug#134837, it does not block it
Assignee | ||
Comment 41•21 years ago
|
||
Due to fix of Bug134837, marking fixed
Status: ASSIGNED → RESOLVED
Closed: 23 years ago → 21 years ago
Resolution: --- → FIXED
Comment 42•21 years ago
|
||
We still don't have proper modality and floating handling...
Maybe i should open bug with more exact problem desription.
Updated•20 years ago
|
Product: MailNews → Core
Comment 43•20 years ago
|
||
Ok, it seems that fix for bug 247700 (forcing message loop start for invisble
window) which fixed a bit message chain, has effect also on this problem.
Instead a tricky solution of combination several floatong and modal modes i
tried before to put it working (there were unofficial builds with working
floating and modal windows available 2 or 3 years ago), much simpler solutions
seem working.
Updated•16 years ago
|
Product: Core → MailNews Core
You need to log in
before you can comment on or make changes to this bug.
Description
•