Browse Source

support size changable windows with fixed sides where the size is not changable

Kolja Strohm 1 year ago
parent
commit
f0bb90173b
2 changed files with 118 additions and 132 deletions
  1. 10 8
      Fenster.cpp
  2. 108 124
      Fenster.h

+ 10 - 8
Fenster.cpp

@@ -1200,12 +1200,12 @@ void Fenster::doMausEreignis(MausEreignis& me, bool userRet)
                     gr.y += my - me.my;
                     if (gr.y < fMinHi)
                     {
-                        pos.y += fMinHi - gr.y;
+                        pos.y -= fMinHi - gr.y;
                         gr.y = fMinHi;
                     }
                     else if (maxYb && gr.y > fMaxHi)
                     {
-                        pos.y += gr.y - fMaxHi;
+                        pos.y -= gr.y - fMaxHi;
                         gr.y = fMaxHi;
                     }
                     else if (vSc)
@@ -1237,12 +1237,12 @@ void Fenster::doMausEreignis(MausEreignis& me, bool userRet)
                     gr.x += mx - me.mx;
                     if (gr.x < fMinBr)
                     {
-                        pos.x += fMinBr - gr.x;
+                        pos.x -= fMinBr - gr.x;
                         gr.x = fMinBr;
                     }
                     else if (maxXb && gr.x > fMaxBr)
                     {
-                        pos.x += gr.x - fMaxBr;
+                        pos.x -= gr.x - fMaxBr;
                         gr.x = fMaxBr;
                     }
                     else if (hSc)
@@ -1324,15 +1324,17 @@ void Fenster::doMausEreignis(MausEreignis& me, bool userRet)
         {
             klick = 1;
             mx = me.mx, my = me.my;
-            if (me.mx >= 0 && me.mx < gr.x && me.my >= 0 && me.my < rbr + 5)
+            if (me.mx >= 0 && me.mx < gr.x && me.my >= 0 && me.my < rbr + 5
+                && !hatStyle(Style::TopPositionFixed))
                 moving |= 0x1;
             if (me.mx >= 0 && me.mx < gr.x && me.my >= gr.y - (rbr + 5)
-                && me.my < gr.y)
+                && me.my < gr.y && !hatStyle(Style::BottomPositionFixed))
                 moving |= 0x2;
-            if (me.mx >= 0 && me.mx < rbr + 5 && me.my >= 0 && me.my < gr.y)
+            if (me.mx >= 0 && me.mx < rbr + 5 && me.my >= 0 && me.my < gr.y
+                && !hatStyle(Style::LeftPositionFixed))
                 moving |= 0x4;
             if (me.mx >= gr.x - rbr - 5 && me.mx < gr.x && me.my >= 0
-                && me.my < gr.y)
+                && me.my < gr.y && !hatStyle(Style::RightPositionFixed))
                 moving |= 0x8;
             if (titel && me.mx >= 0 && me.mx < gr.x
                 && me.my >= titel->getHeight()

+ 108 - 124
Fenster.h

@@ -281,136 +281,120 @@ namespace Framework
         class Style : public Zeichnung::Style
         {
         public:
-            static const __int64 BodyHintergrund
-                = 0x000000008; //! Legt fest, ob der Körper des Fensters einen
-                               //! Hintergrund hat
-            static const __int64 BodyHAlpha
-                = 0x000000010; //! Legt fest, ob beim zeichnen des
-                               //! Körperhintergrundes alpha blending verwendet
-                               //! werden soll
-            static const __int64 BodyHBild
-                = 0x000000020; //! Legt fest, ob ein Bild als Hintergrund des
-                               //! Körpers verwendet werden soll
-            static const __int64 BodyBuffered
-                = 0x000000040; //! Legt fest, ob der Körper einen Farbübergang
-                               //! besitzt
-            static const __int64 Titel
-                = 0x000000080; //! Legt fest, ob das Fenster eine Titelleiste
-                               //! hat
-            static const __int64 TitelHintergrund
-                = 0x000000100; //! Legt fest, ob die titelleiste des Fensters
-                               //! einen Hintergrund hat
-            static const __int64 TitelHAlpha
-                = 0x000000200; //! Legt fest, ob zum zeichnen des Titel
-                               //! Hintergrundes alpha blending verwendet werden
-                               //! soll
-            static const __int64 TitelHBild
-                = 0x000000400; //! Legt fest, ob für den Titelhintergrund ein
-                               //! Bild verwendet werden soll
-            static const __int64 TitelBuffered
-                = 0x000000800; //! Legt fest, ob die Titel Leiste einen
-                               //! Farbübergang besitzt
-            static const __int64 Closable
-                = 0x000001000; //! Legt fest, ob in der Titelleiste ein Knopf
-                               //! zum Schließen des Fensters angezeigt werden
-                               //! soll
-            static const __int64 ClosingHintergrund
-                = 0x000002000; //! Legt fest, ob der Schließen Knopf einen
-                               //! Hintergrund hat
-            static const __int64 ClosingHAlpha
-                = 0x000004000; //! Legt fest, ob beim Zeichnen des Hintergrunds
-                               //! des Schließen Knopfes alpha blending
-                               //! verwendet werden soll
-            static const __int64 ClosingHBild
-                = 0x000008000; //! Legt fest, ob für den Hintergrund des
-                               //! Schließen Knopfes ein Bild verwendet werden
-                               //! soll
-            static const __int64 ClosingBuffer
-                = 0x000010000; //! Legt fest, ob der Schließen Knopf einen
-                               //! Farbübergang besitzt
-            static const __int64 ClosingKlickBuffer
-                = 0x000020000; //! Legt fest, ob der Schließen Knopf einen
-                               //! Farbübergang besitzt, während er gedrückt
-                               //! wird
-            static const __int64 Beweglich
-                = 0x000040000; //! Legt fest, ob der Benutzer das Fenster durch
-                               //! gedrückt halten der linken Maustaste in der
-                               //! Titelleiste das Fenster verschieben kann
-            static const __int64 BreiteChangeable
-                = 0x000080000; //! Legt fest, ob der Benutzer die Breite des
-                               //! Fensters durch das gedrückt halten der linken
-                               //! Maustaste auf dem rechten oder linken
-                               //! Fensterrand verändern kann
-            static const __int64 HeightChangeable
-                = 0x000100000; //! Legt fest, ob der Benutzer die Höhe des
-                               //! Fensters durch das gedrückt halten der linken
-                               //! Maustaste auf dem oberen oder unteren
-                               //! Fensterrand verändern kann
-            static const __int64 TitelHeightChangeable
-                = 0x000200000; //! Legt fest, ob der Benutzer die Höhe der Titel
-                               //! Leiste durch gedrückt halten der linken
-                               //! Maustaste auf dem unteren Rand der
-                               //! Titelleiste verändern kann
-            static const __int64 MinBr
-                = 0x000400000; //! Legt fest, ob es eine Minimale Breite des
-                               //! Fensters gibt
-            static const __int64 MaxBr
-                = 0x000800000; //! Legt fest, ob es eine Maximale Breite des
-                               //! Fensters gibt
-            static const __int64 MinHi
-                = 0x001000000; //! Legt fest, ob es eine Minimale Höhe des
-                               //! Fensters gibt
-            static const __int64 MaxHi
-                = 0x002000000; //! Legt fest, ob es eine Maximale Höhe des
-                               //! Fensters gibt
-            static const __int64 BodyMinBr
-                = 0x004000000; //! Legt fest, ob es eine Minimale Breite des
-                               //! Körpers gibt
-            static const __int64 BodyMaxBr
-                = 0x008000000; //! Legt fest, ob es eine Maximale Breite des
-                               //! Körpers gibt
-            static const __int64 BodyMinHi
-                = 0x010000000; //! Legt fest, ob es eine Minimale Höhe des
-                               //! Körpers gibt
-            static const __int64 BodyMaxHi
-                = 0x020000000; //! Legt fest, ob es eine Maximale Höhe des
-                               //! Körpers gibt
-            static const __int64 VScroll
-                = 0x040000000; //! Legt fest, ob eine ScrollBar am rechten
-                               //! Fensterrand erscheinen soll
-            static const __int64 HScroll
-                = 0x080000000; //! Legt fest, ob eine ScrollBar am unteren
-                               //! Fensterrand erscheinen soll
-            static const __int64 METransparenz
-                = 0x100000000; //! Legt fest, ob die Mausereignisse auch noch
-                               //! von Zeichnungen hinter dem Fenster
-                               //! verarbeitet werden sollen
-            static const __int64 Rahmen
-                = 0x200000000; //! Legt fest, ob das Fenster einen Rahmen haben
-                               //! soll
-
-            static const __int64 min_max
-                = MinHi | MaxHi | MaxBr
-                | MaxHi; //! Vereint die Flags MinHö, MaxHö, MaxBr, MaxHö
+            // Legt fest, ob der Körper des Fensters einen Hintergrund hat
+            static const __int64 BodyHintergrund = 0x000000008;
+            // Legt fest, ob beim zeichnen des Körperhintergrundes alpha
+            // blending verwendet werden soll
+            static const __int64 BodyHAlpha = 0x000000010;
+            // Legt fest, ob ein Bild als Hintergrund des Körpers verwendet
+            // werden soll
+            static const __int64 BodyHBild = 0x000000020;
+            // Legt fest, ob der Körper einen Farbübergang besitzt
+            static const __int64 BodyBuffered = 0x000000040;
+            // Legt fest, ob das Fenster eine Titelleiste hat
+            static const __int64 Titel = 0x000000080;
+            // Legt fest, ob die titelleiste des Fensters einen Hintergrund hat
+            static const __int64 TitelHintergrund = 0x000000100;
+            // Legt fest, ob zum zeichnen des Titel Hintergrundes alpha
+            // blending soll
+            static const __int64 TitelHAlpha = 0x000000200;
+            // Legt fest, ob für den Titelhintergrund ein Bild verwendet werden
+            // soll
+            static const __int64 TitelHBild = 0x000000400;
+            // Legt fest, ob die Titel Leiste einen Farbübergang besitzt
+            static const __int64 TitelBuffered = 0x000000800;
+            // Legt fest, ob in der Titelleiste ein Knopf zum Schließen des
+            // Fensters angezeigt werden soll
+            static const __int64 Closable = 0x000001000;
+            // Legt fest, ob der Schließen Knopf einen Hintergrund hat
+            static const __int64 ClosingHintergrund = 0x000002000;
+            // Legt fest, ob beim Zeichnen des Hintergrunds des Schließen
+            // Knopfes alpha blending verwendet werden soll
+            static const __int64 ClosingHAlpha = 0x000004000;
+            // Legt fest, ob für den Hintergrund des Schließen Knopfes ein Bild
+            // soll
+            static const __int64 ClosingHBild = 0x000008000;
+            // Legt fest, ob der Schließen Knopf einen Farbübergang besitzt
+            static const __int64 ClosingBuffer = 0x000010000;
+            // Legt fest, ob der Schließen Knopf einen Farbübergang besitzt,
+            // während er gedrückt wird
+            static const __int64 ClosingKlickBuffer = 0x000020000;
+            // Legt fest, ob der Benutzer das Fenster durch gedrückt halten der
+            // linken Maustaste in der Titelleiste das Fenster verschieben kann
+            static const __int64 Beweglich = 0x000040000;
+            // Legt fest, ob der Benutzer die Breite des Fensters durch das
+            // gedrückt halten der linken Maustaste auf dem rechten oder linken
+            // Fensterrand verändern kann
+            static const __int64 BreiteChangeable = 0x000080000;
+            // Legt fest, ob der Benutzer die Höhe des Fensters durch das
+            // gedrückt halten der linken Maustaste auf dem oberen oder unteren
+            // Fensterrand verändern kann
+            static const __int64 HeightChangeable = 0x000100000;
+            // Legt fest, ob der Benutzer die Höhe der Titel Leiste durch
+            // gedrückt halten der linken Maustaste auf dem unteren Rand der
+            // Titelleiste verändern kann
+            static const __int64 TitelHeightChangeable = 0x000200000;
+            // Legt fest, ob es eine Minimale Breite des Fensters gibt
+            static const __int64 MinBr = 0x000400000;
+            // Legt fest, ob es eine Maximale Breite des Fensters gibt
+            static const __int64 MaxBr = 0x000800000;
+            // Legt fest, ob es eine Minimale Höhe des Fensters gibt
+            static const __int64 MinHi = 0x001000000;
+            // Legt fest, ob es eine Maximale Höhe des Fensters gibt
+            static const __int64 MaxHi = 0x002000000;
+            // Legt fest, ob es eine Minimale Breite des Körpers gibt
+            static const __int64 BodyMinBr = 0x004000000;
+            // Legt fest, ob es eine Maximale Breite des Körpers gibt
+            static const __int64 BodyMaxBr = 0x008000000;
+            // Legt fest, ob es eine Minimale Höhe des Körpers gibt
+            static const __int64 BodyMinHi = 0x010000000;
+            // Legt fest, ob es eine Maximale Höhe des Körpers gibt
+            static const __int64 BodyMaxHi = 0x020000000;
+            // Legt fest, ob eine ScrollBar am rechten Fensterrand erscheinen
+            // soll
+            static const __int64 VScroll = 0x040000000;
+            // Legt fest, ob eine ScrollBar am unteren Fensterrand erscheinen
+            // soll
+            static const __int64 HScroll = 0x080000000;
+            // Legt fest, ob die Mausereignisse auch noch von Zeichnungen
+            // hinter dem Fenster verarbeitet werden sollen
+            static const __int64 METransparenz = 0x100000000;
+            // Legt fest, ob das Fenster einen Rahmen haben soll
+            static const __int64 Rahmen = 0x200000000;
+            // Legt fest, ob die linke Seite des Fensters fixiert ist wenn die
+            // größe änderbar ist
+            static const __int64 LeftPositionFixed = 0x400000000;
+            // Legt fest, ob die rechte Seite des Fensters fixiert ist wenn die
+            // größe änderbar ist
+            static const __int64 RightPositionFixed = 0x800000000;
+            // Legt fest, ob die obere Seite des Fensters fixiert ist wenn die
+            // größe änderbar ist
+            static const __int64 TopPositionFixed = 0x1000000000;
+            // Legt fest, ob die untere Seite des Fensters fixiert ist wenn die
+            // größe änderbar ist
+            static const __int64 BottomPositionFixed = 0x2000000000;
+            // Vereint die Flags MinHö, MaxHö, MaxBr, MaxHö
+            static const __int64 min_max = MinHi | MaxHi | MaxBr | MaxHi;
+            // Vereint die Flags Körper_minBr, Körper_maxBr, Körper_minHö,
+            // Körper_maxBr
             static const __int64 body_min_max
-                = BodyMinBr | BodyMaxBr | BodyMinHi
-                | BodyMaxBr; //! Vereint die Flags Körper_minBr, Körper_maxBr,
-                             //! Körper_minHö, Körper_maxBr
-            static const __int64 scroll
-                = VScroll | HScroll; //! Vereint die Flags VScroll, HScroll
-            static const __int64 nichtfixiert
-                = TitelHeightChangeable | HeightChangeable | BreiteChangeable
-                | Beweglich; //! Vereint die Flags TitelHöheÄnderbar,
-                             //! HöheÄnderbar, BreiteÄnderbar, Beweglich
+                = BodyMinBr | BodyMaxBr | BodyMinHi | BodyMaxBr;
+            // Vereint die Flags VScroll, HScroll
+            static const __int64 scroll = VScroll | HScroll;
+            // Vereint die Flags TitelHöheÄnderbar, HöheÄnderbar,
+            // BreiteÄnderbar, Beweglich
+            static const __int64 nichtfixiert = TitelHeightChangeable
+                                              | HeightChangeable
+                                              | BreiteChangeable | Beweglich;
 
+            // Vereint die Flags Sichtbar, Erlaubt, Rahmen, Titel,
+            // TitelBuffered, Schließbar, SchließHBild, SchließKlickBuffer,
+            // Beweglich
             static const __int64 normal
                 = Sichtbar | Erlaubt | Rahmen | Titel | TitelBuffered | Closable
                 | ClosingHBild | ClosingKlickBuffer | Beweglich
                 | MEIgnoreVerarbeitet | MEIgnoreSichtbar | MEIgnoreParentInside
-                | MEIgnoreInside; //! Vereint die Flags Sichtbar, Erlaubt,
-                                  //! Rahmen, Titel, TitelBuffered, Schließbar,
-                                  //! SchließHBild, SchließKlickBuffer,
-                                  //! Beweglich
+                | MEIgnoreInside;
         };
 
     private: