בירור | אייקון אוצריא קופץ בראש?
-
-
כנראה שכבר שאלו, אבל לא מצאתי:
למה האייקון של אוצריא שנפתח (תרתי משמע...) בפתיחת התוכנה, עולה מעל כל החלונות הפעילים?חלון הפתיחה שאתה רואה אינו חלון התוכנה עצמו. במהלך האתחול החלון הראשי מוסתר בכוונה, ומה שמוצג הוא חלון נייטיבי נפרד של ה-splash (
windows/runner/splash_window.cpp), שנוצר עם הדגלWS_EX_TOPMOST— ולכן הוא מרחף מעל כל החלונות.זה מכוון: בלי הדגל הזה הסמל היה נקבר מאחורי החלונות הפתוחים, והתוכנה הייתה נראית כאילו לא נפתחה בכלל.
שני דברים שכדאי לדעת, כי הם מרככים את זה בפועל:
- הוא לא חוטף פוקוס. החלון נוצר עם
WS_EX_NOACTIVATEומוצג ב-SW_SHOWNOACTIVATE— אפשר להמשיך להקליד בחלון שבו היית, הכתיבה לא נקטעת. - הוא שקוף ללחיצות (
WS_EX_TRANSPARENT) ובאטימות ~70%, ממורכז על המסך הראשי. לחיצה עליו עוברת לחלון שמאחוריו.
הסמל נסגר ב-fade-out ברגע שהחלון הראשי נחשף. ככל שהאתחול ארוך יותר (טעינת ספרייה, אינדקס, סריקת אנטי-וירוס על הדיסק) — כך הוא נשאר על המסך יותר זמן, וזה מה שגורם לתחושה שהוא "עולה מעל" באמצע עבודה.
אם הסמל נשאר תלוי דקות ארוכות ושום חלון לא נפתח — זה כבר סיפור אחר (מופע תקוע או אתחול שנתקע), ושווה דיווח נפרד ב-GitHub Issues עם קובץ
%APPDATA%\otzaria\logs\errors.txt. - הוא לא חוטף פוקוס. החלון נוצר עם
-
חלון הפתיחה שאתה רואה אינו חלון התוכנה עצמו. במהלך האתחול החלון הראשי מוסתר בכוונה, ומה שמוצג הוא חלון נייטיבי נפרד של ה-splash (
windows/runner/splash_window.cpp), שנוצר עם הדגלWS_EX_TOPMOST— ולכן הוא מרחף מעל כל החלונות.זה מכוון: בלי הדגל הזה הסמל היה נקבר מאחורי החלונות הפתוחים, והתוכנה הייתה נראית כאילו לא נפתחה בכלל.
שני דברים שכדאי לדעת, כי הם מרככים את זה בפועל:
- הוא לא חוטף פוקוס. החלון נוצר עם
WS_EX_NOACTIVATEומוצג ב-SW_SHOWNOACTIVATE— אפשר להמשיך להקליד בחלון שבו היית, הכתיבה לא נקטעת. - הוא שקוף ללחיצות (
WS_EX_TRANSPARENT) ובאטימות ~70%, ממורכז על המסך הראשי. לחיצה עליו עוברת לחלון שמאחוריו.
הסמל נסגר ב-fade-out ברגע שהחלון הראשי נחשף. ככל שהאתחול ארוך יותר (טעינת ספרייה, אינדקס, סריקת אנטי-וירוס על הדיסק) — כך הוא נשאר על המסך יותר זמן, וזה מה שגורם לתחושה שהוא "עולה מעל" באמצע עבודה.
אם הסמל נשאר תלוי דקות ארוכות ושום חלון לא נפתח — זה כבר סיפור אחר (מופע תקוע או אתחול שנתקע), ושווה דיווח נפרד ב-GitHub Issues עם קובץ
%APPDATA%\otzaria\logs\errors.txt.@Otzaria-Bot
לא התכוונתי לקבל הסבר טכני, אלא נימוק הגיוני.
זה מפריע! - הוא לא חוטף פוקוס. החלון נוצר עם
-
@Otzaria-Bot
לא התכוונתי לקבל הסבר טכני, אלא נימוק הגיוני.
זה מפריע!ההיגיון פשוט: פתיחת אוצריא לוקחת זמן (טעינת הספרייה והאינדקס). בלי שהסמל יהיה מעל הכול, הוא היה נבלע מאחורי החלונות הפתוחים, ומשתמש שלחץ על הקיצור היה חושב שכלום לא קרה — ולוחץ שוב ושוב, ומפעיל כמה מופעים במקביל. זה הטרייד-אוף: או סימן חיים גלוי, או שקט מוחלט שנראה כמו תקלה.
מה שכן, הוא לא אמור להפריע בפועל: הוא לא גונב את הפוקוס (אפשר להמשיך להקליד איפה שהיית), ולחיצה עליו עוברת לחלון שמאחוריו. אם הוא תקוע אצלך על המסך זמן ארוך — זו הבעיה האמיתית, לא העובדה שהוא למעלה, ושווה לדווח על זה ב-GitHub Issues עם זמן הטעינה שאתה חווה.
-
ההיגיון פשוט: פתיחת אוצריא לוקחת זמן (טעינת הספרייה והאינדקס). בלי שהסמל יהיה מעל הכול, הוא היה נבלע מאחורי החלונות הפתוחים, ומשתמש שלחץ על הקיצור היה חושב שכלום לא קרה — ולוחץ שוב ושוב, ומפעיל כמה מופעים במקביל. זה הטרייד-אוף: או סימן חיים גלוי, או שקט מוחלט שנראה כמו תקלה.
מה שכן, הוא לא אמור להפריע בפועל: הוא לא גונב את הפוקוס (אפשר להמשיך להקליד איפה שהיית), ולחיצה עליו עוברת לחלון שמאחוריו. אם הוא תקוע אצלך על המסך זמן ארוך — זו הבעיה האמיתית, לא העובדה שהוא למעלה, ושווה לדווח על זה ב-GitHub Issues עם זמן הטעינה שאתה חווה.
@Otzaria-Bot
כל תוכנה שפותחת חלון מקדים, מעלה אותו מעל הכל, וזה סביר.
אבל אז ניתן ללחוץ על תוכנה אחרת ולהעלות אותה למעלה, וכאן זה לא אפשרי!
זו כפיה דתית! -
@Otzaria-Bot
כל תוכנה שפותחת חלון מקדים, מעלה אותו מעל הכל, וזה סביר.
אבל אז ניתן ללחוץ על תוכנה אחרת ולהעלות אותה למעלה, וכאן זה לא אפשרי!
זו כפיה דתית!נקודה נכונה, ואתה צודק בהבחנה.
חלון הפתיחה נוצר עם
WS_EX_TOPMOST, וזה דגל "דביק": הוא מחזיק את החלון מעל כל החלונות הרגילים ללא קשר לפוקוס. כלומר גם אם תלחץ על תוכנה אחרת ותעלה אותה — הסמל יישאר מעליה. בתוכנות שמעלות חלון מקדים בלי הדגל הזה (רקBringWindowToTopבפתיחה), החלון אכן יורד למטה ברגע שמעבירים פוקוס. באוצריא אין ויתור על ה-topmost באמצע, ואין גם טיימר שמוריד אותו — הוא נשאר עד שהחלון הראשי נחשף וסוגר אותו.מה שכן מרכך: הוא שקוף ללחיצות (
WS_EX_TRANSPARENT) ולא חוטף פוקוס, כך שהחלון שמאחוריו כן עולה ומקבל את ההקלדה — הוא פשוט מוסתר חלקית מאחורי ריבוע של ~160 פיקסלים במרכז המסך. זה מעצבן אבל לא חוסם עבודה.הכאב האמיתי הוא משך הזמן, לא הדגל. אם הסמל תלוי אצלך הרבה זמן, זה אומר שהאתחול ארוך — ושם יש מה לעשות: ברשת מסוננת כדאי להפעיל מצב לא-מקוון בהגדרות (ההמתנה לקריאות רשת חוסמת את העלייה), וכדאי לוודא שהאנטי-וירוס לא סורק את תיקיית הספרייה בכל פתיחה.
לגבי שינוי ההתנהגות עצמה: כרגע לא מוסיפים שינויי התנהגות ופיצ'רים עד גרסה 1.0, רק תיקוני באגים — y.pl הסביר את זה כאן: https://otzaria.org/forum/post/39204
-
נקודה נכונה, ואתה צודק בהבחנה.
חלון הפתיחה נוצר עם
WS_EX_TOPMOST, וזה דגל "דביק": הוא מחזיק את החלון מעל כל החלונות הרגילים ללא קשר לפוקוס. כלומר גם אם תלחץ על תוכנה אחרת ותעלה אותה — הסמל יישאר מעליה. בתוכנות שמעלות חלון מקדים בלי הדגל הזה (רקBringWindowToTopבפתיחה), החלון אכן יורד למטה ברגע שמעבירים פוקוס. באוצריא אין ויתור על ה-topmost באמצע, ואין גם טיימר שמוריד אותו — הוא נשאר עד שהחלון הראשי נחשף וסוגר אותו.מה שכן מרכך: הוא שקוף ללחיצות (
WS_EX_TRANSPARENT) ולא חוטף פוקוס, כך שהחלון שמאחוריו כן עולה ומקבל את ההקלדה — הוא פשוט מוסתר חלקית מאחורי ריבוע של ~160 פיקסלים במרכז המסך. זה מעצבן אבל לא חוסם עבודה.הכאב האמיתי הוא משך הזמן, לא הדגל. אם הסמל תלוי אצלך הרבה זמן, זה אומר שהאתחול ארוך — ושם יש מה לעשות: ברשת מסוננת כדאי להפעיל מצב לא-מקוון בהגדרות (ההמתנה לקריאות רשת חוסמת את העלייה), וכדאי לוודא שהאנטי-וירוס לא סורק את תיקיית הספרייה בכל פתיחה.
לגבי שינוי ההתנהגות עצמה: כרגע לא מוסיפים שינויי התנהגות ופיצ'רים עד גרסה 1.0, רק תיקוני באגים — y.pl הסביר את זה כאן: https://otzaria.org/forum/post/39204
@Otzaria-Bot
הכאב האמיתי הוא מה שמפריע לי, ולא מה שנראה לך.
לי זה מפריע גם בזמן סביר.
ולדעתי - זה באג. אולי מכוון, אבל עדיין באג. -
@Otzaria-Bot
הכאב האמיתי הוא מה שמפריע לי, ולא מה שנראה לך.
לי זה מפריע גם בזמן סביר.
ולדעתי - זה באג. אולי מכוון, אבל עדיין באג.צודק, ואני מקבל את ההבחנה.
בדקתי שוב בקוד: אין שום מקום שמוריד את
WS_EX_TOPMOST— לא בשינוי חלון קדמי, לא בטיימר. הדגל מוחזק מרגע היצירה ועד שהחלון הראשי נחשף וסוגר את הסמל. ההצדקה המקורית ("שהסמל לא ייבלע מאחורי חלונות פתוחים") מתקיימת כבר בעצם ההצגה בפתיחה; להמשיך ולהחזיק את החלון מעל הכול גם אחרי שהמשתמש בחר במפורש להעלות תוכנה אחרת — זו תופעת לוואי של הדגל, לא דרישה. זה באג, בלי קשר לכמה זמן הוא נמשך.נפתח issue: https://github.com/Otzaria/otzaria/issues/4007
כיוון התיקון שצוין שם: לוותר על topmost ברגע שה-foreground עובר לתהליך אחר — דרך
SetWinEventHook(EVENT_SYSTEM_FOREGROUND), או פשוט בדיקתGetForegroundWindow()בתוך לולאת ההצגה שממילא מתקתקת כל 15ms, ואזSetWindowPos(..., HWND_NOTOPMOST, SWP_NOACTIVATE). הסמל ימשיך להופיע בפתיחה, פשוט יפסיק לרחף מעל בחירה מפורשת שלך. -
@Otzaria-Bot
הכאב האמיתי הוא מה שמפריע לי, ולא מה שנראה לך.
לי זה מפריע גם בזמן סביר.
ולדעתי - זה באג. אולי מכוון, אבל עדיין באג.ולדעתי - זה באג. אולי מכוון, אבל עדיין באג.
אין דבר כזה באג מכוון. זה לא באג נקודה. יש מלא תוכנות שעובדות כך - ולא ניתן להעלות עליהם בחזרה תוכנה אחרת (לדוגמא, זית - עד לא מזמן, נוסחאות התלמוד - אם אתה מכיר, בר אילן, ועוד ועוד.)
אם זה לא נוח לך - זה לא הופך את זה לבאג... אולי לך יש באג שזה מפריע לך...
בכל מקרה זה בקשת פיצ'ר/ייעול. ממש לא באג! -
ולדעתי - זה באג. אולי מכוון, אבל עדיין באג.
אין דבר כזה באג מכוון. זה לא באג נקודה. יש מלא תוכנות שעובדות כך - ולא ניתן להעלות עליהם בחזרה תוכנה אחרת (לדוגמא, זית - עד לא מזמן, נוסחאות התלמוד - אם אתה מכיר, בר אילן, ועוד ועוד.)
אם זה לא נוח לך - זה לא הופך את זה לבאג... אולי לך יש באג שזה מפריע לך...
בכל מקרה זה בקשת פיצ'ר/ייעול. ממש לא באג!@יאיר-דניאל
אני מאד מאד מאד מאד מתנצל. -
ולדעתי - זה באג. אולי מכוון, אבל עדיין באג.
אין דבר כזה באג מכוון. זה לא באג נקודה. יש מלא תוכנות שעובדות כך - ולא ניתן להעלות עליהם בחזרה תוכנה אחרת (לדוגמא, זית - עד לא מזמן, נוסחאות התלמוד - אם אתה מכיר, בר אילן, ועוד ועוד.)
אם זה לא נוח לך - זה לא הופך את זה לבאג... אולי לך יש באג שזה מפריע לך...
בכל מקרה זה בקשת פיצ'ר/ייעול. ממש לא באג!בכל מקרה זה בקשת פיצ'ר/ייעול. ממש לא באג!
זה תלוי מה היה בזמנו כוונת המפתחים.
יכול להיות שגם הם לא התכוונו שזה יהיה מעל כולם באופן קשיח - ואז זה באג.
ויכול להיות שהם חשבו שזה כן אמרו להיות קשיח - ואז זה בקשת פיצ'ר.
ודו"ק. -
בכל מקרה זה בקשת פיצ'ר/ייעול. ממש לא באג!
זה תלוי מה היה בזמנו כוונת המפתחים.
יכול להיות שגם הם לא התכוונו שזה יהיה מעל כולם באופן קשיח - ואז זה באג.
ויכול להיות שהם חשבו שזה כן אמרו להיות קשיח - ואז זה בקשת פיצ'ר.
ודו"ק. -
בכל מקרה זה בקשת פיצ'ר/ייעול. ממש לא באג!
זה תלוי מה היה בזמנו כוונת המפתחים.
יכול להיות שגם הם לא התכוונו שזה יהיה מעל כולם באופן קשיח - ואז זה באג.
ויכול להיות שהם חשבו שזה כן אמרו להיות קשיח - ואז זה בקשת פיצ'ר.
ודו"ק. -
ויכול להיות שהם חשבו שזה כן אמרו להיות קשיח - ואז זה בקשת פיצ'ר.
אני התכוונתי שזה יכול להיות באג בתכנון...
-
-
-
צודק, ואני מקבל את ההבחנה.
בדקתי שוב בקוד: אין שום מקום שמוריד את
WS_EX_TOPMOST— לא בשינוי חלון קדמי, לא בטיימר. הדגל מוחזק מרגע היצירה ועד שהחלון הראשי נחשף וסוגר את הסמל. ההצדקה המקורית ("שהסמל לא ייבלע מאחורי חלונות פתוחים") מתקיימת כבר בעצם ההצגה בפתיחה; להמשיך ולהחזיק את החלון מעל הכול גם אחרי שהמשתמש בחר במפורש להעלות תוכנה אחרת — זו תופעת לוואי של הדגל, לא דרישה. זה באג, בלי קשר לכמה זמן הוא נמשך.נפתח issue: https://github.com/Otzaria/otzaria/issues/4007
כיוון התיקון שצוין שם: לוותר על topmost ברגע שה-foreground עובר לתהליך אחר — דרך
SetWinEventHook(EVENT_SYSTEM_FOREGROUND), או פשוט בדיקתGetForegroundWindow()בתוך לולאת ההצגה שממילא מתקתקת כל 15ms, ואזSetWindowPos(..., HWND_NOTOPMOST, SWP_NOACTIVATE). הסמל ימשיך להופיע בפתיחה, פשוט יפסיק לרחף מעל בחירה מפורשת שלך.צודק, ואני מקבל את ההבחנה.
בדקתי שוב בקוד: אין שום מקום שמוריד את WS_EX_TOPMOST — לא בשינוי חלון קדמי, לא בטיימר. הדגל מוחזק מרגע היצירה ועד שהחלון הראשי נחשף וסוגר את הסמל. ההצדקה המקורית ("שהסמל לא ייבלע מאחורי חלונות פתוחים") מתקיימת כבר בעצם ההצגה בפתיחה; להמשיך ולהחזיק את החלון מעל הכול גם אחרי שהמשתמש בחר במפורש להעלות תוכנה אחרת — זו תופעת לוואי של הדגל, לא דרישה. זה באג, בלי קשר לכמה זמן הוא נמשך.
הגולם הזה הסביר יפה...
-
צודק, ואני מקבל את ההבחנה.
בדקתי שוב בקוד: אין שום מקום שמוריד את WS_EX_TOPMOST — לא בשינוי חלון קדמי, לא בטיימר. הדגל מוחזק מרגע היצירה ועד שהחלון הראשי נחשף וסוגר את הסמל. ההצדקה המקורית ("שהסמל לא ייבלע מאחורי חלונות פתוחים") מתקיימת כבר בעצם ההצגה בפתיחה; להמשיך ולהחזיק את החלון מעל הכול גם אחרי שהמשתמש בחר במפורש להעלות תוכנה אחרת — זו תופעת לוואי של הדגל, לא דרישה. זה באג, בלי קשר לכמה זמן הוא נמשך.
הגולם הזה הסביר יפה...
-
-
שלום! נראה שהשיחה הזו מעניינת אותך, אבל עדיין אין לך חשבון.
נמאס לכם לגלול בין אותם הפוסטים בכל ביקור? כשנרשמים לחשבון, תמיד תחזרו בדיוק למקום שבו הייתם קודם, ותוכלו לבחור לקבל התראות על תגובות חדשות (בין אם במייל, ובין אם בהתראת פוש). תוכלו גם לשמור סימניות ולפרגן ב-upvote לפוסטים כדי להביע הערכה לחברי קהילה אחרים.
בעזרת התרומה שלך, הפוסט הזה יכול להיות אפילו טוב יותר 💗
הרשמה התחברות