mirror of
https://github.com/fltk/fltk.git
synced 2026-06-04 23:42:15 +08:00
Remove public member function Fl_Window_Driver *Fl_Window::driver() so class Fl_Window_Driver is not in FLTK public API.
This function is replaced by static Fl_Window_Driver* Fl_Window_Driver::(const Fl_Window *win). The purpose is to have class Fl_Window_Driver outside from FLTK ABI. git-svn-id: file:///fltk/svn/fltk/branches/branch-1.4@12915 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
This commit is contained in:
+1
-3
@@ -527,8 +527,6 @@ public:
|
|||||||
*/
|
*/
|
||||||
int decorated_h() const;
|
int decorated_h() const;
|
||||||
|
|
||||||
Fl_Window_Driver *driver() const { return pWindowDriver; }
|
|
||||||
|
|
||||||
// Note: Doxygen docs in Fl_Widget.H to avoid redundancy.
|
// Note: Doxygen docs in Fl_Widget.H to avoid redundancy.
|
||||||
virtual Fl_Window* as_window() { return this; }
|
virtual Fl_Window* as_window() { return this; }
|
||||||
|
|
||||||
@@ -545,7 +543,7 @@ public:
|
|||||||
void shape(const Fl_Image* img);
|
void shape(const Fl_Image* img);
|
||||||
void shape(const Fl_Image& b) ;
|
void shape(const Fl_Image& b) ;
|
||||||
int is_shaped();
|
int is_shaped();
|
||||||
|
inline int screen_num();
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -181,6 +181,7 @@ public:
|
|||||||
#endif
|
#endif
|
||||||
virtual int scroll(int src_x, int src_y, int src_w, int src_h, int dest_x, int dest_y,
|
virtual int scroll(int src_x, int src_y, int src_w, int src_h, int dest_x, int dest_y,
|
||||||
void (*draw_area)(void*, int,int,int,int), void* data) { return 0; }
|
void (*draw_area)(void*, int,int,int,int), void* data) { return 0; }
|
||||||
|
static Fl_Window_Driver* driver(const Fl_Window *win) {return win->pWindowDriver;}
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // FL_WINDOW_DRIVER_H
|
#endif // FL_WINDOW_DRIVER_H
|
||||||
|
|||||||
@@ -61,7 +61,7 @@ expressed in FLTK units by the current value of the scale factor
|
|||||||
for the screen in use and obtains quantities in <b>drawing units</b>.
|
for the screen in use and obtains quantities in <b>drawing units</b>.
|
||||||
The current scale factor value, for an Fl_Window named \e window, is given by
|
The current scale factor value, for an Fl_Window named \e window, is given by
|
||||||
\code
|
\code
|
||||||
int nscreen = window->driver()->screen_num(); // the screen where window is mapped
|
int nscreen = window->screen_num(); // the screen where window is mapped
|
||||||
float s = Fl::screen_driver()->scale(nscreen); // this screen's scale factor
|
float s = Fl::screen_driver()->scale(nscreen); // this screen's scale factor
|
||||||
\endcode
|
\endcode
|
||||||
One drawing unit generally corresponds to one screen pixel...
|
One drawing unit generally corresponds to one screen pixel...
|
||||||
|
|||||||
+3
-3
@@ -695,10 +695,10 @@ void Fl::flush() {
|
|||||||
damage_ = 0;
|
damage_ = 0;
|
||||||
for (Fl_X* i = Fl_X::first; i; i = i->next) {
|
for (Fl_X* i = Fl_X::first; i; i = i->next) {
|
||||||
Fl_Window* wi = i->w;
|
Fl_Window* wi = i->w;
|
||||||
if (wi->driver()->wait_for_expose_value) {damage_ = 1; continue;}
|
if (Fl_Window_Driver::driver(wi)->wait_for_expose_value) {damage_ = 1; continue;}
|
||||||
if (!wi->visible_r()) continue;
|
if (!wi->visible_r()) continue;
|
||||||
if (wi->damage()) {
|
if (wi->damage()) {
|
||||||
wi->driver()->flush();
|
Fl_Window_Driver::driver(wi)->flush();
|
||||||
wi->clear_damage();
|
wi->clear_damage();
|
||||||
}
|
}
|
||||||
// destroy damage regions for windows that don't use them:
|
// destroy damage regions for windows that don't use them:
|
||||||
@@ -912,7 +912,7 @@ void Fl::focus(Fl_Widget *o)
|
|||||||
while (w1) { win=w1; w1=win->window(); }
|
while (w1) { win=w1; w1=win->window(); }
|
||||||
if (win) {
|
if (win) {
|
||||||
if (fl_xfocus != win) {
|
if (fl_xfocus != win) {
|
||||||
win->driver()->take_focus();
|
Fl_Window_Driver::driver(win)->take_focus();
|
||||||
fl_xfocus = win;
|
fl_xfocus = win;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -54,15 +54,15 @@ void Fl_Double_Window::resize(int X,int Y,int W,int H) {
|
|||||||
int oh = h();
|
int oh = h();
|
||||||
Fl_Window::resize(X,Y,W,H);
|
Fl_Window::resize(X,Y,W,H);
|
||||||
Fl_X *myi = Fl_X::i(this);
|
Fl_X *myi = Fl_X::i(this);
|
||||||
if (myi && driver()->other_xid && (ow < w() || oh < h() || Fl_Window_Driver::is_a_rescale()))
|
if (myi && Fl_Window_Driver::driver(this)->other_xid && (ow < w() || oh < h() || Fl_Window_Driver::is_a_rescale()))
|
||||||
driver()->destroy_double_buffer();
|
Fl_Window_Driver::driver(this)->destroy_double_buffer();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void Fl_Double_Window::hide() {
|
void Fl_Double_Window::hide() {
|
||||||
Fl_X *myi = Fl_X::i(this);
|
Fl_X *myi = Fl_X::i(this);
|
||||||
if (myi && driver()->other_xid) {
|
if (myi && Fl_Window_Driver::driver(this)->other_xid) {
|
||||||
driver()->destroy_double_buffer();
|
Fl_Window_Driver::driver(this)->destroy_double_buffer();
|
||||||
}
|
}
|
||||||
Fl_Window::hide();
|
Fl_Window::hide();
|
||||||
}
|
}
|
||||||
@@ -70,7 +70,7 @@ void Fl_Double_Window::hide() {
|
|||||||
|
|
||||||
void Fl_Double_Window::flush()
|
void Fl_Double_Window::flush()
|
||||||
{
|
{
|
||||||
driver()->flush_double();
|
Fl_Window_Driver::driver(this)->flush_double();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -617,7 +617,7 @@ Fl_Gl_Window_Driver *Fl_Gl_Window_Driver::newGlWindowDriver(Fl_Gl_Window *w)
|
|||||||
|
|
||||||
float Fl_WinAPI_Gl_Window_Driver::pixels_per_unit()
|
float Fl_WinAPI_Gl_Window_Driver::pixels_per_unit()
|
||||||
{
|
{
|
||||||
int ns = pWindow->driver()->screen_num();
|
int ns = Fl_Window_Driver::driver(pWindow)->screen_num();
|
||||||
return Fl::screen_driver()->scale(ns);
|
return Fl::screen_driver()->scale(ns);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -715,7 +715,7 @@ void Fl_X11_Gl_Window_Driver::before_show(int& need_redraw) {
|
|||||||
|
|
||||||
float Fl_X11_Gl_Window_Driver::pixels_per_unit()
|
float Fl_X11_Gl_Window_Driver::pixels_per_unit()
|
||||||
{
|
{
|
||||||
int ns = pWindow->driver()->screen_num();
|
int ns = Fl_Window_Driver::driver(pWindow)->screen_num();
|
||||||
return Fl::screen_driver()->scale(ns);
|
return Fl::screen_driver()->scale(ns);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -27,17 +27,17 @@
|
|||||||
#include <FL/Fl_Window_Driver.H>
|
#include <FL/Fl_Window_Driver.H>
|
||||||
|
|
||||||
void Fl_Menu_Window::show() {
|
void Fl_Menu_Window::show() {
|
||||||
driver()->show_menu();
|
Fl_Window_Driver::driver(this)->show_menu();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Fl_Menu_Window::flush() {
|
void Fl_Menu_Window::flush() {
|
||||||
if (!shown()) return;
|
if (!shown()) return;
|
||||||
driver()->flush_menu();
|
Fl_Window_Driver::driver(this)->flush_menu();
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Erases the window, does nothing if HAVE_OVERLAY is not defined in config.h */
|
/** Erases the window, does nothing if HAVE_OVERLAY is not defined in config.h */
|
||||||
void Fl_Menu_Window::erase() {
|
void Fl_Menu_Window::erase() {
|
||||||
driver()->erase_menu();
|
Fl_Window_Driver::driver(this)->erase_menu();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Fix the colormap flashing on Maximum Impact Graphics by erasing the
|
// Fix the colormap flashing on Maximum Impact Graphics by erasing the
|
||||||
|
|||||||
@@ -51,7 +51,7 @@ void Fl_Overlay_Window::hide() {
|
|||||||
|
|
||||||
void Fl_Overlay_Window::flush()
|
void Fl_Overlay_Window::flush()
|
||||||
{
|
{
|
||||||
driver()->flush_overlay();
|
Fl_Window_Driver::driver(this)->flush_overlay();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Fl_Overlay_Window::resize(int X, int Y, int W, int H) {
|
void Fl_Overlay_Window::resize(int X, int Y, int W, int H) {
|
||||||
@@ -68,7 +68,7 @@ Fl_Overlay_Window::~Fl_Overlay_Window() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
int Fl_Overlay_Window::can_do_overlay() {
|
int Fl_Overlay_Window::can_do_overlay() {
|
||||||
return driver()->can_do_overlay();
|
return Fl_Window_Driver::driver(this)->can_do_overlay();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -78,7 +78,7 @@ int Fl_Overlay_Window::can_do_overlay() {
|
|||||||
calling show().
|
calling show().
|
||||||
*/
|
*/
|
||||||
void Fl_Overlay_Window::redraw_overlay() {
|
void Fl_Overlay_Window::redraw_overlay() {
|
||||||
driver()->redraw_overlay();
|
Fl_Window_Driver::driver(this)->redraw_overlay();
|
||||||
}
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
|
|||||||
@@ -302,7 +302,7 @@ void Fl_Screen_Driver::rescale_all_windows_from_screen(int screen, float f)
|
|||||||
int i = 0, count = 0; // count top-level windows, except transient scale-displaying window
|
int i = 0, count = 0; // count top-level windows, except transient scale-displaying window
|
||||||
Fl_Window *win = Fl::first_window();
|
Fl_Window *win = Fl::first_window();
|
||||||
while (win) {
|
while (win) {
|
||||||
if (!win->parent() && (win->driver()->screen_num() == screen || rescalable() == SYSTEMWIDE_APP_SCALING) &&
|
if (!win->parent() && (Fl_Window_Driver::driver(win)->screen_num() == screen || rescalable() == SYSTEMWIDE_APP_SCALING) &&
|
||||||
win->user_data() != &Fl_Screen_Driver::transient_scale_display) count++;
|
win->user_data() != &Fl_Screen_Driver::transient_scale_display) count++;
|
||||||
win = Fl::next_window(win);
|
win = Fl::next_window(win);
|
||||||
}
|
}
|
||||||
@@ -310,14 +310,14 @@ void Fl_Screen_Driver::rescale_all_windows_from_screen(int screen, float f)
|
|||||||
win = Fl::first_window(); // memorize all top-level windows
|
win = Fl::first_window(); // memorize all top-level windows
|
||||||
while (win) {
|
while (win) {
|
||||||
if (!win->parent() && win->user_data() != &Fl_Screen_Driver::transient_scale_display &&
|
if (!win->parent() && win->user_data() != &Fl_Screen_Driver::transient_scale_display &&
|
||||||
(win->driver()->screen_num() == screen || rescalable() == SYSTEMWIDE_APP_SCALING) ) {
|
(Fl_Window_Driver::driver(win)->screen_num() == screen || rescalable() == SYSTEMWIDE_APP_SCALING) ) {
|
||||||
win_array[i++] = win;
|
win_array[i++] = win;
|
||||||
}
|
}
|
||||||
win = Fl::next_window(win);
|
win = Fl::next_window(win);
|
||||||
}
|
}
|
||||||
for (i = count - 1; i >= 0; i--) { // rescale all top-level windows, finishing with front one
|
for (i = count - 1; i >= 0; i--) { // rescale all top-level windows, finishing with front one
|
||||||
win = win_array[i];
|
win = win_array[i];
|
||||||
win->driver()->resize_after_scale_change(screen, old_f, f);
|
Fl_Window_Driver::driver(win)->resize_after_scale_change(screen, old_f, f);
|
||||||
win->wait_for_expose();
|
win->wait_for_expose();
|
||||||
}
|
}
|
||||||
delete[] win_array;
|
delete[] win_array;
|
||||||
@@ -366,8 +366,8 @@ void Fl_Screen_Driver::transient_scale_display(float f, int nscreen)
|
|||||||
win->user_data((void*)&transient_scale_display); // prevent this window from being rescaled later
|
win->user_data((void*)&transient_scale_display); // prevent this window from being rescaled later
|
||||||
win->set_output();
|
win->set_output();
|
||||||
win->set_non_modal();
|
win->set_non_modal();
|
||||||
win->driver()->screen_num(nscreen);
|
Fl_Window_Driver::driver(win)->screen_num(nscreen);
|
||||||
win->driver()->force_position(1);
|
Fl_Window_Driver::driver(win)->force_position(1);
|
||||||
win->show();
|
win->show();
|
||||||
Fl::add_timeout(1, del_transient_window, win); // delete after 1 sec
|
Fl::add_timeout(1, del_transient_window, win); // delete after 1 sec
|
||||||
}
|
}
|
||||||
@@ -382,7 +382,7 @@ int Fl_Screen_Driver::scale_handler(int event)
|
|||||||
if (Fl::grab()) return 0; // don't rescale when menu windows are on
|
if (Fl::grab()) return 0; // don't rescale when menu windows are on
|
||||||
Fl_Widget *wid = Fl::focus();
|
Fl_Widget *wid = Fl::focus();
|
||||||
if (!wid) return 0;
|
if (!wid) return 0;
|
||||||
int screen = wid->top_window()->driver()->screen_num();
|
int screen = Fl_Window_Driver::driver(wid->top_window())->screen_num();
|
||||||
Fl_Screen_Driver *screen_dr = Fl::screen_driver();
|
Fl_Screen_Driver *screen_dr = Fl::screen_driver();
|
||||||
static float initial_scale = screen_dr->scale(screen);
|
static float initial_scale = screen_dr->scale(screen);
|
||||||
#if defined(TEST_SCALING)
|
#if defined(TEST_SCALING)
|
||||||
|
|||||||
@@ -155,7 +155,7 @@ void Fl_Widget_Surface::print_window_part(Fl_Window *win, int x, int y, int w, i
|
|||||||
Fl_Window *save_front = Fl::first_window();
|
Fl_Window *save_front = Fl::first_window();
|
||||||
win->show();
|
win->show();
|
||||||
Fl::check();
|
Fl::check();
|
||||||
win->driver()->flush(); // makes the window current
|
Fl_Window_Driver::driver(win)->flush(); // makes the window current
|
||||||
Fl_RGB_Image *img = Fl_Screen_Driver::traverse_to_gl_subwindows(win, x, y, w, h, NULL);
|
Fl_RGB_Image *img = Fl_Screen_Driver::traverse_to_gl_subwindows(win, x, y, w, h, NULL);
|
||||||
if (img) img->scale(w, h, 1, 1);
|
if (img) img->scale(w, h, 1, 1);
|
||||||
if (save_front != win) save_front->show();
|
if (save_front != win) save_front->show();
|
||||||
@@ -186,7 +186,7 @@ void Fl_Widget_Surface::draw_decorated_window(Fl_Window *win, int x_offset, int
|
|||||||
{
|
{
|
||||||
Fl_RGB_Image *top=0, *left=0, *bottom=0, *right=0;
|
Fl_RGB_Image *top=0, *left=0, *bottom=0, *right=0;
|
||||||
if (win->border() && !win->parent()) {
|
if (win->border() && !win->parent()) {
|
||||||
win->driver()->capture_titlebar_and_borders(top, left, bottom, right);
|
Fl_Window_Driver::driver(win)->capture_titlebar_and_borders(top, left, bottom, right);
|
||||||
}
|
}
|
||||||
int wsides = left ? left->w() : 0;
|
int wsides = left ? left->w() : 0;
|
||||||
int toph = top ? top->h() : 0;
|
int toph = top ? top->h() : 0;
|
||||||
|
|||||||
@@ -631,6 +631,11 @@ void Fl_Window::size_range(int minw, int minh, int maxw, int maxh, int dw, int d
|
|||||||
pWindowDriver->size_range();
|
pWindowDriver->size_range();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** The number of the screen containing the mapped window */
|
||||||
|
inline int Fl_Window::screen_num() {
|
||||||
|
return pWindowDriver->screen_num();
|
||||||
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
// End of "$Id$".
|
// End of "$Id$".
|
||||||
//
|
//
|
||||||
|
|||||||
@@ -250,7 +250,7 @@ void Fl_Window_Driver::wait_for_expose() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
int Fl_Window_Driver::screen_num() {
|
int Fl_Window_Driver::screen_num() {
|
||||||
if (pWindow->parent()) return pWindow->top_window()->driver()->screen_num();
|
if (pWindow->parent()) return Fl_Window_Driver::driver(pWindow->top_window())->screen_num();
|
||||||
return Fl::screen_num(x(), y(), w(), h());
|
return Fl::screen_num(x(), y(), w(), h());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+3
-3
@@ -1353,7 +1353,7 @@ static FLWindowDelegate *flwindowdelegate_instance = nil;
|
|||||||
r = [[nsw contentView] frame];
|
r = [[nsw contentView] frame];
|
||||||
pt2 = [nsw convertBaseToScreen:NSMakePoint(0, r.size.height)];
|
pt2 = [nsw convertBaseToScreen:NSMakePoint(0, r.size.height)];
|
||||||
pt2.y = main_screen_height - pt2.y;
|
pt2.y = main_screen_height - pt2.y;
|
||||||
float s = Fl::screen_driver()->scale(window->driver()->screen_num());
|
float s = Fl::screen_driver()->scale(Fl_Window_Driver::driver(window)->screen_num());
|
||||||
pt2.x = int(pt2.x/s + 0.5); pt2.y = int(pt2.y/s + 0.5);
|
pt2.x = int(pt2.x/s + 0.5); pt2.y = int(pt2.y/s + 0.5);
|
||||||
Fl_Window *parent = window->window();
|
Fl_Window *parent = window->window();
|
||||||
while (parent) {
|
while (parent) {
|
||||||
@@ -1976,7 +1976,7 @@ static int fake_X_wm(Fl_Window* w,int &X,int &Y, int &bt,int &bx, int &by) {
|
|||||||
int W, H, xoff, yoff, dx, dy;
|
int W, H, xoff, yoff, dx, dy;
|
||||||
int ret = bx = by = bt = 0;
|
int ret = bx = by = bt = 0;
|
||||||
if (w->border() && !w->parent()) {
|
if (w->border() && !w->parent()) {
|
||||||
if (w->driver()->maxw() != w->driver()->minw() || w->driver()->maxh() != w->driver()->minh()) {
|
if (Fl_Window_Driver::driver(w)->maxw() != Fl_Window_Driver::driver(w)->minw() || Fl_Window_Driver::driver(w)->maxh() != Fl_Window_Driver::driver(w)->minh()) {
|
||||||
ret = 2;
|
ret = 2;
|
||||||
} else {
|
} else {
|
||||||
ret = 1;
|
ret = 1;
|
||||||
@@ -3088,7 +3088,7 @@ Fl_X* Fl_Cocoa_Window_Driver::makeWindow()
|
|||||||
x->xid = cw;
|
x->xid = cw;
|
||||||
x->w = w;
|
x->w = w;
|
||||||
i(x);
|
i(x);
|
||||||
w->driver()->wait_for_expose_value = 1;
|
Fl_Window_Driver::driver(w)->wait_for_expose_value = 1;
|
||||||
if (!w->parent()) {
|
if (!w->parent()) {
|
||||||
x->next = Fl_X::first;
|
x->next = Fl_X::first;
|
||||||
Fl_X::first = x;
|
Fl_X::first = x;
|
||||||
|
|||||||
+13
-13
@@ -848,7 +848,7 @@ void Fl_WinAPI_System_Driver::paste(Fl_Widget &receiver, int clipboard, const ch
|
|||||||
int hdots = GetDeviceCaps(hdc, HORZRES);
|
int hdots = GetDeviceCaps(hdc, HORZRES);
|
||||||
ReleaseDC(NULL, hdc);
|
ReleaseDC(NULL, hdc);
|
||||||
float factor = (100.f * hmm) / hdots;
|
float factor = (100.f * hmm) / hdots;
|
||||||
float scaling = Fl::screen_driver()->scale(receiver.top_window()->driver()->screen_num());
|
float scaling = Fl::screen_driver()->scale(Fl_Window_Driver::driver(receiver.top_window())->screen_num());
|
||||||
if (!Fl_Window::current()) {
|
if (!Fl_Window::current()) {
|
||||||
Fl_GDI_Graphics_Driver *d = (Fl_GDI_Graphics_Driver*)&Fl_Graphics_Driver::default_driver();
|
Fl_GDI_Graphics_Driver *d = (Fl_GDI_Graphics_Driver*)&Fl_Graphics_Driver::default_driver();
|
||||||
d->scale(scaling);// may run early at app startup before Fl_Window::make_current() scales d
|
d->scale(scaling);// may run early at app startup before Fl_Window::make_current() scales d
|
||||||
@@ -1168,7 +1168,7 @@ static LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lPar
|
|||||||
// fl_msg.lPrivate = ???
|
// fl_msg.lPrivate = ???
|
||||||
|
|
||||||
Fl_Window *window = fl_find(hWnd);
|
Fl_Window *window = fl_find(hWnd);
|
||||||
float scale = (window ? Fl::screen_driver()->scale(window->driver()->screen_num()) : 1);
|
float scale = (window ? Fl::screen_driver()->scale(Fl_Window_Driver::driver(window)->screen_num()) : 1);
|
||||||
|
|
||||||
if (window) {
|
if (window) {
|
||||||
switch (uMsg) {
|
switch (uMsg) {
|
||||||
@@ -1179,9 +1179,9 @@ static LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lPar
|
|||||||
float f = HIWORD(wParam) / 96.;
|
float f = HIWORD(wParam) / 96.;
|
||||||
GetClientRect(hWnd, &r);
|
GetClientRect(hWnd, &r);
|
||||||
float old_f = float(r.right) / window->w();
|
float old_f = float(r.right) / window->w();
|
||||||
int ns = window->driver()->screen_num();
|
int ns = Fl_Window_Driver::driver(window)->screen_num();
|
||||||
Fl::screen_driver()->scale(ns, f);
|
Fl::screen_driver()->scale(ns, f);
|
||||||
window->driver()->resize_after_scale_change(ns, old_f, f);
|
Fl_Window_Driver::driver(window)->resize_after_scale_change(ns, old_f, f);
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@@ -1204,7 +1204,7 @@ static LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lPar
|
|||||||
case WM_PAINT: {
|
case WM_PAINT: {
|
||||||
Fl_Region R, R2;
|
Fl_Region R, R2;
|
||||||
Fl_X *i = Fl_X::i(window);
|
Fl_X *i = Fl_X::i(window);
|
||||||
window->driver()->wait_for_expose_value = 0;
|
Fl_Window_Driver::driver(window)->wait_for_expose_value = 0;
|
||||||
char redraw_whole_window = false;
|
char redraw_whole_window = false;
|
||||||
if (!i->region && window->damage()) {
|
if (!i->region && window->damage()) {
|
||||||
// Redraw the whole window...
|
// Redraw the whole window...
|
||||||
@@ -1246,7 +1246,7 @@ static LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lPar
|
|||||||
// Very annoying!
|
// Very annoying!
|
||||||
fl_GetDC(hWnd); // Make sure we have a DC for this window...
|
fl_GetDC(hWnd); // Make sure we have a DC for this window...
|
||||||
fl_save_pen();
|
fl_save_pen();
|
||||||
window->driver()->flush();
|
Fl_Window_Driver::driver(window)->flush();
|
||||||
fl_restore_pen();
|
fl_restore_pen();
|
||||||
window->clear_damage();
|
window->clear_damage();
|
||||||
return 0;
|
return 0;
|
||||||
@@ -1652,10 +1652,10 @@ static int fake_X_wm_style(const Fl_Window *w, int &X, int &Y, int &bt, int &bx,
|
|||||||
int ret = bx = by = bt = 0;
|
int ret = bx = by = bt = 0;
|
||||||
|
|
||||||
int fallback = 1;
|
int fallback = 1;
|
||||||
float s = Fl::screen_driver()->scale(w->driver()->screen_num());
|
float s = Fl::screen_driver()->scale(Fl_Window_Driver::driver(w)->screen_num());
|
||||||
if (!w->parent()) {
|
if (!w->parent()) {
|
||||||
if (fl_xid(w)) {
|
if (fl_xid(w)) {
|
||||||
Fl_WinAPI_Window_Driver *dr = (Fl_WinAPI_Window_Driver *)w->driver();
|
Fl_WinAPI_Window_Driver *dr = Fl_WinAPI_Window_Driver::driver(w);
|
||||||
dr->border_width_title_bar_height(bx, by, bt);
|
dr->border_width_title_bar_height(bx, by, bt);
|
||||||
xoff = bx;
|
xoff = bx;
|
||||||
yoff = by + bt;
|
yoff = by + bt;
|
||||||
@@ -1952,19 +1952,19 @@ Fl_X *Fl_WinAPI_Window_Driver::makeWindow() {
|
|||||||
// compute adequate screen where to put the window
|
// compute adequate screen where to put the window
|
||||||
int nscreen = 0;
|
int nscreen = 0;
|
||||||
if (w->parent()) {
|
if (w->parent()) {
|
||||||
nscreen = w->top_window()->driver()->screen_num();
|
nscreen = Fl_Window_Driver::driver(w->top_window())->screen_num();
|
||||||
} else if (w->driver()->force_position() && Fl_WinAPI_Window_Driver::driver(w)->screen_num_ >= 0) {
|
} else if (Fl_Window_Driver::driver(w)->force_position() && Fl_WinAPI_Window_Driver::driver(w)->screen_num_ >= 0) {
|
||||||
nscreen = w->driver()->screen_num();
|
nscreen = Fl_Window_Driver::driver(w)->screen_num();
|
||||||
} else {
|
} else {
|
||||||
Fl_Window *hint = Fl::first_window();
|
Fl_Window *hint = Fl::first_window();
|
||||||
if (hint) {
|
if (hint) {
|
||||||
nscreen = hint->top_window()->driver()->screen_num();
|
nscreen = Fl_Window_Driver::driver(hint->top_window())->screen_num();
|
||||||
} else {
|
} else {
|
||||||
int mx, my;
|
int mx, my;
|
||||||
nscreen = Fl::screen_driver()->get_mouse(mx, my);
|
nscreen = Fl::screen_driver()->get_mouse(mx, my);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
w->driver()->screen_num(nscreen);
|
Fl_Window_Driver::driver(w)->screen_num(nscreen);
|
||||||
float s = Fl::screen_driver()->scale(nscreen);
|
float s = Fl::screen_driver()->scale(nscreen);
|
||||||
int xp = w->x() * s; // these are in graphical units
|
int xp = w->x() * s; // these are in graphical units
|
||||||
int yp = w->y() * s;
|
int yp = w->y() * s;
|
||||||
|
|||||||
+9
-9
@@ -1098,7 +1098,7 @@ static void set_event_xy(Fl_Window *win) {
|
|||||||
# endif
|
# endif
|
||||||
float s = 1;
|
float s = 1;
|
||||||
#if USE_XFT
|
#if USE_XFT
|
||||||
s = Fl::screen_driver()->scale(win->driver()->screen_num());
|
s = Fl::screen_driver()->scale(Fl_Window_Driver::driver(win)->screen_num());
|
||||||
#endif
|
#endif
|
||||||
Fl::e_x_root = fl_xevent->xbutton.x_root/s;
|
Fl::e_x_root = fl_xevent->xbutton.x_root/s;
|
||||||
Fl::e_x = fl_xevent->xbutton.x/s;
|
Fl::e_x = fl_xevent->xbutton.x/s;
|
||||||
@@ -1654,7 +1654,7 @@ int fl_handle(const XEvent& thisevent)
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case Expose:
|
case Expose:
|
||||||
window->driver()->wait_for_expose_value = 0;
|
Fl_Window_Driver::driver(window)->wait_for_expose_value = 0;
|
||||||
# if 0
|
# if 0
|
||||||
// try to keep windows on top even if WM_TRANSIENT_FOR does not work:
|
// try to keep windows on top even if WM_TRANSIENT_FOR does not work:
|
||||||
// opaque move/resize window managers do not like this, so I disabled it.
|
// opaque move/resize window managers do not like this, so I disabled it.
|
||||||
@@ -1665,7 +1665,7 @@ int fl_handle(const XEvent& thisevent)
|
|||||||
case GraphicsExpose:
|
case GraphicsExpose:
|
||||||
{
|
{
|
||||||
#if USE_XFT
|
#if USE_XFT
|
||||||
int ns = window->driver()->screen_num();
|
int ns = Fl_Window_Driver::driver(window)->screen_num();
|
||||||
float s = Fl::screen_driver()->scale(ns);
|
float s = Fl::screen_driver()->scale(ns);
|
||||||
window->damage(FL_DAMAGE_EXPOSE, xevent.xexpose.x/s, xevent.xexpose.y/s,
|
window->damage(FL_DAMAGE_EXPOSE, xevent.xexpose.x/s, xevent.xexpose.y/s,
|
||||||
xevent.xexpose.width/s + 2, xevent.xexpose.height/s + 2);
|
xevent.xexpose.width/s + 2, xevent.xexpose.height/s + 2);
|
||||||
@@ -2072,7 +2072,7 @@ int fl_handle(const XEvent& thisevent)
|
|||||||
if ( !wasXExceptionRaised() ) {
|
if ( !wasXExceptionRaised() ) {
|
||||||
resize_bug_fix = window;
|
resize_bug_fix = window;
|
||||||
#if USE_XFT
|
#if USE_XFT
|
||||||
int ns = window->driver()->screen_num();
|
int ns = Fl_Window_Driver::driver(window)->screen_num();
|
||||||
float s = Fl::screen_driver()->scale(ns);
|
float s = Fl::screen_driver()->scale(ns);
|
||||||
#else
|
#else
|
||||||
float s = 1;
|
float s = 1;
|
||||||
@@ -2282,11 +2282,11 @@ void fl_fix_focus(); // in Fl.cxx
|
|||||||
Fl_X* Fl_X::set_xid(Fl_Window* win, Window winxid) {
|
Fl_X* Fl_X::set_xid(Fl_Window* win, Window winxid) {
|
||||||
Fl_X *xp = new Fl_X;
|
Fl_X *xp = new Fl_X;
|
||||||
xp->xid = winxid;
|
xp->xid = winxid;
|
||||||
win->driver()->other_xid = 0;
|
Fl_Window_Driver::driver(win)->other_xid = 0;
|
||||||
xp->w = win; win->i = xp;
|
xp->w = win; win->i = xp;
|
||||||
xp->next = Fl_X::first;
|
xp->next = Fl_X::first;
|
||||||
xp->region = 0;
|
xp->region = 0;
|
||||||
win->driver()->wait_for_expose_value = 1;
|
Fl_Window_Driver::driver(win)->wait_for_expose_value = 1;
|
||||||
#ifdef USE_XDBE
|
#ifdef USE_XDBE
|
||||||
Fl_X11_Window_Driver::driver(win)->backbuffer_bad = 1;
|
Fl_X11_Window_Driver::driver(win)->backbuffer_bad = 1;
|
||||||
#endif
|
#endif
|
||||||
@@ -2427,13 +2427,13 @@ void Fl_X::make_xid(Fl_Window* win, XVisualInfo *visual, Colormap colormap)
|
|||||||
//compute adequate screen where to put the window
|
//compute adequate screen where to put the window
|
||||||
int nscreen = 0;
|
int nscreen = 0;
|
||||||
if (win->parent()) {
|
if (win->parent()) {
|
||||||
nscreen = win->top_window()->driver()->screen_num();
|
nscreen = Fl_Window_Driver::driver(win->top_window())->screen_num();
|
||||||
} else if (win->force_position() && Fl_X11_Window_Driver::driver(win)->screen_num_ >= 0) {
|
} else if (win->force_position() && Fl_X11_Window_Driver::driver(win)->screen_num_ >= 0) {
|
||||||
nscreen = win->driver()->screen_num();
|
nscreen = Fl_Window_Driver::driver(win)->screen_num();
|
||||||
} else {
|
} else {
|
||||||
Fl_Window *hint = Fl::first_window();
|
Fl_Window *hint = Fl::first_window();
|
||||||
if (hint) {
|
if (hint) {
|
||||||
nscreen = hint->top_window()->driver()->screen_num();
|
nscreen = Fl_Window_Driver::driver(hint->top_window())->screen_num();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Fl_X11_Window_Driver::driver(win)->screen_num(nscreen);
|
Fl_X11_Window_Driver::driver(win)->screen_num(nscreen);
|
||||||
|
|||||||
@@ -71,8 +71,8 @@ private:
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
public:
|
public:
|
||||||
static inline Fl_Android_Window_Driver* driver(Fl_Window *w) {
|
static inline Fl_Android_Window_Driver* driver(const Fl_Window *w) {
|
||||||
return (Fl_Android_Window_Driver*)w->driver();
|
return (Fl_Android_Window_Driver*)Fl_Window_Driver::driver(w);
|
||||||
}
|
}
|
||||||
|
|
||||||
Fl_Android_Window_Driver(Fl_Window *w) : Fl_Window_Driver(w) {}
|
Fl_Android_Window_Driver(Fl_Window *w) : Fl_Window_Driver(w) {}
|
||||||
|
|||||||
@@ -99,7 +99,7 @@ void Fl_Android_Window_Driver::expose_all()
|
|||||||
{
|
{
|
||||||
for (Fl_X *x = Fl_X::first; x; x = x->next) {
|
for (Fl_X *x = Fl_X::first; x; x = x->next) {
|
||||||
Fl_Window *win = x->w;
|
Fl_Window *win = x->w;
|
||||||
win->driver()->wait_for_expose_value = 0;
|
Fl_Android_Window_Driver::driver(win)->wait_for_expose_value = 0;
|
||||||
win->damage(FL_DAMAGE_EXPOSE);
|
win->damage(FL_DAMAGE_EXPOSE);
|
||||||
win->redraw();
|
win->redraw();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -383,7 +383,7 @@ void Fl_Cocoa_Printer_Driver::draw_decorated_window(Fl_Window *win, int x_offset
|
|||||||
CGContextRef gc = (CGContextRef)driver()->gc();
|
CGContextRef gc = (CGContextRef)driver()->gc();
|
||||||
CGContextSaveGState(gc);
|
CGContextSaveGState(gc);
|
||||||
CGContextTranslateCTM(gc, x_offset - 0.5, y_offset + bt - 0.5);
|
CGContextTranslateCTM(gc, x_offset - 0.5, y_offset + bt - 0.5);
|
||||||
float s = Fl::screen_driver()->scale(win->driver()->screen_num());
|
float s = Fl::screen_driver()->scale(Fl_Window_Driver::driver(win)->screen_num());
|
||||||
CGContextScaleCTM(gc, 1/s, -1/s);
|
CGContextScaleCTM(gc, 1/s, -1/s);
|
||||||
Fl_Cocoa_Window_Driver::draw_layer_to_context(layer, gc, win->w() * s, bt);
|
Fl_Cocoa_Window_Driver::draw_layer_to_context(layer, gc, win->w() * s, bt);
|
||||||
CGContextRestoreGState(gc);
|
CGContextRestoreGState(gc);
|
||||||
@@ -428,7 +428,7 @@ void Fl_Cocoa_Printer_Driver::draw_decorated_window(Fl_Window *win, int x_offset
|
|||||||
Fl::check();
|
Fl::check();
|
||||||
// capture the window title bar with no title
|
// capture the window title bar with no title
|
||||||
Fl_RGB_Image *top, *left, *bottom, *right;
|
Fl_RGB_Image *top, *left, *bottom, *right;
|
||||||
win->driver()->capture_titlebar_and_borders(top, left, bottom, right);
|
Fl_Window_Driver::driver(win)->capture_titlebar_and_borders(top, left, bottom, right);
|
||||||
[(NSWindow*)fl_xid(win) setTitle:title]; // put back the window title
|
[(NSWindow*)fl_xid(win) setTitle:title]; // put back the window title
|
||||||
this->set_current(); // back to the Fl_Paged_Device
|
this->set_current(); // back to the Fl_Paged_Device
|
||||||
top->draw(x_offset, y_offset); // print the title bar
|
top->draw(x_offset, y_offset); // print the title bar
|
||||||
|
|||||||
@@ -73,7 +73,7 @@ private:
|
|||||||
public:
|
public:
|
||||||
Fl_Cocoa_Window_Driver(Fl_Window*);
|
Fl_Cocoa_Window_Driver(Fl_Window*);
|
||||||
~Fl_Cocoa_Window_Driver();
|
~Fl_Cocoa_Window_Driver();
|
||||||
static inline Fl_Cocoa_Window_Driver* driver(Fl_Window *w) {return (Fl_Cocoa_Window_Driver*)w->driver();}
|
static inline Fl_Cocoa_Window_Driver* driver(const Fl_Window *w) {return (Fl_Cocoa_Window_Driver*)Fl_Window_Driver::driver(w);}
|
||||||
CGContextRef gc; // graphics context
|
CGContextRef gc; // graphics context
|
||||||
NSCursor *cursor;
|
NSCursor *cursor;
|
||||||
static void q_release_context(Fl_Cocoa_Window_Driver *x = 0); // free all resources associated with gc
|
static void q_release_context(Fl_Cocoa_Window_Driver *x = 0); // free all resources associated with gc
|
||||||
|
|||||||
@@ -109,7 +109,7 @@ Fl_RGB_Image* Fl_OpenGL_Display_Device::capture_gl_rectangle(Fl_Gl_Window *glw,
|
|||||||
glPixelStorei(GL_PACK_SKIP_ROWS, 0);
|
glPixelStorei(GL_PACK_SKIP_ROWS, 0);
|
||||||
glPixelStorei(GL_PACK_SKIP_PIXELS, 0);
|
glPixelStorei(GL_PACK_SKIP_PIXELS, 0);
|
||||||
//
|
//
|
||||||
int ns = glw->driver()->screen_num();
|
int ns = Fl_Window_Driver::driver(glw)->screen_num();
|
||||||
float s = Fl::screen_driver()->scale(ns);
|
float s = Fl::screen_driver()->scale(ns);
|
||||||
if (s != 1) {
|
if (s != 1) {
|
||||||
x *= s; y *= s; w *= s; h *= s;
|
x *= s; y *= s; w *= s; h *= s;
|
||||||
|
|||||||
@@ -52,7 +52,7 @@ Fl_Quartz_Image_Surface_Driver::Fl_Quartz_Image_Surface_Driver(int w, int h, int
|
|||||||
if (high_res) {
|
if (high_res) {
|
||||||
s = Fl_Graphics_Driver::default_driver().scale();
|
s = Fl_Graphics_Driver::default_driver().scale();
|
||||||
Fl_Window *cw = Fl_Window::current();
|
Fl_Window *cw = Fl_Window::current();
|
||||||
if (cw && ((Fl_Cocoa_Window_Driver*)cw->driver())->mapped_to_retina()) s *= 2;
|
if (cw && Fl_Cocoa_Window_Driver::driver(cw)->mapped_to_retina()) s *= 2;
|
||||||
W *= s; H *= s;
|
W *= s; H *= s;
|
||||||
}
|
}
|
||||||
CGColorSpaceRef lut = CGColorSpaceCreateDeviceRGB();
|
CGColorSpaceRef lut = CGColorSpaceCreateDeviceRGB();
|
||||||
|
|||||||
@@ -68,7 +68,7 @@ private:
|
|||||||
public:
|
public:
|
||||||
Fl_WinAPI_Window_Driver(Fl_Window*);
|
Fl_WinAPI_Window_Driver(Fl_Window*);
|
||||||
~Fl_WinAPI_Window_Driver();
|
~Fl_WinAPI_Window_Driver();
|
||||||
static inline Fl_WinAPI_Window_Driver* driver(Fl_Window *w) {return (Fl_WinAPI_Window_Driver*)w->driver();}
|
static inline Fl_WinAPI_Window_Driver* driver(const Fl_Window *w) {return (Fl_WinAPI_Window_Driver*)Fl_Window_Driver::driver(w);}
|
||||||
HDC private_dc; // used for OpenGL
|
HDC private_dc; // used for OpenGL
|
||||||
RECT border_width_title_bar_height(int &bx, int &by, int &bt);
|
RECT border_width_title_bar_height(int &bx, int &by, int &bt);
|
||||||
virtual void screen_num(int n);
|
virtual void screen_num(int n);
|
||||||
|
|||||||
@@ -64,7 +64,7 @@ Fl_WinAPI_Window_Driver::~Fl_WinAPI_Window_Driver()
|
|||||||
|
|
||||||
int Fl_WinAPI_Window_Driver::screen_num() {
|
int Fl_WinAPI_Window_Driver::screen_num() {
|
||||||
if (pWindow->parent()) {
|
if (pWindow->parent()) {
|
||||||
screen_num_ = pWindow->top_window()->driver()->screen_num();
|
screen_num_ = Fl_Window_Driver::driver(pWindow->top_window())->screen_num();
|
||||||
}
|
}
|
||||||
return screen_num_ >= 0 ? screen_num_ : 0;
|
return screen_num_ >= 0 ? screen_num_ : 0;
|
||||||
}
|
}
|
||||||
@@ -694,7 +694,7 @@ void Fl_WinAPI_Window_Driver::resize_after_screen_change(void *data) {
|
|||||||
GetClientRect(fl_xid(win), &r);
|
GetClientRect(fl_xid(win), &r);
|
||||||
float old_f = float(r.right)/win->w();
|
float old_f = float(r.right)/win->w();
|
||||||
int ns = data_for_resize_window_between_screens_.screen;
|
int ns = data_for_resize_window_between_screens_.screen;
|
||||||
win->driver()->resize_after_scale_change(ns, old_f, Fl::screen_driver()->scale(ns));
|
Fl_Window_Driver::driver(win)->resize_after_scale_change(ns, old_f, Fl::screen_driver()->scale(ns));
|
||||||
data_for_resize_window_between_screens_.busy = false;
|
data_for_resize_window_between_screens_.busy = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -801,7 +801,7 @@ Fl_RGB_Image *Fl_X11_Screen_Driver::read_win_rectangle(int X, int Y, int w, int
|
|||||||
RootWindow(fl_display, fl_screen), X*s, Y*s, &dxs, &dys, &child_win);
|
RootWindow(fl_display, fl_screen), X*s, Y*s, &dxs, &dys, &child_win);
|
||||||
dx = dxs/s; dy = dys/s;
|
dx = dxs/s; dy = dys/s;
|
||||||
// screen dimensions
|
// screen dimensions
|
||||||
Fl::screen_xywh(sx, sy, sw, sh, win->driver()->screen_num());
|
Fl::screen_xywh(sx, sy, sw, sh, Fl_Window_Driver::driver(win)->screen_num());
|
||||||
}
|
}
|
||||||
if (win && !allow_outside && int(s) != s) {
|
if (win && !allow_outside && int(s) != s) {
|
||||||
ws = (w+1)*s-1;
|
ws = (w+1)*s-1;
|
||||||
|
|||||||
@@ -92,7 +92,7 @@ private:
|
|||||||
public:
|
public:
|
||||||
Fl_X11_Window_Driver(Fl_Window*);
|
Fl_X11_Window_Driver(Fl_Window*);
|
||||||
virtual ~Fl_X11_Window_Driver();
|
virtual ~Fl_X11_Window_Driver();
|
||||||
static inline Fl_X11_Window_Driver* driver(Fl_Window *w) {return (Fl_X11_Window_Driver*)w->driver();}
|
static inline Fl_X11_Window_Driver* driver(const Fl_Window *w) {return (Fl_X11_Window_Driver*)Fl_Window_Driver::driver(w);}
|
||||||
#if USE_XFT
|
#if USE_XFT
|
||||||
virtual int screen_num();
|
virtual int screen_num();
|
||||||
static void resize_after_screen_change(void *data);
|
static void resize_after_screen_change(void *data);
|
||||||
|
|||||||
@@ -691,14 +691,14 @@ Fl_X11_Window_Driver::type_for_resize_window_between_screens Fl_X11_Window_Drive
|
|||||||
void Fl_X11_Window_Driver::resize_after_screen_change(void *data) {
|
void Fl_X11_Window_Driver::resize_after_screen_change(void *data) {
|
||||||
Fl_Window *win = (Fl_Window*)data;
|
Fl_Window *win = (Fl_Window*)data;
|
||||||
float f = Fl::screen_driver()->scale(data_for_resize_window_between_screens_.screen);
|
float f = Fl::screen_driver()->scale(data_for_resize_window_between_screens_.screen);
|
||||||
win->driver()->resize_after_scale_change(data_for_resize_window_between_screens_.screen, f, f);
|
Fl_Window_Driver::driver(win)->resize_after_scale_change(data_for_resize_window_between_screens_.screen, f, f);
|
||||||
data_for_resize_window_between_screens_.busy = false;
|
data_for_resize_window_between_screens_.busy = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int Fl_X11_Window_Driver::screen_num() {
|
int Fl_X11_Window_Driver::screen_num() {
|
||||||
if (pWindow->parent()) {
|
if (pWindow->parent()) {
|
||||||
screen_num_ = pWindow->top_window()->driver()->screen_num();
|
screen_num_ = Fl_Window_Driver::driver(pWindow->top_window())->screen_num();
|
||||||
}
|
}
|
||||||
return screen_num_ >= 0 ? screen_num_ : 0;
|
return screen_num_ >= 0 ? screen_num_ : 0;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -736,7 +736,7 @@ void Fl_Xlib_Graphics_Driver::draw_fixed(Fl_RGB_Image *img, int X, int Y, int W,
|
|||||||
int ox = offset_x_, oy = offset_y_;
|
int ox = offset_x_, oy = offset_y_;
|
||||||
offset_x_ = offset_y_ = 0;
|
offset_x_ = offset_y_ = 0;
|
||||||
Fl_X11_Screen_Driver *d = (Fl_X11_Screen_Driver*)Fl::screen_driver();
|
Fl_X11_Screen_Driver *d = (Fl_X11_Screen_Driver*)Fl::screen_driver();
|
||||||
int nscreen = Fl_Window::current()->driver()->screen_num();
|
int nscreen = Fl_Window_Driver::driver(Fl_Window::current())->screen_num();
|
||||||
float keep = d->scale(nscreen);
|
float keep = d->scale(nscreen);
|
||||||
d->scale(nscreen, 1);
|
d->scale(nscreen, 1);
|
||||||
push_no_clip();
|
push_no_clip();
|
||||||
|
|||||||
@@ -90,7 +90,7 @@ public:
|
|||||||
HWND hWnd = WindowFromPoint( ppt );
|
HWND hWnd = WindowFromPoint( ppt );
|
||||||
Fl_Window *target = fl_find( hWnd );
|
Fl_Window *target = fl_find( hWnd );
|
||||||
if (target) {
|
if (target) {
|
||||||
float s = Fl::screen_driver()->scale(target->driver()->screen_num());
|
float s = Fl::screen_driver()->scale(Fl_Window_Driver::driver(target)->screen_num());
|
||||||
Fl::e_x_root /= s;
|
Fl::e_x_root /= s;
|
||||||
Fl::e_y_root /= s;
|
Fl::e_y_root /= s;
|
||||||
Fl::e_x = Fl::e_x_root-target->x();
|
Fl::e_x = Fl::e_x_root-target->x();
|
||||||
@@ -125,7 +125,7 @@ public:
|
|||||||
Fl::e_x_root = pt.x;
|
Fl::e_x_root = pt.x;
|
||||||
Fl::e_y_root = pt.y;
|
Fl::e_y_root = pt.y;
|
||||||
if (fl_dnd_target_window) {
|
if (fl_dnd_target_window) {
|
||||||
float s = Fl::screen_driver()->scale(fl_dnd_target_window->driver()->screen_num());
|
float s = Fl::screen_driver()->scale(Fl_Window_Driver::driver(fl_dnd_target_window)->screen_num());
|
||||||
Fl::e_x_root /= s;
|
Fl::e_x_root /= s;
|
||||||
Fl::e_y_root /= s;
|
Fl::e_y_root /= s;
|
||||||
Fl::e_x = Fl::e_x_root-fl_dnd_target_window->x();
|
Fl::e_x = Fl::e_x_root-fl_dnd_target_window->x();
|
||||||
@@ -162,7 +162,7 @@ public:
|
|||||||
fl_dnd_target_window = 0;
|
fl_dnd_target_window = 0;
|
||||||
Fl::e_x_root = pt.x;
|
Fl::e_x_root = pt.x;
|
||||||
Fl::e_y_root = pt.y;
|
Fl::e_y_root = pt.y;
|
||||||
float s = Fl::screen_driver()->scale(target->driver()->screen_num());
|
float s = Fl::screen_driver()->scale(Fl_Window_Driver::driver(target)->screen_num());
|
||||||
Fl::e_x_root /= s;
|
Fl::e_x_root /= s;
|
||||||
Fl::e_y_root /= s;
|
Fl::e_y_root /= s;
|
||||||
if (target) {
|
if (target) {
|
||||||
|
|||||||
@@ -72,7 +72,7 @@ void fl_scroll(int X, int Y, int W, int H, int dx, int dy,
|
|||||||
clip_h = H-src_h;
|
clip_h = H-src_h;
|
||||||
}
|
}
|
||||||
|
|
||||||
int retval = Fl_Window::current()->driver()->scroll(src_x, src_y, src_w, src_h,
|
int retval = Fl_Window_Driver::driver(Fl_Window::current())->scroll(src_x, src_y, src_w, src_h,
|
||||||
dest_x, dest_y, draw_area, data);
|
dest_x, dest_y, draw_area, data);
|
||||||
if (retval) {
|
if (retval) {
|
||||||
draw_area(data,X,Y,W,H);
|
draw_area(data,X,Y,W,H);
|
||||||
|
|||||||
Reference in New Issue
Block a user