diff options
| -rw-r--r-- | CHANGES | 6 | ||||
| -rw-r--r-- | FL/Fl.H | 2 | ||||
| -rw-r--r-- | FL/Fl_Help_Dialog.H | 12 | ||||
| -rw-r--r-- | documentation/Fl.html | 10 | ||||
| -rw-r--r-- | documentation/widgets.html | 3 | ||||
| -rw-r--r-- | src/Fl_Browser_.cxx | 14 | ||||
| -rw-r--r-- | src/Fl_Help_Dialog.cxx | 103 | ||||
| -rw-r--r-- | src/Fl_Help_Dialog.fl | 4 | ||||
| -rw-r--r-- | src/Fl_Help_View.cxx | 63 | ||||
| -rw-r--r-- | src/Fl_Scroll.cxx | 8 | ||||
| -rw-r--r-- | src/Fl_Text_Display.cxx | 2 | ||||
| -rw-r--r-- | src/Fl_get_system_colors.cxx | 9 |
12 files changed, 131 insertions, 105 deletions
@@ -1,11 +1,13 @@ CHANGES IN FLTK 1.1.8 + - Documentation fixes (STR #1454, STR #1455, STR #1456, + STR #1457, STR #1458, STR #1460, STR #1481) + - Added Fl::scrollbar_size() methods that are used by all + of the scrollbar-using widgets (STR #1500) - fl_read_image() was broken on Intel-based Macs (STR #1490) - Fl_Progress was using the wrong width to calculate progress (STR #1492) - - Documentation fixes (STR #1454, STR #1455, STR #1456, - STR #1457, STR #1458, STR #1460, STR #1481) - Fl::x(), Fl::y(), Fl::w(), and Fl::h() did not report the desktop work area on X11 (STR #1482) - Shortcut events could be sent to the wrong window (STR @@ -109,6 +109,8 @@ public: static int scheme(const char*); static const char* scheme() {return scheme_;} static int reload_scheme(); + static int scrollbar_size(); + static void scrollbar_size(int W); // execution: static int wait(); diff --git a/FL/Fl_Help_Dialog.H b/FL/Fl_Help_Dialog.H index 934386cc7..b22eaefd4 100644 --- a/FL/Fl_Help_Dialog.H +++ b/FL/Fl_Help_Dialog.H @@ -25,7 +25,7 @@ // http://www.fltk.org/str.php // -// generated by Fast Light User Interface Designer (fluid) version 1.0107 +// generated by Fast Light User Interface Designer (fluid) version 1.0108 #ifndef Fl_Help_Dialog_H #define Fl_Help_Dialog_H @@ -37,11 +37,11 @@ #include <FL/Fl_Input.H> class FL_EXPORT Fl_Help_Dialog { - int index_; - int max_; - int line_[100]; - char file_[100][256]; - int find_pos_; + int index_; + int max_; + int line_[100]; + char file_[100][256]; + int find_pos_; public: Fl_Help_Dialog(); private: diff --git a/documentation/Fl.html b/documentation/Fl.html index 69c19af61..8cd78507a 100644 --- a/documentation/Fl.html +++ b/documentation/Fl.html @@ -121,6 +121,7 @@ state information and global methods for the current application.</P> <LI><A HREF="#Fl.scheme">scheme</A></LI> <LI><A HREF="#Fl.screen_count">screen_count</A></LI> <LI><A HREF="#Fl.screen_xywh">screen_xywh</A></LI> + <LI><A HREF="#Fl.scrollbar_size">scrollbar_size</A></LI> <LI><A HREF="#Fl.selection">selection</A></LI> <LI><A HREF="#Fl.selection_owner">selection_owner</A></LI> <LI><A HREF="#Fl.set_abort">set_abort</A></LI> @@ -1128,6 +1129,15 @@ specified coordinates. The last form gets the bounding box for the numbered screen, where <tt>n</tt> is a number from 0 to the number of screens less 1.</P> +<H4><A NAME="Fl.scrollbar_size">void scrollbar_size(int W);<BR> +int scrollbar_size();</A></H4> + +<P>Sets or gets the default scrollbar size that is used by the +<A HREF="Fl_Browser_.html#Fl_Browser_"><TT>Fl_Browser_</TT></A>, +<A HREF="Fl_Help_View.html#Fl_Help_View"><TT>Fl_Help_View</TT></A>, +<A HREF="Fl_Scroll.html#Fl_Scroll"><TT>Fl_Scroll</TT></A>, and +<A HREF="Fl_Text_Display.html#Fl_Text_Display"><TT>Fl_Text_Display</TT></A> widgets.</P> + <H4><A NAME="Fl.selection">void selection(Fl_Widget &owner, const char* stuff, int len);</A></H4> <P>Changes the current selection. The block of text is diff --git a/documentation/widgets.html b/documentation/widgets.html index c5fc41b33..2778a65bb 100644 --- a/documentation/widgets.html +++ b/documentation/widgets.html @@ -681,7 +681,8 @@ For a description of the <TT>fl_</TT> functions, see <LI>scrollbar_align: <A HREF="Fl_Text_Display.html#Fl_Text_Display.scrollbar_align">Fl_Text_Display</A></LI> <LI>scrollbar_left: <A href="Fl_Browser_.html#Fl_Browser_.scrollbar_left">Fl_Browser_</A></LI> <LI>scrollbar_right: <A href="Fl_Browser_.html#Fl_Browser_.scrollbar_right">Fl_Browser_</A></LI> -<LI>scrollbar_width: <A HREF="Fl_Text_Display.html#Fl_Text_Display.scrollbar_width">Fl_Text_Display</A></LI> +<LI>scrollbar_size: <A HREF="Fl.html#Fl.scrollbar_size">Fl</A></LI> +<LI>scrollbar_width: <A HREF="Fl_Browser_.html#Fl_Browser_.scrollbar_width">Fl_Browser_</A>, <A HREF="Fl_Text_Display.html#Fl_Text_Display.scrollbar_width">Fl_Text_Display</A></LI> <LI>scrollvalue: <A href=Fl_Slider.html#Fl_Slider.scrollvalue>Fl_Slider</A></LI> <LI>search_backward: <A HREF="Fl_Text_Buffer.html#Fl_Text_Buffer.search_backward">Fl_Text_Buffer</A></LI> <LI>search_forward: <A HREF="Fl_Text_Buffer.html#Fl_Text_Buffer.search_forward">Fl_Text_Buffer</A></LI> diff --git a/src/Fl_Browser_.cxx b/src/Fl_Browser_.cxx index 8637e9cba..852b25431 100644 --- a/src/Fl_Browser_.cxx +++ b/src/Fl_Browser_.cxx @@ -3,7 +3,7 @@ // // Base Browser widget class for the Fast Light Tool Kit (FLTK). // -// Copyright 1998-2005 by Bill Spitzak and others. +// Copyright 1998-2006 by Bill Spitzak and others. // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Library General Public @@ -67,8 +67,20 @@ static void hscrollbar_callback(Fl_Widget* s, void*) { ((Fl_Browser_*)(s->parent()))->hposition(int(((Fl_Scrollbar*)s)->value())); } +// Scrollbar size should be part of the Fl class, but is left here for +// binary compatibility in 1.1.x - M. Sweet int Fl_Browser_::scrollbar_width_ = 16; +// Get the standard scrollbar size +int Fl::scrollbar_size() { + return Fl_Browser_::scrollbar_width(); +} + +// Set the standard scrollbar size +void Fl::scrollbar_size(int W) { + Fl_Browser_::scrollbar_width(W); +} + // return where to draw the actual box: void Fl_Browser_::bbox(int& X, int& Y, int& W, int& H) const { Fl_Boxtype b = box() ? box() : FL_DOWN_BOX; diff --git a/src/Fl_Help_Dialog.cxx b/src/Fl_Help_Dialog.cxx index c38e7c8c0..9760cd7d7 100644 --- a/src/Fl_Help_Dialog.cxx +++ b/src/Fl_Help_Dialog.cxx @@ -25,7 +25,7 @@ // http://www.fltk.org/str.php // -// generated by Fast Light User Interface Designer (fluid) version 1.0107 +// generated by Fast Light User Interface Designer (fluid) version 1.0108 #include "../FL/Fl_Help_Dialog.H" #include "flstring.h" @@ -154,72 +154,61 @@ void Fl_Help_Dialog::cb_find_(Fl_Input* o, void* v) { } Fl_Help_Dialog::Fl_Help_Dialog() { - Fl_Double_Window* w; - { Fl_Double_Window* o = window_ = new Fl_Double_Window(530, 385, "Help Dialog"); - w = o; - o->user_data((void*)(this)); - { Fl_Help_View* o = view_ = new Fl_Help_View(10, 10, 510, 330); - o->box(FL_DOWN_BOX); - o->color(FL_BACKGROUND_COLOR); - o->selection_color(FL_SELECTION_COLOR); - o->labeltype(FL_NORMAL_LABEL); - o->labelfont(0); - o->labelsize(14); - o->labelcolor(FL_FOREGROUND_COLOR); - o->callback((Fl_Callback*)cb_view_); - o->align(FL_ALIGN_TOP); - o->when(FL_WHEN_RELEASE); - o->end(); - Fl_Group::current()->resizable(o); - } + { window_ = new Fl_Double_Window(530, 385, "Help Dialog"); + window_->user_data((void*)(this)); + { view_ = new Fl_Help_View(10, 10, 510, 330); + view_->box(FL_DOWN_BOX); + view_->callback((Fl_Callback*)cb_view_); + Fl_Group::current()->resizable(view_); + } // Fl_Help_View* view_ { Fl_Group* o = new Fl_Group(10, 348, 510, 27); { Fl_Button* o = new Fl_Button(456, 350, 64, 25, "Close"); o->callback((Fl_Callback*)cb_Close); o->label(fl_close); - } - { Fl_Button* o = back_ = new Fl_Button(386, 350, 25, 25, "@<-"); - o->tooltip("Show the previous help page."); - o->shortcut(0xff51); - o->labelcolor((Fl_Color)2); - o->callback((Fl_Callback*)cb_back_); - } - { Fl_Button* o = forward_ = new Fl_Button(421, 350, 25, 25, "@->"); - o->tooltip("Show the next help page."); - o->shortcut(0xff53); - o->labelcolor((Fl_Color)2); - o->callback((Fl_Callback*)cb_forward_); - } - { Fl_Button* o = smaller_ = new Fl_Button(316, 350, 25, 25, "F"); - o->tooltip("Make the help text smaller."); - o->labelfont(1); - o->labelsize(10); - o->callback((Fl_Callback*)cb_smaller_); - } - { Fl_Button* o = larger_ = new Fl_Button(351, 350, 25, 25, "F"); - o->tooltip("Make the help text larger."); - o->labelfont(1); - o->labelsize(16); - o->callback((Fl_Callback*)cb_larger_); - } + } // Fl_Button* o + { back_ = new Fl_Button(386, 350, 25, 25, "@<-"); + back_->tooltip("Show the previous help page."); + back_->shortcut(0xff51); + back_->labelcolor((Fl_Color)2); + back_->callback((Fl_Callback*)cb_back_); + } // Fl_Button* back_ + { forward_ = new Fl_Button(421, 350, 25, 25, "@->"); + forward_->tooltip("Show the next help page."); + forward_->shortcut(0xff53); + forward_->labelcolor((Fl_Color)2); + forward_->callback((Fl_Callback*)cb_forward_); + } // Fl_Button* forward_ + { smaller_ = new Fl_Button(316, 350, 25, 25, "F"); + smaller_->tooltip("Make the help text smaller."); + smaller_->labelfont(1); + smaller_->labelsize(10); + smaller_->callback((Fl_Callback*)cb_smaller_); + } // Fl_Button* smaller_ + { larger_ = new Fl_Button(351, 350, 25, 25, "F"); + larger_->tooltip("Make the help text larger."); + larger_->labelfont(1); + larger_->labelsize(16); + larger_->callback((Fl_Callback*)cb_larger_); + } // Fl_Button* larger_ { Fl_Group* o = new Fl_Group(10, 350, 296, 25); o->box(FL_DOWN_BOX); o->color(FL_BACKGROUND2_COLOR); - { Fl_Input* o = find_ = new Fl_Input(35, 352, 268, 21, "@search"); - o->tooltip("find text in document"); - o->box(FL_FLAT_BOX); - o->labelsize(13); - o->callback((Fl_Callback*)cb_find_); - o->when(FL_WHEN_ENTER_KEY_ALWAYS); - Fl_Group::current()->resizable(o); - } + { find_ = new Fl_Input(35, 352, 268, 21, "@search"); + find_->tooltip("find text in document"); + find_->box(FL_FLAT_BOX); + find_->labelsize(13); + find_->callback((Fl_Callback*)cb_find_); + find_->when(FL_WHEN_ENTER_KEY_ALWAYS); + Fl_Group::current()->resizable(find_); + } // Fl_Input* find_ o->end(); Fl_Group::current()->resizable(o); - } + } // Fl_Group* o o->end(); - } - o->size_range(260, 150); - o->end(); - } + } // Fl_Group* o + window_->size_range(260, 150); + window_->end(); + } // Fl_Double_Window* window_ back_->deactivate(); forward_->deactivate(); diff --git a/src/Fl_Help_Dialog.fl b/src/Fl_Help_Dialog.fl index 42f044bfe..8d013ddba 100644 --- a/src/Fl_Help_Dialog.fl +++ b/src/Fl_Help_Dialog.fl @@ -47,7 +47,7 @@ class FL_EXPORT Fl_Help_Dialog {open label {Help Dialog} open private xywh {398 65 530 385} type Double resizable size_range {260 150 0 0} visible } { - Fl_Group view_ { + Fl_Help_View view_ { callback {if (view_->filename()) { if (view_->changed()) @@ -87,8 +87,6 @@ class FL_EXPORT Fl_Help_Dialog {open forward_->deactivate(); }} open private xywh {10 10 510 330} box DOWN_BOX selection_color 15 resizable - code0 {\#include <FL/Fl_Help_View.H>} - class Fl_Help_View } {} Fl_Group {} {open xywh {10 348 510 27} diff --git a/src/Fl_Help_View.cxx b/src/Fl_Help_View.cxx index 2fcc5b41a..75fffa6e6 100644 --- a/src/Fl_Help_View.cxx +++ b/src/Fl_Help_View.cxx @@ -434,20 +434,21 @@ Fl_Help_View::draw() draw_box(b, x(), y(), ww, hh, bgcolor_); + int ss = Fl::scrollbar_size(); if (hscrollbar_.visible()) { draw_child(hscrollbar_); - hh -= 17; + hh -= ss; i ++; } if (scrollbar_.visible()) { draw_child(scrollbar_); - ww -= 17; + ww -= ss; i ++; } if (i == 2) { fl_color(FL_GRAY); fl_rectf(x() + ww - Fl::box_dw(b) + Fl::box_dx(b), - y() + hh - Fl::box_dh(b) + Fl::box_dy(b), 17, 17); + y() + hh - Fl::box_dh(b) + Fl::box_dy(b), ss, ss); } if (!value_) @@ -941,13 +942,6 @@ Fl_Help_View::draw() } fl_pop_clip(); - if (Fl::focus()==this) { - ww = w() ; - hh = h(); - if (hscrollbar_.visible()) hh -= 18; - if (scrollbar_.visible()) ww -= 18; - draw_focus(box(), x(), y(), ww, hh); - } } @@ -1775,38 +1769,47 @@ Fl_Help_View::format() int dx = Fl::box_dw(b) - Fl::box_dx(b); int dy = Fl::box_dh(b) - Fl::box_dy(b); + int ss = Fl::scrollbar_size(); + int dw = Fl::box_dw(b) + ss; + int dh = Fl::box_dh(b); - if (hsize_ > (w() - 24)) { + if (hsize_ > (w() - dw)) { hscrollbar_.show(); - if (size_ < (h() - 24)) { + dh += ss; + + if (size_ < (h() - dh)) { scrollbar_.hide(); - hscrollbar_.resize(x() + Fl::box_dx(b), y() + h() - 17 - dy, w() - Fl::box_dw(b), 17); + hscrollbar_.resize(x() + Fl::box_dx(b), y() + h() - ss - dy, + w() - Fl::box_dw(b), ss); } else { scrollbar_.show(); - scrollbar_.resize(x() + w() - 17 - dx, y() + Fl::box_dy(b), 17, h() - 17 - Fl::box_dh(b)); - hscrollbar_.resize(x() + Fl::box_dx(b), y() + h() - 17 - dy, w() - 17 - Fl::box_dw(b), 17); + scrollbar_.resize(x() + w() - ss - dx, y() + Fl::box_dy(b), + ss, h() - ss - Fl::box_dh(b)); + hscrollbar_.resize(x() + Fl::box_dx(b), y() + h() - ss - dy, + w() - ss - Fl::box_dw(b), ss); } } else { hscrollbar_.hide(); - if (size_ < (h() - 8)) scrollbar_.hide(); + if (size_ < (h() - dh)) scrollbar_.hide(); else { - scrollbar_.resize(x() + w() - 17 - dx, y() + Fl::box_dy(b), 17, h() - Fl::box_dh(b)); + scrollbar_.resize(x() + w() - ss - dx, y() + Fl::box_dy(b), + ss, h() - Fl::box_dh(b)); scrollbar_.show(); } } // Reset scrolling if it needs to be... if (scrollbar_.visible()) { - int temph = h() - 8; - if (hscrollbar_.visible()) temph -= 16; + int temph = h() - Fl::box_dh(box()); + if (hscrollbar_.visible()) temph -= ss; if ((topline_ + temph) > size_) topline(size_ - temph); else topline(topline_); } else topline(0); if (hscrollbar_.visible()) { - int tempw = w() - 24; + int tempw = w() - ss - Fl::box_dw(box()); if ((leftline_ + tempw) > hsize_) leftline(hsize_ - tempw); else leftline(leftline_); } else leftline(0); @@ -2743,10 +2746,6 @@ Fl_Help_View::handle(int event) // I - Event to handle fl_cursor(FL_CURSOR_DEFAULT); return 1; case FL_PUSH: - if (Fl::focus() != this) { - Fl::focus(this); - handle(FL_FOCUS); - } if (Fl_Group::handle(event)) return 1; linkp = find_link(xx, yy); @@ -2814,8 +2813,10 @@ Fl_Help_View::Fl_Help_View(int xx, // I - Left position int hh, // I - Height in pixels const char *l) : Fl_Group(xx, yy, ww, hh, l), - scrollbar_(xx + ww - 17, yy, 17, hh - 17), - hscrollbar_(xx, yy + hh - 17, ww - 17, 17) + scrollbar_(xx + ww - Fl::scrollbar_size(), yy, + Fl::scrollbar_size(), hh - Fl::scrollbar_size()), + hscrollbar_(xx, yy + hh - Fl::scrollbar_size(), + ww - Fl::scrollbar_size(), Fl::scrollbar_size()) { color(FL_BACKGROUND2_COLOR, FL_SELECTION_COLOR); @@ -3001,10 +3002,12 @@ Fl_Help_View::resize(int xx, // I - New left position Fl_Widget::resize(xx, yy, ww, hh); - scrollbar_.resize(x() + w() - 17 - Fl::box_dw(b) + Fl::box_dx(b), y() + Fl::box_dy(b), - 17, h() - 17 - Fl::box_dh(b)); - hscrollbar_.resize(x() + Fl::box_dx(b), y() + h() - 17 - Fl::box_dh(b) + Fl::box_dy(b), - w() - 17 - Fl::box_dw(b), 17); + int ss = Fl::scrollbar_size(); + scrollbar_.resize(x() + w() - ss - Fl::box_dw(b) + Fl::box_dx(b), + y() + Fl::box_dy(b), ss, h() - ss - Fl::box_dh(b)); + hscrollbar_.resize(x() + Fl::box_dx(b), + y() + h() - ss - Fl::box_dh(b) + Fl::box_dy(b), + w() - ss - Fl::box_dw(b), ss); format(); } diff --git a/src/Fl_Scroll.cxx b/src/Fl_Scroll.cxx index 0053385cc..a3bc85c1b 100644 --- a/src/Fl_Scroll.cxx +++ b/src/Fl_Scroll.cxx @@ -273,12 +273,12 @@ void Fl_Scroll::scrollbar_cb(Fl_Widget* o, void*) { s->position(s->xposition(), int(((Fl_Scrollbar*)o)->value())); } -#define SLIDER_WIDTH 16 - Fl_Scroll::Fl_Scroll(int X,int Y,int W,int H,const char* L) : Fl_Group(X,Y,W,H,L), - scrollbar(X+W-SLIDER_WIDTH,Y,SLIDER_WIDTH,H-SLIDER_WIDTH), - hscrollbar(X,Y+H-SLIDER_WIDTH,W-SLIDER_WIDTH,SLIDER_WIDTH) { + scrollbar(X+W-Fl::scrollbar_size(),Y, + Fl::scrollbar_size(),H-Fl::scrollbar_size()), + hscrollbar(X,Y+H-Fl::scrollbar_size(), + W-Fl::scrollbar_size(),Fl::scrollbar_size()) { type(BOTH); xposition_ = 0; yposition_ = 0; diff --git a/src/Fl_Text_Display.cxx b/src/Fl_Text_Display.cxx index a74149711..efc2a5196 100644 --- a/src/Fl_Text_Display.cxx +++ b/src/Fl_Text_Display.cxx @@ -105,7 +105,7 @@ Fl_Text_Display::Fl_Text_Display(int X, int Y, int W, int H, const char* l) end(); - scrollbar_width(16); + scrollbar_width(Fl::scrollbar_size()); scrollbar_align(FL_ALIGN_BOTTOM_RIGHT); mCursorOn = 0; diff --git a/src/Fl_get_system_colors.cxx b/src/Fl_get_system_colors.cxx index 9df0b6739..753254606 100644 --- a/src/Fl_get_system_colors.cxx +++ b/src/Fl_get_system_colors.cxx @@ -322,6 +322,9 @@ int Fl::reload_scheme() { set_boxtype(FL_THIN_DOWN_BOX, FL_PLASTIC_THIN_DOWN_BOX); set_boxtype(_FL_ROUND_UP_BOX, FL_PLASTIC_ROUND_UP_BOX); set_boxtype(_FL_ROUND_DOWN_BOX, FL_PLASTIC_ROUND_DOWN_BOX); + + // Use standard size scrollbars... + Fl::scrollbar_size(16); } else if (scheme_ && !strcasecmp(scheme_, "gtk+")) { // Use a GTK+ inspired look-n-feel... if (scheme_bg_) { @@ -340,6 +343,9 @@ int Fl::reload_scheme() { set_boxtype(FL_THIN_DOWN_BOX, FL_GTK_THIN_DOWN_BOX); set_boxtype(_FL_ROUND_UP_BOX, FL_GTK_ROUND_UP_BOX); set_boxtype(_FL_ROUND_DOWN_BOX, FL_GTK_ROUND_DOWN_BOX); + + // Use slightly thinner scrollbars... + Fl::scrollbar_size(15); } else { // Use the standard FLTK look-n-feel... if (scheme_bg_) { @@ -358,6 +364,9 @@ int Fl::reload_scheme() { set_boxtype(FL_THIN_DOWN_BOX, fl_thin_down_box, 1, 1, 2, 2); set_boxtype(_FL_ROUND_UP_BOX, fl_round_up_box, 3, 3, 6, 6); set_boxtype(_FL_ROUND_DOWN_BOX, fl_round_down_box, 3, 3, 6, 6); + + // Use standard size scrollbars... + Fl::scrollbar_size(16); } // Set (or clear) the background tile for all windows... |
