#include <qdesktopwidget.h>
Inheritance diagram for QDesktopWidget:


Definition at line 36 of file qdesktopwidget.h.
Signals | |
| void | resized (int) |
| void | workAreaResized (int) |
Public Member Functions | |
| QDesktopWidget () | |
| ~QDesktopWidget () | |
| bool | isVirtualDesktop () const |
| int | numScreens () const |
| int | primaryScreen () const |
| int | screenNumber (const QWidget *widget=0) const |
| int | screenNumber (const QPoint &) const |
| QWidget * | screen (int screen=-1) |
| const QRect | screenGeometry (int screen=-1) const |
| const QRect | screenGeometry (const QWidget *widget) const |
| const QRect | screenGeometry (const QPoint &point) const |
| const QRect | availableGeometry (int screen=-1) const |
| const QRect | availableGeometry (const QWidget *widget) const |
| const QRect | availableGeometry (const QPoint &point) const |
Protected Member Functions | |
| void | resizeEvent (QResizeEvent *e) |
Friends | |
| class | QApplication |
| QDesktopWidget::QDesktopWidget | ( | ) |
Definition at line 163 of file qdesktopwidget_x11.cpp.
References d.
00164 : QWidget(*new QDesktopWidgetPrivate, 0, Qt::Desktop) 00165 { 00166 Q_D(QDesktopWidget); 00167 d->init(); 00168 }
| QDesktopWidget::~QDesktopWidget | ( | ) |
| bool QDesktopWidget::isVirtualDesktop | ( | ) | const |
Definition at line 174 of file qdesktopwidget_x11.cpp.
References d.
Referenced by availableGeometry().
00175 { 00176 Q_D(const QDesktopWidget); 00177 return d->use_xinerama; 00178 }
| int QDesktopWidget::numScreens | ( | ) | const |
Definition at line 186 of file qdesktopwidget_x11.cpp.
References d.
Referenced by QWidget::restoreGeometry().
00187 { 00188 Q_D(const QDesktopWidget); 00189 return d->screenCount; 00190 }
| int QDesktopWidget::primaryScreen | ( | ) | const |
Definition at line 180 of file qdesktopwidget_x11.cpp.
References d.
Referenced by QWidget::restoreGeometry().
00181 { 00182 Q_D(const QDesktopWidget); 00183 return d->defaultScreen; 00184 }
| int QDesktopWidget::screenNumber | ( | const QWidget * | widget = 0 |
) | const |
Definition at line 270 of file qdesktopwidget_x11.cpp.
References d, QWidget::frameGeometry(), i, QWidget::isWindow(), QWidget::mapToGlobal(), QRect::moveTopLeft(), QWidget::size(), and QSize::width().
Referenced by QDialog::adjustPosition(), QDesignerWorkbench::availableGeometry(), QMenu::internalDelayedPopup(), main(), QWhatsThisPrivate::say(), and QToolTip::showText().
00271 { 00272 Q_D(const QDesktopWidget); 00273 if (!widget) 00274 return d->defaultScreen; 00275 00276 #ifndef QT_NO_XINERAMA 00277 if (d->use_xinerama) { 00278 // this is how we do it for xinerama 00279 QRect frame = widget->frameGeometry(); 00280 if (!widget->isWindow()) 00281 frame.moveTopLeft(widget->mapToGlobal(QPoint(0, 0))); 00282 00283 int maxSize = -1; 00284 int maxScreen = -1; 00285 00286 for (int i = 0; i < d->screenCount; ++i) { 00287 QRect sect = d->rects[i].intersected(frame); 00288 int size = sect.width() * sect.height(); 00289 if (size > maxSize && sect.width() > 0 && sect.height() > 0) { 00290 maxSize = size; 00291 maxScreen = i; 00292 } 00293 } 00294 return maxScreen; 00295 } 00296 #endif // QT_NO_XINERAMA 00297 00298 return widget->x11Info().screen(); 00299 }
Here is the call graph for this function:

| int QDesktopWidget::screenNumber | ( | const QPoint & | ) | const |
Definition at line 301 of file qdesktopwidget_x11.cpp.
00302 { 00303 Q_D(const QDesktopWidget); 00304 int closestScreen = -1; 00305 int shortestDistance = INT_MAX; 00306 for (int i = 0; i < d->screenCount; ++i) { 00307 int thisDistance = d->pointToRect(point, d->rects[i]); 00308 if (thisDistance < shortestDistance) { 00309 shortestDistance = thisDistance; 00310 closestScreen = i; 00311 } 00312 } 00313 return closestScreen; 00314 }
| QWidget * QDesktopWidget::screen | ( | int | screen = -1 |
) |
Definition at line 192 of file qdesktopwidget_x11.cpp.
References d, Qt::Desktop, and qt_x11_create_desktop_on_screen.
Referenced by find_trans_colors(), QWidget::mapFromGlobal(), qt_check_clipboard_sentinel(), and qt_check_selection_sentinel().
00193 { 00194 Q_D(QDesktopWidget); 00195 if (d->use_xinerama) 00196 return this; 00197 00198 if (screen < 0 || screen >= d->screenCount) 00199 screen = d->defaultScreen; 00200 00201 if (! d->screens) { 00202 d->screens = new QWidget*[d->screenCount]; 00203 memset(d->screens, 0, d->screenCount * sizeof(QWidget *)); 00204 d->screens[d->defaultScreen] = this; 00205 } 00206 00207 if (! d->screens[screen] || // not created yet 00208 ! (d->screens[screen]->windowType() == Qt::Desktop)) { // reparented away 00209 qt_x11_create_desktop_on_screen = screen; 00210 d->screens[screen] = new QSingleDesktopWidget; 00211 qt_x11_create_desktop_on_screen = -1; 00212 } 00213 00214 return d->screens[screen]; 00215 }
| const QRect QDesktopWidget::screenGeometry | ( | int | screen = -1 |
) | const |
Definition at line 261 of file qdesktopwidget_x11.cpp.
References d.
Referenced by QWidget::adjustSize(), availableGeometry(), QBalloonTip::balloon(), Q3FileDialog::init(), QMenuBarPrivate::popupAction(), QMenuPrivate::popupGeometry(), QComboBoxPrivate::popupGeometry(), QWhatsThisPrivate::say(), QToolTip::showText(), and QWindowsXPStylePrivate::tabBody().
00262 { 00263 Q_D(const QDesktopWidget); 00264 if (screen < 0 || screen >= d->screenCount) 00265 screen = d->defaultScreen; 00266 00267 return d->rects[screen]; 00268 }
Definition at line 54 of file qdesktopwidget.h.
00055 { return screenGeometry(screenNumber(widget)); }
Definition at line 56 of file qdesktopwidget.h.
00057 { return screenGeometry(screenNumber(point)); }
| const QRect QDesktopWidget::availableGeometry | ( | int | screen = -1 |
) | const |
Definition at line 217 of file qdesktopwidget_x11.cpp.
References QX11Info::appRootWindow(), ATOM, d, data, i, isVirtualDesktop(), qt_desktopwidget_workarea_dirty, qt_net_supports(), screenGeometry(), Success, and X11.
Referenced by QDialog::adjustPosition(), QDesignerWorkbench::availableGeometry(), QDateTimeEdit::mousePressEvent(), Oubliette::paintEvent(), Q3ComboBox::popup(), QMenuPrivate::popupGeometry(), QComboBoxPrivate::popupGeometry(), QWidget::restoreGeometry(), QDesignerSettings::setGeometryHelper(), QWidget::setWindowState(), QWidgetPrivate::show_sys(), QCompleterPrivate::showPopup(), QToolTip::showText(), QDesignerWorkbench::switchToNeutralMode(), QDesignerWorkbench::switchToTopLevelMode(), and QMessageBoxPrivate::updateSize().
00218 { 00219 Q_D(const QDesktopWidget); 00220 if (qt_desktopwidget_workarea_dirty) { 00221 // the workareas are dirty, invalidate them 00222 for (int i = 0; i < d->screenCount; ++i) 00223 d->workareas[i] = QRect(); 00224 qt_desktopwidget_workarea_dirty = false; 00225 } 00226 00227 if (screen < 0 || screen >= d->screenCount) 00228 screen = d->defaultScreen; 00229 00230 if (d->workareas[screen].isValid()) 00231 return d->workareas[screen]; 00232 00233 if (! isVirtualDesktop() && qt_net_supports(ATOM(_NET_WORKAREA))) { 00234 Atom ret; 00235 int format, e; 00236 unsigned char *data = 0; 00237 unsigned long nitems, after; 00238 00239 e = XGetWindowProperty(X11->display, 00240 QX11Info::appRootWindow(screen), 00241 ATOM(_NET_WORKAREA), 0, 4, False, XA_CARDINAL, 00242 &ret, &format, &nitems, &after, &data); 00243 00244 if (e == Success && ret == XA_CARDINAL && 00245 format == 32 && nitems == 4) { 00246 long *workarea = (long *) data; 00247 d->workareas[screen].setRect(workarea[0], workarea[1], 00248 workarea[2], workarea[3]); 00249 } else { 00250 d->workareas[screen] = screenGeometry(screen); 00251 } 00252 if (data) 00253 XFree(data); 00254 } else { 00255 d->workareas[screen] = screenGeometry(screen); 00256 } 00257 00258 return d->workareas[screen]; 00259 }
Here is the call graph for this function:

Definition at line 60 of file qdesktopwidget.h.
00061 { return availableGeometry(screenNumber(widget)); }
Definition at line 62 of file qdesktopwidget.h.
00063 { return availableGeometry(screenNumber(point)); }
| void QDesktopWidget::resized | ( | int | ) | [signal] |
| void QDesktopWidget::workAreaResized | ( | int | ) | [signal] |
| void QDesktopWidget::resizeEvent | ( | QResizeEvent * | e | ) | [protected, virtual] |
This event handler can be reimplemented in a subclass to receive widget resize events which are passed in the event parameter. When resizeEvent() is called, the widget already has its new geometry. The old size is accessible through QResizeEvent::oldSize().
The widget will be erased and receive a paint event immediately after processing the resize event. No drawing need be (or should be) done inside this handler.
Reimplemented from QWidget.
Definition at line 316 of file qdesktopwidget_x11.cpp.
References d, QWidget::event(), qt_desktopwidget_workarea_dirty, and QWidget::resizeEvent().
00317 { 00318 Q_D(QDesktopWidget); 00319 d->init(); 00320 qt_desktopwidget_workarea_dirty = true; 00321 QWidget::resizeEvent(event); 00322 }
Here is the call graph for this function:

friend class QApplication [friend] |
1.5.1