Hmm... so how does "BorderlessMaximizedWindows=true" in kwinrc get acted on?

in Christ,
Brian

~ Jesus answered, "I am the way and the truth and the life. No one comes to
the Father except through me." - John 14:6



2011/5/27 Martin Gräßlin <mgraess...@kde.org>

>
> ----- Ursprüngliche Mitteilung -----
> > Let me preface this post by saying that I have very little experience
> > programming in c++ and working with KDE development.
> >
> > I am developing a plasmoid similar to
> >
> http://kde-apps.org/content/show.php/Yet+Another+Window+Control?content=139916
> .
> > Except I am mainly re-purposing it to only work with the active maximized
> > window. So if no windows are maximized then the plasmoid is hidden and it
> > only operates on the active maximized window.
> >
> > That part I have covered and is working wonderfully.
> >
> > The part that I want to get a grasp over is how to hide the titlebar of
> > the active maximized window. I know I can add
> > "BorderlessMaximizedWindows=true" to the user's kwinrc, but I wish to
> > hide the titlebar programatically to avoid messing with the user's
> > settings and to also ensure that if the plasmoid is removed that
> > maximized windows will behave like they did before the plasmoid was
> > added.
> There is to my knowledge no way to programatically hide window decorations
> except for a legacy motif hint which I am currently considering to drop
> support for in KWin.
>
> Cheers
> Martin
> >
> > I found that you can get and set window flags
> > http://doc.qt.nokia/latest/qt.html/#WindowType-enum through the QWidget
> > class. The flag I'm specifically wanting to set is
> > Qt::FramelessWindowHint. I'm supposed to be able to pass the window id
> > of the active window to QWidget's find() function and it will return a
> > QWidget object so I can manipulate the window flags. However, it always
> > returns 0 (not found).
> >
> > Here is the function that determines if the window is maximized, sets up
> > the plasmoid display, and is supposed to remove the titlebar. Any ideas
> > on why QWidget::find() always returns 0 even though the window ID passed
> > to it obviously belongs to a valid window?
> >
> > void MaxWinControl::syncActiveWindow()
> > {
> >         m_syncDelay = false;
> >         bool applicationActive = false;
> >
> >         foreach (QWidget *widget, QApplication::topLevelWidgets()) {
> >                   if (widget->winId() == m_pendingActiveWindow ||
> >                           widget->winId() ==
> KWindowSystem::activeWindow()) {
> >                           applicationActive = true;
> >
> >                           break;
> >                   }
> >           }
> >
> >         if (applicationActive && m_pendingActiveWindow > 0) {
> >                 m_closeTask->hide();
> >                 m_maximizeTask->hide();
> >                 m_minimizeTask->hide();
> >       m_currentTaskTitle->hide();
> >       m_currentTaskIcon->hide();
> >         } else if (m_pendingActiveWindow > 0) {
> >             m_activeWindow = m_pendingActiveWindow;
> >             m_lastActiveWindow = m_pendingActiveWindow;
> >             KWindowInfo info = KWindowSystem::windowInfo(m_activeWindow,
> > NET::WMName|NET::WMState);
> >
> >             if (info.state() & NET::Max) {
> >       QWidget *activeWidget = QWidget::find(m_activeWindow);
> >
> > /* !! This always evaluates to 0 !! */
> >       if (activeWidget) {
> >                     // store the previous flags for this window so we can
> restore
> > them when the window is unmaximized
> >           activeWidgetFlags = activeWidget->windowFlags();
> >
> >           activeWidget->setWindowFlags(Qt::FramelessWindowHint);
> >
> >           activeWidget->show();
> >       }
> >       if (m_showTitle) {
> >           m_currentTaskTitle->setText(info.name());
> >           m_currentTaskTitle->update();
> >
> >           m_currentTaskTitle->show();
> >       }
> >
> >                 if (m_showClose) {
> >                         m_closeTask->show();
> >                 }
> >                 if (m_showMaximize) {
> >                         m_maximizeTask->show();
> >                 }
> >                 if (m_showMinimize) {
> >                         m_minimizeTask->show();
> >                 }
> >
> >                 if (m_showCurrentTaskIcon) {
> >
>  m_currentTaskIcon->setIcon(KWindowSystem::icon(m_activeWindow,
> > KIconLoader::SizeSmallMedium, KIconLoader::SizeSmallMedium));
> >
> >               m_currentTaskIcon->show();
> >       }
> >
> >                 m_maximizeTask->setSvg("widgets/configuration-icons",
> > "unmaximize");           }
> >             else {
> >       m_closeTask->hide();
> >                 m_maximizeTask->hide();
> >                 m_minimizeTask->hide();
> >       m_currentTaskTitle->hide();
> >       m_currentTaskIcon->hide();
> >             }
> >         }
> >
> >         m_pendingActiveWindow = 0;
> > }
> >
> >
> > in Christ,
> > Brian
> >
> > ~ Jesus answered, "I am the way and the truth and the life. No one comes
> > to the Father except through me." - John 14:6
>
>
> >> Visit http://mail.kde.org/mailman/listinfo/kde-devel#unsub to
> unsubscribe <<
>
 
>> Visit http://mail.kde.org/mailman/listinfo/kde-devel#unsub to unsubscribe <<

Reply via email to