mirror of
https://github.com/yann64/haikuports.git
synced 2026-04-22 19:50:05 +02:00
Use tint_color to build disabled toolbar icons that look nicer.
This commit is contained in:
@@ -404,7 +404,7 @@ index b047bd0..b41130a 100644
|
||||
+};
|
||||
+
|
||||
diff --git a/beos/scaffolding.cpp b/beos/scaffolding.cpp
|
||||
index 4003b09..6389e75 100644
|
||||
index 4003b09..e0c6e6a 100644
|
||||
--- a/beos/scaffolding.cpp
|
||||
+++ b/beos/scaffolding.cpp
|
||||
@@ -22,7 +22,9 @@
|
||||
@@ -521,7 +521,7 @@ index 4003b09..6389e75 100644
|
||||
} else {
|
||||
if (g->top_view->Looper())
|
||||
g->top_view->UnlockLooper();
|
||||
@@ -1659,6 +1699,90 @@ static BMenuItem *make_menu_item(const char *name, BMessage *message)
|
||||
@@ -1659,6 +1699,97 @@ static BMenuItem *make_menu_item(const char *name, BMessage *message)
|
||||
return item;
|
||||
}
|
||||
|
||||
@@ -537,6 +537,7 @@ index 4003b09..6389e75 100644
|
||||
+ void SetBitmap(const char* attrName);
|
||||
+ private:
|
||||
+ BBitmap* fBitmap;
|
||||
+ BBitmap* fDisabledBitmap;
|
||||
+};
|
||||
+
|
||||
+
|
||||
@@ -551,6 +552,7 @@ index 4003b09..6389e75 100644
|
||||
+BBitmapButton::~BBitmapButton()
|
||||
+{
|
||||
+ delete fBitmap;
|
||||
+ delete fDisabledBitmap;
|
||||
+}
|
||||
+
|
||||
+
|
||||
@@ -566,20 +568,16 @@ index 4003b09..6389e75 100644
|
||||
+ rgb_color color = LowColor();
|
||||
+
|
||||
+ SetDrawingMode(B_OP_ALPHA);
|
||||
+ if(Value() != 0) {
|
||||
+ // button is clicked
|
||||
+ DrawBitmap(fBitmap, BPoint(1, 1));
|
||||
+ } else {
|
||||
+ // button is released
|
||||
+ DrawBitmap(fBitmap, BPoint(0, 0));
|
||||
+ }
|
||||
+
|
||||
+ if(!IsEnabled())
|
||||
+ {
|
||||
+ color.alpha = 127;
|
||||
+ SetLowColor(color);
|
||||
+ FillRect(updateRect, B_SOLID_LOW);
|
||||
+ }
|
||||
+ if(IsEnabled()) {
|
||||
+ if(Value() != 0) {
|
||||
+ // button is clicked
|
||||
+ DrawBitmap(fBitmap, BPoint(1, 1));
|
||||
+ } else {
|
||||
+ // button is released
|
||||
+ DrawBitmap(fBitmap, BPoint(0, 0));
|
||||
+ }
|
||||
+ } else
|
||||
+ DrawBitmap(fDisabledBitmap, BPoint(0, 0));
|
||||
+}
|
||||
+
|
||||
+
|
||||
@@ -602,9 +600,18 @@ index 4003b09..6389e75 100644
|
||||
+ delete fBitmap;
|
||||
+ fBitmap = NULL;
|
||||
+ }
|
||||
+
|
||||
+ fDisabledBitmap = new BBitmap(fBitmap);
|
||||
+ rgb_color* pixel = (rgb_color*)fDisabledBitmap->Bits();
|
||||
+ for(int i = 0; i < fDisabledBitmap->BitsLength()/4; i++)
|
||||
+ {
|
||||
+ *pixel = tint_color(*pixel, B_DISABLED_MARK_TINT);
|
||||
+ pixel++;
|
||||
+ }
|
||||
+#else
|
||||
+ // No vector icon support on BeOS. We could try to load a bitmap one
|
||||
+ fBitmap = NULL;
|
||||
+ fDisabledBitmap = NULL;
|
||||
+#endif
|
||||
+}
|
||||
+
|
||||
@@ -612,7 +619,7 @@ index 4003b09..6389e75 100644
|
||||
nsbeos_scaffolding *nsbeos_new_scaffolding(struct gui_window *toplevel)
|
||||
{
|
||||
struct beos_scaffolding *g = (struct beos_scaffolding *)malloc(sizeof(*g));
|
||||
@@ -1676,7 +1800,6 @@ nsbeos_scaffolding *nsbeos_new_scaffolding(struct gui_window *toplevel)
|
||||
@@ -1676,7 +1807,6 @@ nsbeos_scaffolding *nsbeos_new_scaffolding(struct gui_window *toplevel)
|
||||
|
||||
g->window = NULL;
|
||||
g->menu_bar = NULL;
|
||||
@@ -620,7 +627,7 @@ index 4003b09..6389e75 100644
|
||||
|
||||
if (replicated && !replicant_view) {
|
||||
warn_user("Error: No subwindow allowed when replicated.", NULL);
|
||||
@@ -1685,7 +1808,6 @@ nsbeos_scaffolding *nsbeos_new_scaffolding(struct gui_window *toplevel)
|
||||
@@ -1685,7 +1815,6 @@ nsbeos_scaffolding *nsbeos_new_scaffolding(struct gui_window *toplevel)
|
||||
|
||||
|
||||
if (!replicant_view) {
|
||||
@@ -628,7 +635,7 @@ index 4003b09..6389e75 100644
|
||||
BRect frame(0, 0, 600-1, 500-1);
|
||||
if (nsoption_int(window_width) > 0) {
|
||||
frame.Set(0, 0, nsoption_int(window_width) - 1, nsoption_int(window_height) - 1);
|
||||
@@ -1696,7 +1818,7 @@ nsbeos_scaffolding *nsbeos_new_scaffolding(struct gui_window *toplevel)
|
||||
@@ -1696,7 +1825,7 @@ nsbeos_scaffolding *nsbeos_new_scaffolding(struct gui_window *toplevel)
|
||||
NSBrowserWindow *win = nsbeos_find_last_window();
|
||||
if (win) {
|
||||
pos = win->Frame().LeftTop();
|
||||
@@ -637,7 +644,7 @@ index 4003b09..6389e75 100644
|
||||
}
|
||||
pos += BPoint(20, 20);
|
||||
BScreen screen;
|
||||
@@ -2038,14 +2160,13 @@ nsbeos_scaffolding *nsbeos_new_scaffolding(struct gui_window *toplevel)
|
||||
@@ -2038,14 +2167,13 @@ nsbeos_scaffolding *nsbeos_new_scaffolding(struct gui_window *toplevel)
|
||||
rect = g->top_view->Bounds();
|
||||
rect.bottom = rect.top + TOOLBAR_HEIGHT - 1;
|
||||
rect.right = rect.right - DRAGGER_WIDTH;
|
||||
@@ -653,7 +660,7 @@ index 4003b09..6389e75 100644
|
||||
rect = g->tool_bar->Bounds();
|
||||
rect.right = TOOLBAR_HEIGHT;
|
||||
rect.InsetBySelf(5, 5);
|
||||
@@ -2054,35 +2175,35 @@ nsbeos_scaffolding *nsbeos_new_scaffolding(struct gui_window *toplevel)
|
||||
@@ -2054,35 +2182,35 @@ nsbeos_scaffolding *nsbeos_new_scaffolding(struct gui_window *toplevel)
|
||||
|
||||
message = new BMessage('back');
|
||||
message->AddPointer("scaffolding", g);
|
||||
@@ -694,7 +701,7 @@ index 4003b09..6389e75 100644
|
||||
g->tool_bar->AddChild(g->home_button);
|
||||
nButtons++;
|
||||
|
||||
@@ -2407,3 +2528,4 @@ void nsbeos_scaffolding_popup_menu(nsbeos_scaffolding *g, BPoint where)
|
||||
@@ -2407,3 +2535,4 @@ void nsbeos_scaffolding_popup_menu(nsbeos_scaffolding *g, BPoint where)
|
||||
{
|
||||
g->popup_menu->Go(where);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user