Skip to content

Commit 102284d

Browse files
committed
ds00: Fix the logic for border color and border size
1 parent d645933 commit 102284d

File tree

6 files changed

+131
-169
lines changed

6 files changed

+131
-169
lines changed

winu/core/ds/ds00/ui/createw.c

Lines changed: 50 additions & 80 deletions
Original file line numberDiff line numberDiff line change
@@ -369,7 +369,7 @@ struct gws_window_d *do_create_titlebar(
369369
const int is_maximized = (parent->state == WINDOW_STATE_MAXIMIZED);
370370

371371
// Use parent->border_size (must be set in doCreateWindowFrame before this call)
372-
unsigned long b = parent->border_size;
372+
unsigned long b = parent->Border.border_size;
373373

374374
TitleBarLeft = b;
375375
TitleBarTop = b;
@@ -645,6 +645,7 @@ doCreateWindowFrame (
645645
struct gws_window_d *sbWindow;
646646
int id=-1; //usado pra registrar janelas filhas.
647647
int Type=0;
648+
648649
// Border size
649650
unsigned long BorderSize = (border_size & 0xFFFF);
650651

@@ -701,9 +702,8 @@ doCreateWindowFrame (
701702
}
702703

703704
// Save border colors setted by the caller
704-
window->border_color1 = (unsigned int) BorderColor1;
705-
window->border_color2 = (unsigned int) BorderColor2;
706-
705+
window->Border.border_color1 = (unsigned int) BorderColor1;
706+
window->Border.border_color2 = (unsigned int) BorderColor2;
707707

708708
// Uma overlapped maximizada não tem borda.
709709
int IsMaximized = FALSE;
@@ -803,34 +803,8 @@ doCreateWindowFrame (
803803
if ( Type == WT_EDITBOX_SINGLE_LINE ||
804804
Type == WT_EDITBOX_MULTIPLE_LINES )
805805
{
806-
807-
// #todo
808-
// The window structure has a element for border size
809-
// and a flag to indicate that border is used.
810-
// It also has a border style.
811-
812-
// #todo: Essa rotina de cores deve ir para
813-
// dentro da função __draw_window_border().
814-
// ou passar tudo via argumento.
815-
// ou criar uma rotina para mudar as caracteristicas da borda.
816-
817-
// If it has the input focus.
818-
// Respecting the colors received via parameter
819-
if (window == keyboard_owner){
820-
BorderSize = 2;
821-
} else if (window != keyboard_owner){
822-
BorderSize = 1;
823-
};
824-
825-
window->border_size = 0;
826-
window->borderUsed = FALSE;
827-
//if (useBorder == TRUE){
828-
//window->border_color1 = (unsigned int) BorderColor1;
829-
//window->border_color2 = (unsigned int) BorderColor2;
830-
window->border_size = BorderSize;
831-
window->borderUsed = TRUE;
832-
//}
833-
806+
window->Border.border_size = BorderSize;
807+
window->borderUsed = TRUE;
834808
// Draw the border of an edit box
835809
__draw_window_border(parent,window);
836810
return 0;
@@ -856,24 +830,6 @@ doCreateWindowFrame (
856830
// and a flag to indicate that border is used.
857831
// It also has a border style.
858832

859-
// Se tiver o foco.
860-
//if (window->focus == TRUE){
861-
// BorderColor1 = (unsigned int) get_color(csiWWFBorder);
862-
// BorderColor2 = (unsigned int) get_color(csiWWFBorder);
863-
//}else{
864-
// BorderColor1 = (unsigned int) get_color(csiWindowBorder);
865-
// BorderColor2 = (unsigned int) get_color(csiWindowBorder);
866-
//};
867-
868-
//window->border_size = 0;
869-
//window->borderUsed = FALSE;
870-
//if (useBorder==TRUE){
871-
//window->border_color1 = (unsigned int) BorderColor1;
872-
//window->border_color2 = (unsigned int) BorderColor2;
873-
//window->border_size = BorderSize;
874-
// window->borderUsed = TRUE;
875-
//}
876-
877833
// Quatro bordas de uma janela overlapped.
878834
// Uma overlapped maximizada não tem bordas.
879835
window->borderUsed = FALSE;
@@ -892,7 +848,7 @@ doCreateWindowFrame (
892848
// #important:
893849
// The border in an overlapped window will affect
894850
// the top position of the client area rectangle.
895-
window->rcClient.top += window->border_size;
851+
window->rcClient.top += window->Border.border_size;
896852

897853
//
898854
// Title bar
@@ -1455,20 +1411,20 @@ void *doCreateWindow (
14551411
//window->dirty = FALSE; // Validate
14561412
//window->locked = FALSE;
14571413

1458-
// Initializing border stuff
1459-
// #todo: use get_color(x)
1460-
window->border_color1 = COLOR_WHITE;
1461-
window->border_color2 = COLOR_WHITE;
1462-
window->border_size = 2;
1463-
window->border_style = 0;
1414+
// == Border =============================
1415+
// Initializing border info for the first time.
1416+
window->Border.border_color1 = HONEY_COLOR_BORDER_LIGHT_NOFOCUS;
1417+
window->Border.border_color2 = HONEY_COLOR_BORDER_DARK_NOFOCUS;
1418+
window->Border.border_size = METRICS_BORDER_SIZE;
1419+
window->Border.border_style = 0;
1420+
1421+
// Is it used or not?
14641422
window->borderUsed = FALSE;
14651423
// ## na verdade isse será trabalhado logo abaixo.
1466-
if (window->type == WT_OVERLAPPED)
1467-
{
1424+
if (window->type == WT_OVERLAPPED){
14681425
window->borderUsed = TRUE;
1469-
window->border_style = 1; // Minimum
14701426
}
1471-
unsigned long __BorderSize = window->border_size;
1427+
unsigned long __BorderSize = window->Border.border_size;
14721428

14731429
// Title bar height.
14741430
// #todo: use metrics.
@@ -1702,9 +1658,6 @@ void *doCreateWindow (
17021658
// Left margin and top margin.
17031659
// The top margin changes if we have a bar.
17041660

1705-
//clientRect.left = (unsigned long) __BorderSize;
1706-
//clientRect.top = (unsigned long) __BorderSize;
1707-
17081661
// >> Relative values <<
17091662

17101663
// Left
@@ -2015,7 +1968,7 @@ void *doCreateWindow (
20151968
window->shadow_style = 0;
20161969
window->background_style = 0;
20171970
window->titlebar_style = 0;
2018-
window->border_style = 0;
1971+
window->Border.border_style = 0;
20191972
window->menubar_style = 0;
20201973
window->toolbar_style = 0;
20211974
window->clientarea_style = 0;
@@ -3037,26 +2990,43 @@ void *CreateWindow (
30372990
isActiveWindow = TRUE;
30382991

30392992

2993+
// == Normal windows =================================
30402994
// Border Color 1 = top/left (Light)
30412995
// Border Color 2 = right/bottom (Dark)
30422996

3043-
// Its a wwf
3044-
if (isKeyboardOwner == TRUE){
3045-
bc_1 = (unsigned int) get_color(csiWWFBorder);
3046-
bc_2 = (unsigned int) HONEY_COLOR_BORDER_DARK_WWF; //get_color(csiWWFBorder);
2997+
if (isActiveWindow == TRUE){
2998+
bc_1 = HONEY_COLOR_BORDER_LIGHT_ACTIVE; //get_color(csiActiveWindowBorder);
2999+
bc_2 = HONEY_COLOR_BORDER_DARK_ACTIVE; //get_color(csiActiveWindowBorder);
30473000
} else {
3048-
bc_1 = (unsigned int) get_color(csiWindowBorder);
3049-
bc_2 = (unsigned int) HONEY_COLOR_BORDER_DARK_NOFOCUS; //get_color(csiWindowBorder);
3001+
bc_1 = HONEY_COLOR_BORDER_LIGHT_INACTIVE; //get_color(csiActiveWindowBorder);
3002+
bc_2 = HONEY_COLOR_BORDER_DARK_INACTIVE; //get_color(csiActiveWindowBorder);
3003+
// Its a wwf
3004+
if (isKeyboardOwner == TRUE){
3005+
bc_1 = (unsigned int) HONEY_COLOR_BORDER_LIGHT_WWF; //get_color(csiWWFBorder);
3006+
bc_2 = (unsigned int) HONEY_COLOR_BORDER_DARK_WWF; //get_color(csiWWFBorder);
3007+
} else {
3008+
bc_1 = (unsigned int) HONEY_COLOR_BORDER_LIGHT_NOFOCUS; //get_color(csiWindowBorder);
3009+
bc_2 = (unsigned int) HONEY_COLOR_BORDER_DARK_NOFOCUS; //get_color(csiWindowBorder);
3010+
}
30503011
}
30513012

3052-
// Its an active window.
3053-
// Active window override
3054-
// We will not use the colors for wwf anymore,
3055-
// Now we will use the colors for active window.
3056-
if (isActiveWindow == TRUE)
3013+
// == Editbox windows =================================
3014+
// Border Color 1 = top/left (Dark)
3015+
// Border Color 2 = right/bottom (Light)
3016+
3017+
if (type == WT_EDITBOX_SINGLE_LINE || type == WT_EDITBOX_MULTIPLE_LINES)
30573018
{
3058-
bc_1 = HONEY_COLOR_BORDER_LIGHT_ACTIVE; //get_color(csiActiveWindowBorder);
3059-
bc_2 = HONEY_COLOR_BORDER_DARK_ACTIVE; //get_color(csiActiveWindowBorder);
3019+
// focus
3020+
// Border Color 1 = top/left (Dark)
3021+
// Border Color 2 = right/bottom (Light)
3022+
if (isKeyboardOwner == TRUE){
3023+
bc_1 = (unsigned int) HONEY_COLOR_BORDER_DARK_WWF; //get_color(csiWWFBorder);
3024+
bc_2 = (unsigned int) HONEY_COLOR_BORDER_LIGHT_WWF; //get_color(csiWWFBorder);
3025+
// no focus
3026+
} else {
3027+
bc_1 = (unsigned int) HONEY_COLOR_BORDER_DARK_NOFOCUS; //get_color(csiWindowBorder);
3028+
bc_2 = (unsigned int) HONEY_COLOR_BORDER_LIGHT_NOFOCUS; //get_color(csiWindowBorder);
3029+
}
30603030
}
30613031

30623032

@@ -3626,9 +3596,9 @@ void maximize_window(struct gws_window_d *window)
36263596
if (window->type == WT_OVERLAPPED)
36273597
{
36283598
window->rcClient.width =
3629-
window->width - (window->border_size * 2);
3599+
window->width - (window->Border.border_size * 2);
36303600
window->rcClient.height =
3631-
window->height - (window->titlebar_height + window->border_size * 2);
3601+
window->height - (window->titlebar_height + window->Border.border_size * 2);
36323602
}
36333603

36343604
//

winu/core/ds/ds00/ui/metrics.h

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,10 @@
1616
#define METRICS_ICON_LEFT METRICS_ICON_LEFTPAD
1717
#define METRICS_ICON_TOP METRICS_ICON_TOPPAD
1818

19-
// Border thickness for overlapped windows
20-
// (applications can override if needed)
21-
#define METRICS_BORDER_SIZE 3
22-
19+
// Border thickness
20+
// #important: Do not mess with this thing,
21+
// other components depends on this for calculations.
22+
#define METRICS_BORDER_SIZE 2
2323

2424
// ======================================================
2525
// Taskbar Metrics

0 commit comments

Comments
 (0)